mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 20:51:52 +01:00
7ee35fc7b5
This pretty much reverts r322006, except that we keep the test, because we work around the issue exposed in a different way (a recursion limit in value tracking). There's still probably some sequence that exposes this problem, and the proper way to fix that for somebody who has time is outlined in the code review. llvm-svn: 323630
67 lines
1.8 KiB
LLVM
67 lines
1.8 KiB
LLVM
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
|
; RUN: opt -correlated-propagation -S %s | FileCheck %s
|
|
|
|
target triple = "x86_64-apple-darwin17.4.0"
|
|
|
|
define void @patatino() {
|
|
; CHECK-LABEL: @patatino(
|
|
; CHECK-NEXT: br i1 undef, label [[BB3:%.*]], label [[BB4:%.*]]
|
|
; CHECK: bb3:
|
|
; CHECK-NEXT: br label [[BB3]]
|
|
; CHECK: bb4:
|
|
; CHECK-NEXT: br i1 undef, label [[BB40:%.*]], label [[BB22:%.*]]
|
|
; CHECK: bb7:
|
|
; CHECK-NEXT: br label [[BB14:%.*]]
|
|
; CHECK: bb12:
|
|
; CHECK-NEXT: br label [[BB14]]
|
|
; CHECK: bb14:
|
|
; CHECK-NEXT: [[TMP19:%.*]] = icmp sgt i32 undef, undef
|
|
; CHECK-NEXT: [[TMP20:%.*]] = select i1 [[TMP19]], i64 [[TMP20]], i64 0
|
|
; CHECK-NEXT: br i1 undef, label [[BB40]], label [[BB7:%.*]]
|
|
; CHECK: bb22:
|
|
; CHECK-NEXT: br label [[BB24:%.*]]
|
|
; CHECK: bb24:
|
|
; CHECK-NEXT: br label [[BB32:%.*]]
|
|
; CHECK: bb32:
|
|
; CHECK-NEXT: br i1 undef, label [[BB40]], label [[BB24]]
|
|
; CHECK: bb40:
|
|
; CHECK-NEXT: [[TMP41:%.*]] = phi i64 [ 4, [[BB4]] ], [ [[TMP20]], [[BB14]] ], [ undef, [[BB32]] ]
|
|
; CHECK-NEXT: ret void
|
|
;
|
|
br i1 undef, label %bb3, label %bb4
|
|
|
|
bb3:
|
|
br label %bb3
|
|
|
|
bb4:
|
|
br i1 undef, label %bb40, label %bb22
|
|
|
|
bb7:
|
|
br label %bb14
|
|
|
|
bb12:
|
|
br label %bb14
|
|
|
|
; This block is unreachable. Due to the non-standard definition of
|
|
; dominance in LLVM where uses in unreachable blocks are dominated
|
|
; by anything, it contains an instruction of the form
|
|
; %def = OP %def, %something
|
|
bb14:
|
|
%tmp19 = icmp sgt i32 undef, undef
|
|
%tmp20 = select i1 %tmp19, i64 %tmp20, i64 0
|
|
br i1 undef, label %bb40, label %bb7
|
|
|
|
bb22:
|
|
br label %bb24
|
|
|
|
bb24:
|
|
br label %bb32
|
|
|
|
bb32:
|
|
br i1 undef, label %bb40, label %bb24
|
|
|
|
bb40:
|
|
%tmp41 = phi i64 [ 4, %bb4 ], [ %tmp20, %bb14 ], [ undef, %bb32 ]
|
|
ret void
|
|
}
|