llvm-project/llvm/test/Transforms/LICM/2003-12-13-VolatilePromote.ll

17 lines
425 B
LLVM

; RUN: llvm-as < %s | opt -licm | llvm-dis | %prcontext volatile 1 | grep Loop
@X = global i32 7 ; <i32*> [#uses=2]
define void @testfunc(i32 %i) {
br label %Loop
Loop: ; preds = %Loop, %0
; Should not promote this to a register
%x = volatile load i32* @X ; <i32> [#uses=1]
%x2 = add i32 %x, 1 ; <i32> [#uses=1]
store i32 %x2, i32* @X
br i1 true, label %Out, label %Loop
Out: ; preds = %Loop
ret void
}