
This is a minor refinement of resolvedUndefsIn(), mostly for clarity. If the value of an instruction is undef, then that's already a legal final result -- we can safely rauw such an instruction with undef. We only need to mark unknown values as overdefined, as that's the result we get for an instruction that has not been processed because it has an undef operand. Differential Revision: https://reviews.llvm.org/D128251
38 lines
784 B
LLVM
38 lines
784 B
LLVM
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
|
; RUN: opt < %s -S -passes=ipsccp | FileCheck %s
|
|
target triple = "x86_64-unknown-linux-gnu"
|
|
|
|
define void @test() {
|
|
; CHECK-LABEL: @test(
|
|
; CHECK-NEXT: entry:
|
|
; CHECK-NEXT: br label [[FLOW5_PRE:%.*]]
|
|
; CHECK: Flow6:
|
|
; CHECK-NEXT: unreachable
|
|
; CHECK: Flow5.pre:
|
|
; CHECK-NEXT: br label [[FLOW5:%.*]]
|
|
; CHECK: Flow5:
|
|
; CHECK-NEXT: br label [[FLOW6:%.*]]
|
|
;
|
|
entry:
|
|
br i1 true, label %Flow5.pre, label %Flow5.pre.unreachable
|
|
|
|
Flow5.pre.unreachable:
|
|
br label %Flow5
|
|
|
|
Flow6:
|
|
br i1 %0, label %end1, label %end2
|
|
|
|
Flow5.pre:
|
|
br label %Flow5
|
|
|
|
Flow5:
|
|
%0 = phi i1 [ undef, %Flow5.pre ], [ false, %Flow5.pre.unreachable ]
|
|
br label %Flow6
|
|
|
|
end1:
|
|
unreachable
|
|
|
|
end2:
|
|
unreachable
|
|
}
|