Add compile command to each testcase
[gcc-vect-testsuite.git] / pr22543.ll
blob037a1824d88940fe5c3000d4235cf209a1893dd1
1 ; RUN: opt %loadPolly %defaultOpts -polly-codegen -enable-polly-vector -dce -S %s | FileCheck %s
2 ; ModuleID = 'pr22543.s'
3 target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
4 target triple = "x86_64-unknown-linux-gnu"
6 %struct.C = type { [4 x i32] }
7 %struct.X = type { i8 }
8 %struct.A = type { i32, i32 }
9 %struct.B = type { i8 }
11 @_ZN1CC1Ev = alias void (%struct.C*)* @_ZN1CC2Ev
13 define void @_ZN1CC2Ev(%struct.C* %this) unnamed_addr uwtable align 2 {
14 entry:
15   %x = alloca %struct.X, align 1
16   %temp.lvalue = alloca %struct.A, align 4
17   %tmp12 = alloca %struct.B, align 1
18   br label %for.cond
20 for.cond:                                         ; preds = %for.inc, %entry
21   %indvar = phi i64 [ %indvar.next, %for.inc ], [ 0, %entry ]
22   %arrayidx = getelementptr %struct.C* %this, i64 0, i32 0, i64 %indvar
23   %exitcond = icmp ne i64 %indvar, 4
24   br i1 %exitcond, label %for.body, label %for.end
26 for.body:                                         ; preds = %for.cond
27   store i32 0, i32* %arrayidx, align 4
28   br label %for.inc
30 for.inc:                                          ; preds = %for.body
31   %indvar.next = add i64 %indvar, 1
32   br label %for.cond
34 for.end:                                          ; preds = %for.cond
35   br label %for.cond7
37 for.cond7:                                        ; preds = %for.inc18, %for.end
38   %tmp = phi i32 [ 0, %for.end ], [ %inc20, %for.inc18 ]
39   %cmp9 = icmp slt i32 %tmp, 4
40   br i1 %cmp9, label %for.body10, label %for.end21
42 for.body10:                                       ; preds = %for.cond7
43   invoke void @_ZNK1B3fooEv(%struct.A* sret %temp.lvalue, %struct.B* %tmp12)
44           to label %invoke.cont unwind label %lpad
46 invoke.cont:                                      ; preds = %for.body10
47   %call = invoke i32 @_ZN1AcviEv(%struct.A* %temp.lvalue)
48           to label %invoke.cont15 unwind label %lpad13
50 invoke.cont15:                                    ; preds = %invoke.cont
51   invoke void @_ZN1AD1Ev(%struct.A* %temp.lvalue)
52           to label %invoke.cont16 unwind label %lpad
54 invoke.cont16:                                    ; preds = %invoke.cont15
55   br label %for.inc18
57 for.inc18:                                        ; preds = %invoke.cont16
58   %inc20 = add nsw i32 %tmp, 1
59   br label %for.cond7
61 lpad:                                             ; preds = %invoke.cont15, %for.body10
62   %exn = call i8* @llvm.eh.exception() nounwind
63   %tmp1 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %exn, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) nounwind
64   br label %eh.cleanup
66 lpad13:                                           ; preds = %invoke.cont
67   %exn14 = call i8* @llvm.eh.exception() nounwind
68   %tmp2 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %exn14, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) nounwind
69   invoke void @_ZN1AD1Ev(%struct.A* %temp.lvalue)
70           to label %invoke.cont17 unwind label %terminate.lpad
72 invoke.cont17:                                    ; preds = %lpad13
73   br label %eh.cleanup
75 for.end21:                                        ; preds = %for.cond7
76   call void @_ZN1XD1Ev(%struct.X* %x)
77   ret void
79 eh.cleanup:                                       ; preds = %invoke.cont17, %lpad
80   %exn.slot.0 = phi i8* [ %exn, %lpad ], [ %exn14, %invoke.cont17 ]
81   %ehselector.slot.0 = phi i32 [ %tmp1, %lpad ], [ %tmp2, %invoke.cont17 ]
82   invoke void @_ZN1XD1Ev(%struct.X* %x)
83           to label %invoke.cont22 unwind label %terminate.lpad
85 invoke.cont22:                                    ; preds = %eh.cleanup
86   br label %eh.resume
88 eh.resume:                                        ; preds = %invoke.cont22
89   call void @llvm.eh.resume(i8* %exn.slot.0, i32 %ehselector.slot.0) noreturn
90   unreachable
92 terminate.lpad:                                   ; preds = %eh.cleanup, %lpad13
93   %exn23 = call i8* @llvm.eh.exception() nounwind
94   %tmp3 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %exn23, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i8* null) nounwind
95   call void @_ZSt9terminatev() noreturn nounwind
96   unreachable
99 define linkonce_odr void @_ZNK1B3fooEv(%struct.A* sret %agg.result, %struct.B* %this) uwtable align 2 {
100 entry:
101   call void @_ZN1AC1Ev(%struct.A* %agg.result)
102   ret void
105 declare i8* @llvm.eh.exception() nounwind readonly
107 declare i32 @__gxx_personality_v0(...)
109 declare i32 @llvm.eh.selector(i8*, i8*, ...) nounwind
111 declare i32 @llvm.eh.typeid.for(i8*) nounwind
113 declare void @llvm.eh.resume(i8*, i32)
115 define linkonce_odr i32 @_ZN1AcviEv(%struct.A* %this) nounwind uwtable align 2 {
116 entry:
117   ret i32 0
120 define linkonce_odr void @_ZN1AD1Ev(%struct.A* %this) unnamed_addr uwtable align 2 {
121 entry:
122   call void @_ZN1AD2Ev(%struct.A* %this)
123   ret void
126 declare void @_ZSt9terminatev()
128 declare void @_ZN1XD1Ev(%struct.X*)
130 define linkonce_odr void @_ZN1AD2Ev(%struct.A* %this) unnamed_addr nounwind uwtable align 2 {
131 entry:
132   ret void
135 define linkonce_odr void @_ZN1AC1Ev(%struct.A* %this) unnamed_addr uwtable align 2 {
136 entry:
137   call void @_ZN1AC2Ev(%struct.A* %this)
138   ret void
141 define linkonce_odr void @_ZN1AC2Ev(%struct.A* %this) unnamed_addr nounwind uwtable align 2 {
142 entry:
143   %i = getelementptr inbounds %struct.A* %this, i64 0, i32 0
144   store i32 0, i32* %i, align 4
145   %j = getelementptr inbounds %struct.A* %this, i64 0, i32 1
146   store i32 0, i32* %j, align 4
147   ret void
149 ; CHECK: define