mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-01 05:01:59 +01:00
ff611e1c1f
Summary: This patch attempts to fix the DomTree incremental insertion bug found here [[ https://bugs.llvm.org/show_bug.cgi?id=35969 | PR35969 ]] . When performing an insertion into a piece of unreachable CFG, we may find the same not at different levels. When this happens, the node can turn out to be affected when we find it starting from a node with a lower level in the tree. The level at which we start visitation affects if we consider a node affected or not. This patch tracks the lowest level at which each node was visited during insertion and allows it to be visited multiple times, if it can cause it to be considered affected. Reviewers: brzycki, davide, dberlin, grosser Reviewed By: brzycki Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D42231 llvm-svn: 322993
76 lines
1.1 KiB
LLVM
76 lines
1.1 KiB
LLVM
; RUN: opt < %s -jump-threading -disable-output -verify-dom-info
|
|
@global = external global i64, align 8
|
|
|
|
define void @f() {
|
|
bb:
|
|
br label %bb1
|
|
|
|
bb1:
|
|
%tmp = load i64, i64* @global, align 8
|
|
%tmp2 = icmp eq i64 %tmp, 0
|
|
br i1 %tmp2, label %bb27, label %bb3
|
|
|
|
bb3:
|
|
%tmp4 = load i64, i64* @global, align 8
|
|
%tmp5 = icmp eq i64 %tmp4, 0
|
|
br i1 %tmp5, label %bb6, label %bb7
|
|
|
|
bb6:
|
|
br label %bb7
|
|
|
|
bb7:
|
|
%tmp8 = phi i1 [ true, %bb3 ], [ undef, %bb6 ]
|
|
%tmp9 = select i1 %tmp8, i64 %tmp4, i64 0
|
|
br i1 false, label %bb10, label %bb23
|
|
|
|
bb10:
|
|
%tmp11 = load i64, i64* @global, align 8
|
|
%tmp12 = icmp slt i64 %tmp11, 5
|
|
br i1 %tmp12, label %bb13, label %bb17
|
|
|
|
bb13:
|
|
br label %bb14
|
|
|
|
bb14:
|
|
br i1 undef, label %bb15, label %bb16
|
|
|
|
bb15:
|
|
unreachable
|
|
|
|
bb16:
|
|
br label %bb10
|
|
|
|
bb17:
|
|
br label %bb18
|
|
|
|
bb18:
|
|
br i1 undef, label %bb22, label %bb13
|
|
|
|
bb19:
|
|
br i1 undef, label %bb20, label %bb21
|
|
|
|
bb20:
|
|
unreachable
|
|
|
|
bb21:
|
|
br label %bb18
|
|
|
|
bb22:
|
|
br label %bb23
|
|
|
|
bb23:
|
|
br i1 undef, label %bb24, label %bb13
|
|
|
|
bb24:
|
|
br i1 undef, label %bb26, label %bb25
|
|
|
|
bb25:
|
|
br label %bb19
|
|
|
|
bb26:
|
|
br label %bb1
|
|
|
|
bb27:
|
|
br label %bb24
|
|
}
|