Files
clang-p2996/llvm/test/Analysis/MemorySSA/pr43541.ll
Lee Wei 1469d82e1c Remove br i1 undef from some regression tests [NFC] (#115130)
As defined in LangRef, branching on `undef` is undefined behavior.
This PR aims to remove undefined behavior from tests. As UB tests break
Alive2 and may be the root cause of breaking future optimizations.

Here's an Alive2 proof for one of the examples:
https://alive2.llvm.org/ce/z/TncxhP
2024-11-07 08:11:15 +00:00

51 lines
1.6 KiB
LLVM

; RUN: opt -passes=gvn-hoist -S < %s | FileCheck %s
; REQUIRES: asserts
%struct.job_pool.6.7 = type { i32 }
; CHECK-LABEL: @f(i1 %arg)
define dso_local void @f(i1 %arg) {
entry:
br label %for.cond
for.cond: ; preds = %for.end, %entry
br label %for.body
for.body: ; preds = %for.cond
br label %if.end
if.then: ; No predecessors!
br label %if.end
if.end: ; preds = %if.then, %for.body
br i1 false, label %for.body12.lr.ph, label %for.end
for.body12.lr.ph: ; preds = %if.end
br label %for.body12
for.body12: ; preds = %if.end40, %for.body12.lr.ph
br label %if.then23
if.then23: ; preds = %for.body12
br i1 %arg, label %if.then24, label %if.else
if.then24: ; preds = %if.then23
%0 = load ptr, ptr undef, align 8
br label %if.end40
if.else: ; preds = %if.then23
%1 = load ptr, ptr undef, align 8
br label %if.end40
if.end40: ; preds = %if.else, %if.then24
br i1 false, label %for.body12, label %for.cond9.for.end_crit_edge
for.cond9.for.end_crit_edge: ; preds = %if.end40
br label %for.end
for.end: ; preds = %for.cond9.for.end_crit_edge, %if.end
br i1 true, label %if.then45, label %for.cond
if.then45: ; preds = %for.end
ret void
}