1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-30 23:42:52 +01:00
llvm-mirror/test/Transforms/LICM/2011-04-09-RAUW-AST.ll
Eli Friedman d3b1c5df33 PR9604; try to deal with RAUW updates correctly in the AST. I'm not convinced
it's completely safe to cache the AST across LICM runs even with this fix,
but this fix can't hurt.

llvm-svn: 129198
2011-04-09 06:55:46 +00:00

50 lines
1.6 KiB
LLVM

; RUN: opt < %s -loop-rotate -licm -S | FileCheck %s
; PR9604
@g_3 = global i32 0, align 4
@.str = private unnamed_addr constant [4 x i8] c"%d\0A\00"
define i32 @main() nounwind {
entry:
%tmp = load i32* @g_3, align 4
%tobool = icmp eq i32 %tmp, 0
br i1 %tobool, label %for.cond, label %if.then
if.then: ; preds = %entry
br label %for.cond
for.cond: ; preds = %for.inc10, %if.then, %entry
%g.0 = phi i32* [ %g.0, %for.inc10 ], [ @g_3, %entry ], [ null, %if.then ]
%x.0 = phi i32 [ %inc12, %for.inc10 ], [ 0, %entry ], [ 0, %if.then ]
%cmp = icmp slt i32 %x.0, 5
br i1 %cmp, label %for.cond4, label %for.end13
for.cond4: ; preds = %for.body7, %for.cond
%y.0 = phi i32 [ %inc, %for.body7 ], [ 0, %for.cond ]
%cmp6 = icmp slt i32 %y.0, 5
br i1 %cmp6, label %for.body7, label %for.inc10
; CHECK: for.body7:
; CHECK-NEXT: phi
; CHECK-NEXT: store i32 0
; CHECK-NEXT: store i32 1
for.body7: ; preds = %for.cond4
store i32 0, i32* @g_3, align 4
store i32 1, i32* %g.0, align 4
%inc = add nsw i32 %y.0, 1
br label %for.cond4
for.inc10: ; preds = %for.cond4
%inc12 = add nsw i32 %x.0, 1
br label %for.cond
for.end13: ; preds = %for.cond
%tmp14 = load i32* @g_3, align 4
%call = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([4 x i8]* @.str, i64 0, i64 0), i32 %tmp14) nounwind
ret i32 0
}
declare i32 @printf(i8* nocapture, ...) nounwind