xref: /aosp_15_r20/external/llvm/test/DebugInfo/COFF/inlining.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mcpu=core2 -mtriple=i686-pc-win32 < %s | FileCheck %s --check-prefix=ASM
2*9880d681SAndroid Build Coastguard Worker; RUN: llc -mcpu=core2 -mtriple=i686-pc-win32 < %s -filetype=obj | llvm-readobj -codeview | FileCheck %s --check-prefix=OBJ
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Worker; This LL file was generated by running 'clang -O1 -g -gcodeview' on the
5*9880d681SAndroid Build Coastguard Worker; following code:
6*9880d681SAndroid Build Coastguard Worker;  1: extern volatile int x;
7*9880d681SAndroid Build Coastguard Worker;  2: static inline void foo() {
8*9880d681SAndroid Build Coastguard Worker;  3:   int y = 1;
9*9880d681SAndroid Build Coastguard Worker;  4:   x += (int)&y;
10*9880d681SAndroid Build Coastguard Worker;  5:   x += 2;
11*9880d681SAndroid Build Coastguard Worker;  6:   x += 3;
12*9880d681SAndroid Build Coastguard Worker;  7: }
13*9880d681SAndroid Build Coastguard Worker;  8: static inline void bar() {
14*9880d681SAndroid Build Coastguard Worker;  9:   x += 4;
15*9880d681SAndroid Build Coastguard Worker; 10:   foo();
16*9880d681SAndroid Build Coastguard Worker; 11:   x += 5;
17*9880d681SAndroid Build Coastguard Worker; 12: }
18*9880d681SAndroid Build Coastguard Worker; 13: void baz() {
19*9880d681SAndroid Build Coastguard Worker; 14:   x += 6;
20*9880d681SAndroid Build Coastguard Worker; 15:   bar();
21*9880d681SAndroid Build Coastguard Worker; 16:   x += 7;
22*9880d681SAndroid Build Coastguard Worker; 17: }
23*9880d681SAndroid Build Coastguard Worker
24*9880d681SAndroid Build Coastguard Worker; ASM: .cv_loc 0 1 13 0 is_stmt 0      # t.cpp:13:0
25*9880d681SAndroid Build Coastguard Worker; ASM: .cv_loc 0 1 14 5                # t.cpp:14:5
26*9880d681SAndroid Build Coastguard Worker; ASM: addl    $6, "?x@@3HC"
27*9880d681SAndroid Build Coastguard Worker; ASM: .cv_loc 1 1 9 5                 # t.cpp:9:5
28*9880d681SAndroid Build Coastguard Worker; ASM: addl    $4, "?x@@3HC"
29*9880d681SAndroid Build Coastguard Worker; ASM: .cv_loc 2 1 3 7                 # t.cpp:3:7
30*9880d681SAndroid Build Coastguard Worker; ASM: .cv_loc 2 1 4 5                 # t.cpp:4:5
31*9880d681SAndroid Build Coastguard Worker; ASM: addl    {{.*}}, "?x@@3HC"
32*9880d681SAndroid Build Coastguard Worker; ASM: .cv_loc 2 1 5 5                 # t.cpp:5:5
33*9880d681SAndroid Build Coastguard Worker; ASM: addl    $2, "?x@@3HC"
34*9880d681SAndroid Build Coastguard Worker; ASM: .cv_loc 2 1 6 5                 # t.cpp:6:5
35*9880d681SAndroid Build Coastguard Worker; ASM: addl    $3, "?x@@3HC"
36*9880d681SAndroid Build Coastguard Worker; ASM: .cv_loc 1 1 11 5                # t.cpp:11:5
37*9880d681SAndroid Build Coastguard Worker; ASM: addl    $5, "?x@@3HC"
38*9880d681SAndroid Build Coastguard Worker; ASM: .cv_loc 0 1 16 5                # t.cpp:16:5
39*9880d681SAndroid Build Coastguard Worker; ASM: addl    $7, "?x@@3HC"
40*9880d681SAndroid Build Coastguard Worker; ASM: .cv_loc 0 1 17 1                # t.cpp:17:1
41*9880d681SAndroid Build Coastguard Worker
42*9880d681SAndroid Build Coastguard Worker; ASM: .section .debug$S,"dr"
43*9880d681SAndroid Build Coastguard Worker; ASM: .long   246                     # Inlinee lines subsection
44*9880d681SAndroid Build Coastguard Worker; ASM: .long   [[inline_end:.*]]-[[inline_beg:.*]] #
45*9880d681SAndroid Build Coastguard Worker; ASM: [[inline_beg]]:
46*9880d681SAndroid Build Coastguard Worker; ASM: .long   0
47*9880d681SAndroid Build Coastguard Worker; ASM: # Inlined function bar starts at t.cpp:8
48*9880d681SAndroid Build Coastguard Worker; ASM: .long   4098                    # Type index of inlined function
49*9880d681SAndroid Build Coastguard Worker; ASM: .long   0                       # Offset into filechecksum table
50*9880d681SAndroid Build Coastguard Worker; ASM: .long   8                       # Starting line number
51*9880d681SAndroid Build Coastguard Worker; ASM: # Inlined function foo starts at t.cpp:2
52*9880d681SAndroid Build Coastguard Worker; ASM: .long   4099
53*9880d681SAndroid Build Coastguard Worker; ASM: .long   0
54*9880d681SAndroid Build Coastguard Worker; ASM: .long   2
55*9880d681SAndroid Build Coastguard Worker; ASM: [[inline_end]]:
56*9880d681SAndroid Build Coastguard Worker
57*9880d681SAndroid Build Coastguard Worker; ASM: .long   241                     # Symbol subsection for baz
58*9880d681SAndroid Build Coastguard Worker; ASM: .long   {{.*}} # Subsection size
59*9880d681SAndroid Build Coastguard Worker; ASM: .short 4429
60*9880d681SAndroid Build Coastguard Worker; ASM: .long
61*9880d681SAndroid Build Coastguard Worker; ASM: .long
62*9880d681SAndroid Build Coastguard Worker; ASM: .long
63*9880d681SAndroid Build Coastguard Worker; ASM: .cv_inline_linetable 1 1 8 Lfunc_begin0 Lfunc_end0 contains 2
64*9880d681SAndroid Build Coastguard Worker; ASM: .short 4429
65*9880d681SAndroid Build Coastguard Worker; ASM: .long
66*9880d681SAndroid Build Coastguard Worker; ASM: .long
67*9880d681SAndroid Build Coastguard Worker; ASM: .long
68*9880d681SAndroid Build Coastguard Worker; ASM: .cv_inline_linetable 2 1 2 Lfunc_begin0 Lfunc_end0
69*9880d681SAndroid Build Coastguard Worker; ASM: .short  4430
70*9880d681SAndroid Build Coastguard Worker; ASM: .short  4430
71*9880d681SAndroid Build Coastguard Worker
72*9880d681SAndroid Build Coastguard Worker; ASM: .section .debug$T,"dr"
73*9880d681SAndroid Build Coastguard Worker; ASM: .long 4 # Debug section magic
74*9880d681SAndroid Build Coastguard Worker; ASM: # ArgList (0x1000) {
75*9880d681SAndroid Build Coastguard Worker; ASM: #   TypeLeafKind: LF_ARGLIST (0x1201)
76*9880d681SAndroid Build Coastguard Worker; ASM: #   NumArgs: 0
77*9880d681SAndroid Build Coastguard Worker; ASM: #   Arguments [
78*9880d681SAndroid Build Coastguard Worker; ASM: #   ]
79*9880d681SAndroid Build Coastguard Worker; ASM: # }
80*9880d681SAndroid Build Coastguard Worker; ASM: .byte   0x06, 0x00, 0x01, 0x12
81*9880d681SAndroid Build Coastguard Worker; ASM: .byte   0x00, 0x00, 0x00, 0x00
82*9880d681SAndroid Build Coastguard Worker; ASM: # Procedure (0x1001) {
83*9880d681SAndroid Build Coastguard Worker; ASM: #   TypeLeafKind: LF_PROCEDURE (0x1008)
84*9880d681SAndroid Build Coastguard Worker; ASM: #   ReturnType: void (0x3)
85*9880d681SAndroid Build Coastguard Worker; ASM: #   CallingConvention: NearC (0x0)
86*9880d681SAndroid Build Coastguard Worker; ASM: #   FunctionOptions [ (0x0)
87*9880d681SAndroid Build Coastguard Worker; ASM: #   ]
88*9880d681SAndroid Build Coastguard Worker; ASM: #   NumParameters: 0
89*9880d681SAndroid Build Coastguard Worker; ASM: #   ArgListType: () (0x1000)
90*9880d681SAndroid Build Coastguard Worker; ASM: # }
91*9880d681SAndroid Build Coastguard Worker; ASM: .byte   0x0e, 0x00, 0x08, 0x10
92*9880d681SAndroid Build Coastguard Worker; ASM: .byte   0x03, 0x00, 0x00, 0x00
93*9880d681SAndroid Build Coastguard Worker; ASM: .byte   0x00, 0x00, 0x00, 0x00
94*9880d681SAndroid Build Coastguard Worker; ASM: .byte   0x00, 0x10, 0x00, 0x00
95*9880d681SAndroid Build Coastguard Worker; ASM: # FuncId (0x1002) {
96*9880d681SAndroid Build Coastguard Worker; ASM: #   TypeLeafKind: LF_FUNC_ID (0x1601)
97*9880d681SAndroid Build Coastguard Worker; ASM: #   ParentScope: 0x0
98*9880d681SAndroid Build Coastguard Worker; ASM: #   FunctionType: void () (0x1001)
99*9880d681SAndroid Build Coastguard Worker; ASM: #   Name: bar
100*9880d681SAndroid Build Coastguard Worker; ASM: # }
101*9880d681SAndroid Build Coastguard Worker; ASM: .byte   0x0e, 0x00, 0x01, 0x16
102*9880d681SAndroid Build Coastguard Worker; ASM: .byte   0x00, 0x00, 0x00, 0x00
103*9880d681SAndroid Build Coastguard Worker; ASM: .byte   0x01, 0x10, 0x00, 0x00
104*9880d681SAndroid Build Coastguard Worker; ASM: .byte   0x62, 0x61, 0x72, 0x00
105*9880d681SAndroid Build Coastguard Worker; ASM: # FuncId (0x1003) {
106*9880d681SAndroid Build Coastguard Worker; ASM: #   TypeLeafKind: LF_FUNC_ID (0x1601)
107*9880d681SAndroid Build Coastguard Worker; ASM: #   ParentScope: 0x0
108*9880d681SAndroid Build Coastguard Worker; ASM: #   FunctionType: void () (0x1001)
109*9880d681SAndroid Build Coastguard Worker; ASM: #   Name: foo
110*9880d681SAndroid Build Coastguard Worker; ASM: # }
111*9880d681SAndroid Build Coastguard Worker; ASM: .byte   0x0e, 0x00, 0x01, 0x16
112*9880d681SAndroid Build Coastguard Worker; ASM: .byte   0x00, 0x00, 0x00, 0x00
113*9880d681SAndroid Build Coastguard Worker; ASM: .byte   0x01, 0x10, 0x00, 0x00
114*9880d681SAndroid Build Coastguard Worker; ASM: .byte   0x66, 0x6f, 0x6f, 0x00
115*9880d681SAndroid Build Coastguard Worker
116*9880d681SAndroid Build Coastguard Worker; We should only the LF_FUNC_ID records that we needed to reference.
117*9880d681SAndroid Build Coastguard Worker; OBJ: CodeViewTypes [
118*9880d681SAndroid Build Coastguard Worker; OBJ:   Section: .debug$T
119*9880d681SAndroid Build Coastguard Worker; OBJ:   ArgList (0x1000) {
120*9880d681SAndroid Build Coastguard Worker; OBJ:     TypeLeafKind: LF_ARGLIST (0x1201)
121*9880d681SAndroid Build Coastguard Worker; OBJ:     NumArgs: 0
122*9880d681SAndroid Build Coastguard Worker; OBJ:   }
123*9880d681SAndroid Build Coastguard Worker; OBJ:   Procedure (0x1001) {
124*9880d681SAndroid Build Coastguard Worker; OBJ:     TypeLeafKind: LF_PROCEDURE (0x1008)
125*9880d681SAndroid Build Coastguard Worker; OBJ:     ReturnType: void (0x3)
126*9880d681SAndroid Build Coastguard Worker; OBJ:     NumParameters: 0
127*9880d681SAndroid Build Coastguard Worker; OBJ:     ArgListType: () (0x1000)
128*9880d681SAndroid Build Coastguard Worker; OBJ:   }
129*9880d681SAndroid Build Coastguard Worker; OBJ:   FuncId (0x1002) {
130*9880d681SAndroid Build Coastguard Worker; OBJ:     TypeLeafKind: LF_FUNC_ID (0x1601)
131*9880d681SAndroid Build Coastguard Worker; OBJ:     ParentScope: 0x0
132*9880d681SAndroid Build Coastguard Worker; OBJ:     FunctionType: void () (0x1001)
133*9880d681SAndroid Build Coastguard Worker; OBJ:     Name: bar
134*9880d681SAndroid Build Coastguard Worker; OBJ:   }
135*9880d681SAndroid Build Coastguard Worker; OBJ:   FuncId (0x1003) {
136*9880d681SAndroid Build Coastguard Worker; OBJ:     TypeLeafKind: LF_FUNC_ID (0x1601)
137*9880d681SAndroid Build Coastguard Worker; OBJ:     ParentScope: 0x0
138*9880d681SAndroid Build Coastguard Worker; OBJ:     FunctionType: void () (0x1001)
139*9880d681SAndroid Build Coastguard Worker; OBJ:     Name: foo
140*9880d681SAndroid Build Coastguard Worker; OBJ:   }
141*9880d681SAndroid Build Coastguard Worker; OBJ:   FuncId (0x1004) {
142*9880d681SAndroid Build Coastguard Worker; OBJ:     TypeLeafKind: LF_FUNC_ID (0x1601)
143*9880d681SAndroid Build Coastguard Worker; OBJ:     ParentScope: 0x0
144*9880d681SAndroid Build Coastguard Worker; OBJ:     FunctionType: void () (0x1001)
145*9880d681SAndroid Build Coastguard Worker; OBJ:     Name: baz
146*9880d681SAndroid Build Coastguard Worker; OBJ:   }
147*9880d681SAndroid Build Coastguard Worker; OBJ-NOT: TypeLeafKind: LF_FUNC_ID
148*9880d681SAndroid Build Coastguard Worker; OBJ: ]
149*9880d681SAndroid Build Coastguard Worker
150*9880d681SAndroid Build Coastguard Worker; OBJ: Subsection [
151*9880d681SAndroid Build Coastguard Worker; OBJ:   SubSectionType: InlineeLines (0xF6)
152*9880d681SAndroid Build Coastguard Worker; OBJ:   SubSectionSize: 0x1C
153*9880d681SAndroid Build Coastguard Worker; OBJ:   InlineeSourceLine {
154*9880d681SAndroid Build Coastguard Worker; OBJ:     Inlinee: bar (0x1002)
155*9880d681SAndroid Build Coastguard Worker; OBJ:     FileID: D:\src\llvm\build\t.cpp (0x0)
156*9880d681SAndroid Build Coastguard Worker; OBJ:     SourceLineNum: 8
157*9880d681SAndroid Build Coastguard Worker; OBJ:   }
158*9880d681SAndroid Build Coastguard Worker; OBJ:   InlineeSourceLine {
159*9880d681SAndroid Build Coastguard Worker; OBJ:     Inlinee: foo (0x1003)
160*9880d681SAndroid Build Coastguard Worker; OBJ:     FileID: D:\src\llvm\build\t.cpp (0x0)
161*9880d681SAndroid Build Coastguard Worker; OBJ:     SourceLineNum: 2
162*9880d681SAndroid Build Coastguard Worker; OBJ:   }
163*9880d681SAndroid Build Coastguard Worker; OBJ: ]
164*9880d681SAndroid Build Coastguard Worker; OBJ: Subsection [
165*9880d681SAndroid Build Coastguard Worker; OBJ:   SubSectionType: Symbols (0xF1)
166*9880d681SAndroid Build Coastguard Worker; OBJ:   ProcStart {
167*9880d681SAndroid Build Coastguard Worker; OBJ:     PtrParent: 0x0
168*9880d681SAndroid Build Coastguard Worker; OBJ:     PtrEnd: 0x0
169*9880d681SAndroid Build Coastguard Worker; OBJ:     PtrNext: 0x0
170*9880d681SAndroid Build Coastguard Worker; OBJ:     CodeSize: 0x3D
171*9880d681SAndroid Build Coastguard Worker; OBJ:     DbgStart: 0x0
172*9880d681SAndroid Build Coastguard Worker; OBJ:     DbgEnd: 0x0
173*9880d681SAndroid Build Coastguard Worker; OBJ:     FunctionType: baz (0x1004)
174*9880d681SAndroid Build Coastguard Worker; OBJ:     CodeOffset: ?baz@@YAXXZ+0x0
175*9880d681SAndroid Build Coastguard Worker; OBJ:     Segment: 0x0
176*9880d681SAndroid Build Coastguard Worker; OBJ:     Flags [ (0x0)
177*9880d681SAndroid Build Coastguard Worker; OBJ:     ]
178*9880d681SAndroid Build Coastguard Worker; OBJ:     DisplayName: baz
179*9880d681SAndroid Build Coastguard Worker; OBJ:     LinkageName: ?baz@@YAXXZ
180*9880d681SAndroid Build Coastguard Worker; OBJ:   }
181*9880d681SAndroid Build Coastguard Worker; OBJ:   InlineSite {
182*9880d681SAndroid Build Coastguard Worker; OBJ:     PtrParent: 0x0
183*9880d681SAndroid Build Coastguard Worker; OBJ:     PtrEnd: 0x0
184*9880d681SAndroid Build Coastguard Worker; OBJ:     Inlinee: bar (0x1002)
185*9880d681SAndroid Build Coastguard Worker; OBJ:     BinaryAnnotations [
186*9880d681SAndroid Build Coastguard Worker; OBJ-NEXT:  ChangeCodeOffsetAndLineOffset: {CodeOffset: 0x8, LineOffset: 1}
187*9880d681SAndroid Build Coastguard Worker; OBJ-NEXT:  ChangeLineOffset: -6
188*9880d681SAndroid Build Coastguard Worker; OBJ-NEXT:  ChangeCodeOffset: 0x7
189*9880d681SAndroid Build Coastguard Worker; OBJ-NEXT:  ChangeCodeOffsetAndLineOffset: {CodeOffset: 0xA, LineOffset: 1}
190*9880d681SAndroid Build Coastguard Worker; OBJ-NEXT:  ChangeCodeOffsetAndLineOffset: {CodeOffset: 0x6, LineOffset: 1}
191*9880d681SAndroid Build Coastguard Worker; OBJ-NEXT:  ChangeCodeOffsetAndLineOffset: {CodeOffset: 0x7, LineOffset: 1}
192*9880d681SAndroid Build Coastguard Worker; OBJ-NEXT:  ChangeLineOffset: 5
193*9880d681SAndroid Build Coastguard Worker; OBJ-NEXT:  ChangeCodeOffset: 0x7
194*9880d681SAndroid Build Coastguard Worker; OBJ-NEXT:  ChangeCodeLength: 0x7
195*9880d681SAndroid Build Coastguard Worker; OBJ:     ]
196*9880d681SAndroid Build Coastguard Worker; OBJ:   }
197*9880d681SAndroid Build Coastguard Worker; OBJ:   InlineSite {
198*9880d681SAndroid Build Coastguard Worker; OBJ:     PtrParent: 0x0
199*9880d681SAndroid Build Coastguard Worker; OBJ:     PtrEnd: 0x0
200*9880d681SAndroid Build Coastguard Worker; OBJ:     Inlinee: foo (0x1003)
201*9880d681SAndroid Build Coastguard Worker; OBJ:     BinaryAnnotations [
202*9880d681SAndroid Build Coastguard Worker; OBJ-NEXT:  ChangeCodeOffsetAndLineOffset: {CodeOffset: 0xF, LineOffset: 1}
203*9880d681SAndroid Build Coastguard Worker; OBJ-NEXT:  ChangeCodeOffsetAndLineOffset: {CodeOffset: 0xA, LineOffset: 1}
204*9880d681SAndroid Build Coastguard Worker; OBJ-NEXT:  ChangeCodeOffsetAndLineOffset: {CodeOffset: 0x6, LineOffset: 1}
205*9880d681SAndroid Build Coastguard Worker; OBJ-NEXT:  ChangeCodeOffsetAndLineOffset: {CodeOffset: 0x7, LineOffset: 1}
206*9880d681SAndroid Build Coastguard Worker; OBJ-NEXT:  ChangeCodeLength: 0x7
207*9880d681SAndroid Build Coastguard Worker; OBJ:     ]
208*9880d681SAndroid Build Coastguard Worker; OBJ:   }
209*9880d681SAndroid Build Coastguard Worker; OBJ:   InlineSiteEnd {
210*9880d681SAndroid Build Coastguard Worker; OBJ:   }
211*9880d681SAndroid Build Coastguard Worker; OBJ:   InlineSiteEnd {
212*9880d681SAndroid Build Coastguard Worker; OBJ:   }
213*9880d681SAndroid Build Coastguard Worker; OBJ:   ProcEnd
214*9880d681SAndroid Build Coastguard Worker; OBJ: ]
215*9880d681SAndroid Build Coastguard Worker
216*9880d681SAndroid Build Coastguard Worker; ModuleID = 't.cpp'
217*9880d681SAndroid Build Coastguard Workertarget datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
218*9880d681SAndroid Build Coastguard Workertarget triple = "x86_64-pc-windows-msvc18.0.0"
219*9880d681SAndroid Build Coastguard Worker
220*9880d681SAndroid Build Coastguard Worker@"\01?x@@3HC" = external global i32, align 4
221*9880d681SAndroid Build Coastguard Worker
222*9880d681SAndroid Build Coastguard Worker; Function Attrs: norecurse nounwind uwtable
223*9880d681SAndroid Build Coastguard Workerdefine void @"\01?baz@@YAXXZ"() #0 !dbg !4 {
224*9880d681SAndroid Build Coastguard Workerentry:
225*9880d681SAndroid Build Coastguard Worker  %y.i.i = alloca i32, align 4
226*9880d681SAndroid Build Coastguard Worker  %0 = load volatile i32, i32* @"\01?x@@3HC", align 4, !dbg !12, !tbaa !13
227*9880d681SAndroid Build Coastguard Worker  %add = add nsw i32 %0, 6, !dbg !12
228*9880d681SAndroid Build Coastguard Worker  store volatile i32 %add, i32* @"\01?x@@3HC", align 4, !dbg !12, !tbaa !13
229*9880d681SAndroid Build Coastguard Worker  %1 = load volatile i32, i32* @"\01?x@@3HC", align 4, !dbg !17, !tbaa !13
230*9880d681SAndroid Build Coastguard Worker  %add.i = add nsw i32 %1, 4, !dbg !17
231*9880d681SAndroid Build Coastguard Worker  store volatile i32 %add.i, i32* @"\01?x@@3HC", align 4, !dbg !17, !tbaa !13
232*9880d681SAndroid Build Coastguard Worker  %2 = bitcast i32* %y.i.i to i8*, !dbg !19
233*9880d681SAndroid Build Coastguard Worker  call void @llvm.lifetime.start(i64 4, i8* %2) #2, !dbg !19
234*9880d681SAndroid Build Coastguard Worker  store i32 1, i32* %y.i.i, align 4, !dbg !21, !tbaa !13
235*9880d681SAndroid Build Coastguard Worker  %3 = ptrtoint i32* %y.i.i to i64, !dbg !22
236*9880d681SAndroid Build Coastguard Worker  %4 = trunc i64 %3 to i32, !dbg !22
237*9880d681SAndroid Build Coastguard Worker  %5 = load volatile i32, i32* @"\01?x@@3HC", align 4, !dbg !23, !tbaa !13
238*9880d681SAndroid Build Coastguard Worker  %add.i.i = add nsw i32 %5, %4, !dbg !23
239*9880d681SAndroid Build Coastguard Worker  store volatile i32 %add.i.i, i32* @"\01?x@@3HC", align 4, !dbg !23, !tbaa !13
240*9880d681SAndroid Build Coastguard Worker  %6 = load volatile i32, i32* @"\01?x@@3HC", align 4, !dbg !24, !tbaa !13
241*9880d681SAndroid Build Coastguard Worker  %add1.i.i = add nsw i32 %6, 2, !dbg !24
242*9880d681SAndroid Build Coastguard Worker  store volatile i32 %add1.i.i, i32* @"\01?x@@3HC", align 4, !dbg !24, !tbaa !13
243*9880d681SAndroid Build Coastguard Worker  %7 = load volatile i32, i32* @"\01?x@@3HC", align 4, !dbg !25, !tbaa !13
244*9880d681SAndroid Build Coastguard Worker  %add2.i.i = add nsw i32 %7, 3, !dbg !25
245*9880d681SAndroid Build Coastguard Worker  store volatile i32 %add2.i.i, i32* @"\01?x@@3HC", align 4, !dbg !25, !tbaa !13
246*9880d681SAndroid Build Coastguard Worker  call void @llvm.lifetime.end(i64 4, i8* %2) #2, !dbg !26
247*9880d681SAndroid Build Coastguard Worker  %8 = load volatile i32, i32* @"\01?x@@3HC", align 4, !dbg !27, !tbaa !13
248*9880d681SAndroid Build Coastguard Worker  %add1.i = add nsw i32 %8, 5, !dbg !27
249*9880d681SAndroid Build Coastguard Worker  store volatile i32 %add1.i, i32* @"\01?x@@3HC", align 4, !dbg !27, !tbaa !13
250*9880d681SAndroid Build Coastguard Worker  %9 = load volatile i32, i32* @"\01?x@@3HC", align 4, !dbg !28, !tbaa !13
251*9880d681SAndroid Build Coastguard Worker  %add1 = add nsw i32 %9, 7, !dbg !28
252*9880d681SAndroid Build Coastguard Worker  store volatile i32 %add1, i32* @"\01?x@@3HC", align 4, !dbg !28, !tbaa !13
253*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !29
254*9880d681SAndroid Build Coastguard Worker}
255*9880d681SAndroid Build Coastguard Worker
256*9880d681SAndroid Build Coastguard Worker; Function Attrs: argmemonly nounwind
257*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.lifetime.start(i64, i8* nocapture) #1
258*9880d681SAndroid Build Coastguard Worker
259*9880d681SAndroid Build Coastguard Worker; Function Attrs: argmemonly nounwind
260*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.lifetime.end(i64, i8* nocapture) #1
261*9880d681SAndroid Build Coastguard Worker
262*9880d681SAndroid Build Coastguard Workerattributes #0 = { norecurse nounwind uwtable "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2" "unsafe-fp-math"="false" "use-soft-float"="false" }
263*9880d681SAndroid Build Coastguard Workerattributes #1 = { argmemonly nounwind }
264*9880d681SAndroid Build Coastguard Workerattributes #2 = { nounwind }
265*9880d681SAndroid Build Coastguard Worker
266*9880d681SAndroid Build Coastguard Worker!llvm.dbg.cu = !{!0}
267*9880d681SAndroid Build Coastguard Worker!llvm.module.flags = !{!8, !9, !10}
268*9880d681SAndroid Build Coastguard Worker!llvm.ident = !{!11}
269*9880d681SAndroid Build Coastguard Worker
270*9880d681SAndroid Build Coastguard Worker!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 3.9.0 ", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !2)
271*9880d681SAndroid Build Coastguard Worker!1 = !DIFile(filename: "t.cpp", directory: "D:\5Csrc\5Cllvm\5Cbuild")
272*9880d681SAndroid Build Coastguard Worker!2 = !{}
273*9880d681SAndroid Build Coastguard Worker!4 = distinct !DISubprogram(name: "baz", scope: !1, file: !1, line: 13, type: !5, isLocal: false, isDefinition: true, scopeLine: 13, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !2)
274*9880d681SAndroid Build Coastguard Worker!5 = !DISubroutineType(types: !2)
275*9880d681SAndroid Build Coastguard Worker!6 = distinct !DISubprogram(name: "bar", scope: !1, file: !1, line: 8, type: !5, isLocal: true, isDefinition: true, scopeLine: 8, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !2)
276*9880d681SAndroid Build Coastguard Worker!7 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 2, type: !5, isLocal: true, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !2)
277*9880d681SAndroid Build Coastguard Worker!8 = !{i32 2, !"CodeView", i32 1}
278*9880d681SAndroid Build Coastguard Worker!9 = !{i32 2, !"Debug Info Version", i32 3}
279*9880d681SAndroid Build Coastguard Worker!10 = !{i32 1, !"PIC Level", i32 2}
280*9880d681SAndroid Build Coastguard Worker!11 = !{!"clang version 3.9.0 "}
281*9880d681SAndroid Build Coastguard Worker!12 = !DILocation(line: 14, column: 5, scope: !4)
282*9880d681SAndroid Build Coastguard Worker!13 = !{!14, !14, i64 0}
283*9880d681SAndroid Build Coastguard Worker!14 = !{!"int", !15, i64 0}
284*9880d681SAndroid Build Coastguard Worker!15 = !{!"omnipotent char", !16, i64 0}
285*9880d681SAndroid Build Coastguard Worker!16 = !{!"Simple C/C++ TBAA"}
286*9880d681SAndroid Build Coastguard Worker!17 = !DILocation(line: 9, column: 5, scope: !6, inlinedAt: !18)
287*9880d681SAndroid Build Coastguard Worker!18 = distinct !DILocation(line: 15, column: 3, scope: !4)
288*9880d681SAndroid Build Coastguard Worker!19 = !DILocation(line: 3, column: 3, scope: !7, inlinedAt: !20)
289*9880d681SAndroid Build Coastguard Worker!20 = distinct !DILocation(line: 10, column: 3, scope: !6, inlinedAt: !18)
290*9880d681SAndroid Build Coastguard Worker!21 = !DILocation(line: 3, column: 7, scope: !7, inlinedAt: !20)
291*9880d681SAndroid Build Coastguard Worker!22 = !DILocation(line: 4, column: 8, scope: !7, inlinedAt: !20)
292*9880d681SAndroid Build Coastguard Worker!23 = !DILocation(line: 4, column: 5, scope: !7, inlinedAt: !20)
293*9880d681SAndroid Build Coastguard Worker!24 = !DILocation(line: 5, column: 5, scope: !7, inlinedAt: !20)
294*9880d681SAndroid Build Coastguard Worker!25 = !DILocation(line: 6, column: 5, scope: !7, inlinedAt: !20)
295*9880d681SAndroid Build Coastguard Worker!26 = !DILocation(line: 7, column: 1, scope: !7, inlinedAt: !20)
296*9880d681SAndroid Build Coastguard Worker!27 = !DILocation(line: 11, column: 5, scope: !6, inlinedAt: !18)
297*9880d681SAndroid Build Coastguard Worker!28 = !DILocation(line: 16, column: 5, scope: !4)
298*9880d681SAndroid Build Coastguard Worker!29 = !DILocation(line: 17, column: 1, scope: !4)
299