llvm-project/llvm/test/Analysis/MemorySSA/loop-rotate-simplified-clone.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

30 lines
606 B
LLVM

; RUN: opt -verify-memoryssa -passes=loop-rotate %s -S | FileCheck %s
; REQUIRES: asserts
; CHECK-LABEL: @test(i1 %arg)
define dso_local void @test(i1 %arg) {
entry:
br label %preheader
preheader:
br label %l39
l39:
%v40 = phi ptr [ @foo, %preheader ], [ %v43, %crit_edge ]
%v41 = call float %v40(float undef)
%v42 = load i32, ptr undef, align 8
br i1 %arg, label %crit_edge, label %loopexit
crit_edge:
%v43 = load ptr, ptr undef, align 8
br label %l39
loopexit:
unreachable
}
; Function Attrs: readnone
declare dso_local float @foo(float) #0 align 32
attributes #0 = { readnone }