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