xref: /aosp_15_r20/external/llvm/test/Transforms/LICM/2011-04-06-PromoteResultOfPromotion.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -tbaa -licm -S | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker; PR9634
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Worker@g_58 = common global i32 0, align 4
5*9880d681SAndroid Build Coastguard Worker@g_116 = common global i32* null, align 8
6*9880d681SAndroid Build Coastguard Worker
7*9880d681SAndroid Build Coastguard Workerdefine void @f() nounwind {
8*9880d681SAndroid Build Coastguard Worker
9*9880d681SAndroid Build Coastguard Worker; CHECK: entry:
10*9880d681SAndroid Build Coastguard Worker; CHECK: alloca [9 x i16]
11*9880d681SAndroid Build Coastguard Worker; CHECK: load i32, i32* @g_58
12*9880d681SAndroid Build Coastguard Worker; CHECK: br label %for.body
13*9880d681SAndroid Build Coastguard Worker
14*9880d681SAndroid Build Coastguard Workerentry:
15*9880d681SAndroid Build Coastguard Worker  %l_87.i = alloca [9 x i16], align 16
16*9880d681SAndroid Build Coastguard Worker  br label %for.body
17*9880d681SAndroid Build Coastguard Worker
18*9880d681SAndroid Build Coastguard Workerfor.body:                                         ; preds = %entry, %for.inc
19*9880d681SAndroid Build Coastguard Worker  %inc12 = phi i32 [ 0, %entry ], [ %inc, %for.body ]
20*9880d681SAndroid Build Coastguard Worker  store i32* @g_58, i32** @g_116, align 8, !tbaa !0
21*9880d681SAndroid Build Coastguard Worker  %tmp2 = load i32*, i32** @g_116, align 8, !tbaa !0
22*9880d681SAndroid Build Coastguard Worker  %tmp3 = load i32, i32* %tmp2, !tbaa !4
23*9880d681SAndroid Build Coastguard Worker  %or = or i32 %tmp3, 10
24*9880d681SAndroid Build Coastguard Worker  store i32 %or, i32* %tmp2, !tbaa !4
25*9880d681SAndroid Build Coastguard Worker  %inc = add nsw i32 %inc12, 1
26*9880d681SAndroid Build Coastguard Worker  %cmp = icmp slt i32 %inc, 4
27*9880d681SAndroid Build Coastguard Worker  br i1 %cmp, label %for.body, label %for.end
28*9880d681SAndroid Build Coastguard Worker
29*9880d681SAndroid Build Coastguard Workerfor.end:                                          ; preds = %for.inc
30*9880d681SAndroid Build Coastguard Worker  ret void
31*9880d681SAndroid Build Coastguard Worker}
32*9880d681SAndroid Build Coastguard Worker
33*9880d681SAndroid Build Coastguard Worker!0 = !{!5, !5, i64 0}
34*9880d681SAndroid Build Coastguard Worker!1 = !{!"omnipotent char", !2}
35*9880d681SAndroid Build Coastguard Worker!2 = !{!"Simple C/C++ TBAA", null}
36*9880d681SAndroid Build Coastguard Worker!3 = !{!"short", !1}
37*9880d681SAndroid Build Coastguard Worker!4 = !{!6, !6, i64 0}
38*9880d681SAndroid Build Coastguard Worker!5 = !{!"any pointer", !1}
39*9880d681SAndroid Build Coastguard Worker!6 = !{!"int", !1}
40