• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// REQUIRES: aarch64-registered-target
2
3// RUN: llvm-mc -filetype=obj -triple=aarch64-linux-android -o %t.o %s
4// RUN: echo 'FRAME %t.o 0' | llvm-symbolizer | FileCheck %s
5
6// CHECK: f
7// CHECK-NEXT: a
8// CHECK-NEXT: /tmp{{/|\\}}stack.c:20
9// CHECK-NEXT: -192 32 192
10// CHECK-NEXT: g
11// CHECK-NEXT: p
12// CHECK-NEXT: /tmp{{/|\\}}stack.c:8
13// CHECK-NEXT: ?? 8 ??
14// CHECK-NEXT: g
15// CHECK-NEXT: b
16// CHECK-NEXT: /tmp{{/|\\}}stack.c:10
17// CHECK-NEXT: -128 32 128
18// CHECK-NEXT: h
19// CHECK-NEXT: p1
20// CHECK-NEXT: /tmp{{/|\\}}stack.c:3
21// CHECK-NEXT: ?? 8 ??
22// CHECK-NEXT: h
23// CHECK-NEXT: p2
24// CHECK-NEXT: /tmp{{/|\\}}stack.c:3
25// CHECK-NEXT: ?? 8 ??
26// CHECK-NEXT: h
27// CHECK-NEXT: d
28// CHECK-NEXT: /tmp{{/|\\}}stack.c:4
29// CHECK-NEXT: -96 32 0
30// CHECK-NEXT: g
31// CHECK-NEXT: c
32// CHECK-NEXT: /tmp{{/|\\}}stack.c:14
33// CHECK-NEXT: -160 32 64
34// CHECK-NEXT: h
35// CHECK-NEXT: p1
36// CHECK-NEXT: /tmp{{/|\\}}stack.c:3
37// CHECK-NEXT: ?? 8 ??
38// CHECK-NEXT: h
39// CHECK-NEXT: p2
40// CHECK-NEXT: /tmp{{/|\\}}stack.c:3
41// CHECK-NEXT: ?? 8 ??
42// CHECK-NEXT: h
43// CHECK-NEXT: d
44// CHECK-NEXT: /tmp{{/|\\}}stack.c:4
45// CHECK-NEXT: -96 32 0
46
47// Generated from:
48//
49// void i(void *, void *, void *);
50//
51// static void h(void *p1, void *p2) {
52//   char d[32];
53//   i(d, p1, p2);
54// }
55//
56// static void g(void *p) {
57//   {
58//     char b[32];
59//     h(b, p);
60//   }
61//   {
62//     char c[32];
63//     h(c, p);
64//   }
65// }
66//
67// clang -S -o - -fsanitize=hwaddress --target=aarch64-linux-android /tmp/stack.c -O -fsanitize-hwaddress-abi=platform -g
68
69	.text
70	.file	"stack.c"
71	.globl	f                       // -- Begin function f
72	.p2align	2
73	.type	f,@function
74f:                                      // @f
75.Lfunc_begin0:
76	.file	1 "/tmp" "stack.c"
77	.loc	1 19 0                  // stack.c:19:0
78	.cfi_startproc
79// %bb.0:                               // %entry
80	sub	sp, sp, #208            // =208
81	stp	x26, x25, [sp, #128]    // 16-byte Folded Spill
82	stp	x24, x23, [sp, #144]    // 16-byte Folded Spill
83	stp	x22, x21, [sp, #160]    // 16-byte Folded Spill
84	stp	x20, x19, [sp, #176]    // 16-byte Folded Spill
85	stp	x29, x30, [sp, #192]    // 16-byte Folded Spill
86	add	x29, sp, #192           // =192
87	.cfi_def_cfa w29, 16
88	.cfi_offset w30, -8
89	.cfi_offset w29, -16
90	.cfi_offset w19, -24
91	.cfi_offset w20, -32
92	.cfi_offset w21, -40
93	.cfi_offset w22, -48
94	.cfi_offset w23, -56
95	.cfi_offset w24, -64
96	.cfi_offset w25, -72
97	.cfi_offset w26, -80
98	mrs	x8, TPIDR_EL0
99	ldr	x12, [x8, #48]
100.Ltmp0:
101	adr	x14, .Ltmp0
102	orr	x14, x14, x29, lsl #44
103	add	x9, sp, #96             // =96
104	asr	x15, x12, #3
105	asr	x16, x12, #56
106	orr	x17, x12, #0xffffffff
107	str	x14, [x12], #8
108	bic	x12, x12, x16, lsl #12
109	str	x12, [x8, #48]
110.Ltmp1:
111	.loc	1 4 8 prologue_end      // stack.c:4:8
112	and	w8, w15, #0xff
113	lsr	x22, x9, #4
114	add	x25, x17, #1            // =1
115	bfi	w8, w8, #8, #8
116	add	x10, sp, #64            // =64
117	strh	w8, [x25, x22]
118.Ltmp2:
119	.loc	1 10 10                 // stack.c:10:10
120	eor	x8, x15, #0x80
121	orr	x1, x10, x8, lsl #56
122	and	w8, w8, #0xff
123	lsr	x23, x10, #4
124	bfi	w8, w8, #8, #8
125	add	x11, sp, #32            // =32
126	strh	w8, [x25, x23]
127.Ltmp3:
128	.loc	1 14 10                 // stack.c:14:10
129	eor	x8, x15, #0x40
130	orr	x19, x11, x8, lsl #56
131	and	w8, w8, #0xff
132	lsr	x24, x11, #4
133	bfi	w8, w8, #8, #8
134	mov	x13, sp
135	strh	w8, [x25, x24]
136.Ltmp4:
137	.loc	1 20 3                  // stack.c:20:3
138	eor	x8, x15, #0xc0
139.Ltmp5:
140	.loc	1 4 8                   // stack.c:4:8
141	orr	x20, x9, x15, lsl #56
142.Ltmp6:
143	.loc	1 20 3                  // stack.c:20:3
144	orr	x21, x13, x8, lsl #56
145	and	w8, w8, #0xff
146	lsr	x26, x13, #4
147	bfi	w8, w8, #8, #8
148.Ltmp7:
149	.loc	1 5 3                   // stack.c:5:3
150	mov	x0, x20
151	mov	x2, x21
152.Ltmp8:
153	.loc	1 20 3                  // stack.c:20:3
154	strh	w8, [x25, x26]
155.Ltmp9:
156	//DEBUG_VALUE: h:p1 <- $x1
157	//DEBUG_VALUE: g:p <- $x21
158	//DEBUG_VALUE: h:p2 <- $x21
159	//DEBUG_VALUE: h:p2 <- $x21
160	.loc	1 5 3                   // stack.c:5:3
161	bl	i
162.Ltmp10:
163	//DEBUG_VALUE: h:p1 <- $x19
164	.loc	1 5 3 is_stmt 0         // stack.c:5:3
165	mov	x0, x20
166	mov	x1, x19
167	mov	x2, x21
168	bl	i
169.Ltmp11:
170	.loc	1 22 1 is_stmt 1        // stack.c:22:1
171	strh	wzr, [x25, x22]
172	strh	wzr, [x25, x23]
173	strh	wzr, [x25, x24]
174	strh	wzr, [x25, x26]
175	ldp	x29, x30, [sp, #192]    // 16-byte Folded Reload
176	ldp	x20, x19, [sp, #176]    // 16-byte Folded Reload
177.Ltmp12:
178	ldp	x22, x21, [sp, #160]    // 16-byte Folded Reload
179.Ltmp13:
180	ldp	x24, x23, [sp, #144]    // 16-byte Folded Reload
181	ldp	x26, x25, [sp, #128]    // 16-byte Folded Reload
182	add	sp, sp, #208            // =208
183	ret
184.Ltmp14:
185.Lfunc_end0:
186	.size	f, .Lfunc_end0-f
187	.cfi_endproc
188                                        // -- End function
189	.section	.text.hwasan.module_ctor,"axG",@progbits,hwasan.module_ctor,comdat
190	.p2align	2               // -- Begin function hwasan.module_ctor
191	.type	hwasan.module_ctor,@function
192hwasan.module_ctor:                     // @hwasan.module_ctor
193.Lfunc_begin1:
194	.cfi_startproc
195// %bb.0:
196	str	x30, [sp, #-16]!        // 8-byte Folded Spill
197	.cfi_def_cfa_offset 16
198	.cfi_offset w30, -16
199	bl	__hwasan_init
200	ldr	x30, [sp], #16          // 8-byte Folded Reload
201	ret
202.Lfunc_end1:
203	.size	hwasan.module_ctor, .Lfunc_end1-hwasan.module_ctor
204	.cfi_endproc
205                                        // -- End function
206	.section	.init_array.0,"aGw",@init_array,hwasan.module_ctor,comdat
207	.p2align	3
208	.xword	hwasan.module_ctor
209	.section	.debug_str,"MS",@progbits,1
210.Linfo_string0:
211	.asciz	"clang version 9.0.0 "  // string offset=0
212.Linfo_string1:
213	.asciz	"stack.c"               // string offset=21
214.Linfo_string2:
215	.asciz	"/tmp"                  // string offset=29
216.Linfo_string3:
217	.asciz	"h"                     // string offset=34
218.Linfo_string4:
219	.asciz	"p1"                    // string offset=36
220.Linfo_string5:
221	.asciz	"p2"                    // string offset=39
222.Linfo_string6:
223	.asciz	"d"                     // string offset=42
224.Linfo_string7:
225	.asciz	"char"                  // string offset=44
226.Linfo_string8:
227	.asciz	"__ARRAY_SIZE_TYPE__"   // string offset=49
228.Linfo_string9:
229	.asciz	"g"                     // string offset=69
230.Linfo_string10:
231	.asciz	"p"                     // string offset=71
232.Linfo_string11:
233	.asciz	"b"                     // string offset=73
234.Linfo_string12:
235	.asciz	"c"                     // string offset=75
236.Linfo_string13:
237	.asciz	"f"                     // string offset=77
238.Linfo_string14:
239	.asciz	"a"                     // string offset=79
240	.section	.debug_loc,"",@progbits
241.Ldebug_loc0:
242	.xword	.Ltmp9-.Lfunc_begin0
243	.xword	.Ltmp10-.Lfunc_begin0
244	.hword	1                       // Loc expr size
245	.byte	81                      // DW_OP_reg1
246	.xword	0
247	.xword	0
248.Ldebug_loc1:
249	.xword	.Ltmp9-.Lfunc_begin0
250	.xword	.Ltmp13-.Lfunc_begin0
251	.hword	1                       // Loc expr size
252	.byte	101                     // DW_OP_reg21
253	.xword	0
254	.xword	0
255.Ldebug_loc2:
256	.xword	.Ltmp9-.Lfunc_begin0
257	.xword	.Ltmp13-.Lfunc_begin0
258	.hword	1                       // Loc expr size
259	.byte	101                     // DW_OP_reg21
260	.xword	0
261	.xword	0
262.Ldebug_loc3:
263	.xword	.Ltmp9-.Lfunc_begin0
264	.xword	.Ltmp13-.Lfunc_begin0
265	.hword	1                       // Loc expr size
266	.byte	101                     // DW_OP_reg21
267	.xword	0
268	.xword	0
269.Ldebug_loc4:
270	.xword	.Ltmp10-.Lfunc_begin0
271	.xword	.Ltmp12-.Lfunc_begin0
272	.hword	1                       // Loc expr size
273	.byte	99                      // DW_OP_reg19
274	.xword	0
275	.xword	0
276	.section	.debug_abbrev,"",@progbits
277	.byte	1                       // Abbreviation Code
278	.byte	17                      // DW_TAG_compile_unit
279	.byte	1                       // DW_CHILDREN_yes
280	.byte	37                      // DW_AT_producer
281	.byte	14                      // DW_FORM_strp
282	.byte	19                      // DW_AT_language
283	.byte	5                       // DW_FORM_data2
284	.byte	3                       // DW_AT_name
285	.byte	14                      // DW_FORM_strp
286	.byte	16                      // DW_AT_stmt_list
287	.byte	23                      // DW_FORM_sec_offset
288	.byte	27                      // DW_AT_comp_dir
289	.byte	14                      // DW_FORM_strp
290	.byte	17                      // DW_AT_low_pc
291	.byte	1                       // DW_FORM_addr
292	.byte	18                      // DW_AT_high_pc
293	.byte	6                       // DW_FORM_data4
294	.byte	0                       // EOM(1)
295	.byte	0                       // EOM(2)
296	.byte	2                       // Abbreviation Code
297	.byte	46                      // DW_TAG_subprogram
298	.byte	1                       // DW_CHILDREN_yes
299	.byte	3                       // DW_AT_name
300	.byte	14                      // DW_FORM_strp
301	.byte	58                      // DW_AT_decl_file
302	.byte	11                      // DW_FORM_data1
303	.byte	59                      // DW_AT_decl_line
304	.byte	11                      // DW_FORM_data1
305	.byte	39                      // DW_AT_prototyped
306	.byte	25                      // DW_FORM_flag_present
307	.byte	32                      // DW_AT_inline
308	.byte	11                      // DW_FORM_data1
309	.byte	0                       // EOM(1)
310	.byte	0                       // EOM(2)
311	.byte	3                       // Abbreviation Code
312	.byte	5                       // DW_TAG_formal_parameter
313	.byte	0                       // DW_CHILDREN_no
314	.byte	3                       // DW_AT_name
315	.byte	14                      // DW_FORM_strp
316	.byte	58                      // DW_AT_decl_file
317	.byte	11                      // DW_FORM_data1
318	.byte	59                      // DW_AT_decl_line
319	.byte	11                      // DW_FORM_data1
320	.byte	73                      // DW_AT_type
321	.byte	19                      // DW_FORM_ref4
322	.byte	0                       // EOM(1)
323	.byte	0                       // EOM(2)
324	.byte	4                       // Abbreviation Code
325	.byte	52                      // DW_TAG_variable
326	.byte	0                       // DW_CHILDREN_no
327	.byte	3                       // DW_AT_name
328	.byte	14                      // DW_FORM_strp
329	.byte	58                      // DW_AT_decl_file
330	.byte	11                      // DW_FORM_data1
331	.byte	59                      // DW_AT_decl_line
332	.byte	11                      // DW_FORM_data1
333	.byte	73                      // DW_AT_type
334	.byte	19                      // DW_FORM_ref4
335	.byte	0                       // EOM(1)
336	.byte	0                       // EOM(2)
337	.byte	5                       // Abbreviation Code
338	.byte	15                      // DW_TAG_pointer_type
339	.byte	0                       // DW_CHILDREN_no
340	.byte	0                       // EOM(1)
341	.byte	0                       // EOM(2)
342	.byte	6                       // Abbreviation Code
343	.byte	1                       // DW_TAG_array_type
344	.byte	1                       // DW_CHILDREN_yes
345	.byte	73                      // DW_AT_type
346	.byte	19                      // DW_FORM_ref4
347	.byte	0                       // EOM(1)
348	.byte	0                       // EOM(2)
349	.byte	7                       // Abbreviation Code
350	.byte	33                      // DW_TAG_subrange_type
351	.byte	0                       // DW_CHILDREN_no
352	.byte	73                      // DW_AT_type
353	.byte	19                      // DW_FORM_ref4
354	.byte	55                      // DW_AT_count
355	.byte	11                      // DW_FORM_data1
356	.byte	0                       // EOM(1)
357	.byte	0                       // EOM(2)
358	.byte	8                       // Abbreviation Code
359	.byte	36                      // DW_TAG_base_type
360	.byte	0                       // DW_CHILDREN_no
361	.byte	3                       // DW_AT_name
362	.byte	14                      // DW_FORM_strp
363	.byte	62                      // DW_AT_encoding
364	.byte	11                      // DW_FORM_data1
365	.byte	11                      // DW_AT_byte_size
366	.byte	11                      // DW_FORM_data1
367	.byte	0                       // EOM(1)
368	.byte	0                       // EOM(2)
369	.byte	9                       // Abbreviation Code
370	.byte	36                      // DW_TAG_base_type
371	.byte	0                       // DW_CHILDREN_no
372	.byte	3                       // DW_AT_name
373	.byte	14                      // DW_FORM_strp
374	.byte	11                      // DW_AT_byte_size
375	.byte	11                      // DW_FORM_data1
376	.byte	62                      // DW_AT_encoding
377	.byte	11                      // DW_FORM_data1
378	.byte	0                       // EOM(1)
379	.byte	0                       // EOM(2)
380	.byte	10                      // Abbreviation Code
381	.byte	11                      // DW_TAG_lexical_block
382	.byte	1                       // DW_CHILDREN_yes
383	.byte	0                       // EOM(1)
384	.byte	0                       // EOM(2)
385	.byte	11                      // Abbreviation Code
386	.byte	46                      // DW_TAG_subprogram
387	.byte	1                       // DW_CHILDREN_yes
388	.byte	17                      // DW_AT_low_pc
389	.byte	1                       // DW_FORM_addr
390	.byte	18                      // DW_AT_high_pc
391	.byte	6                       // DW_FORM_data4
392	.byte	64                      // DW_AT_frame_base
393	.byte	24                      // DW_FORM_exprloc
394	.byte	3                       // DW_AT_name
395	.byte	14                      // DW_FORM_strp
396	.byte	58                      // DW_AT_decl_file
397	.byte	11                      // DW_FORM_data1
398	.byte	59                      // DW_AT_decl_line
399	.byte	11                      // DW_FORM_data1
400	.byte	63                      // DW_AT_external
401	.byte	25                      // DW_FORM_flag_present
402	.byte	0                       // EOM(1)
403	.byte	0                       // EOM(2)
404	.byte	12                      // Abbreviation Code
405	.byte	52                      // DW_TAG_variable
406	.byte	0                       // DW_CHILDREN_no
407	.byte	2                       // DW_AT_location
408	.byte	24                      // DW_FORM_exprloc
409	.ascii	"\203|"                 // DW_AT_LLVM_tag_offset
410	.byte	11                      // DW_FORM_data1
411	.byte	3                       // DW_AT_name
412	.byte	14                      // DW_FORM_strp
413	.byte	58                      // DW_AT_decl_file
414	.byte	11                      // DW_FORM_data1
415	.byte	59                      // DW_AT_decl_line
416	.byte	11                      // DW_FORM_data1
417	.byte	73                      // DW_AT_type
418	.byte	19                      // DW_FORM_ref4
419	.byte	0                       // EOM(1)
420	.byte	0                       // EOM(2)
421	.byte	13                      // Abbreviation Code
422	.byte	29                      // DW_TAG_inlined_subroutine
423	.byte	1                       // DW_CHILDREN_yes
424	.byte	49                      // DW_AT_abstract_origin
425	.byte	19                      // DW_FORM_ref4
426	.byte	85                      // DW_AT_ranges
427	.byte	23                      // DW_FORM_sec_offset
428	.byte	88                      // DW_AT_call_file
429	.byte	11                      // DW_FORM_data1
430	.byte	89                      // DW_AT_call_line
431	.byte	11                      // DW_FORM_data1
432	.byte	0                       // EOM(1)
433	.byte	0                       // EOM(2)
434	.byte	14                      // Abbreviation Code
435	.byte	5                       // DW_TAG_formal_parameter
436	.byte	0                       // DW_CHILDREN_no
437	.byte	2                       // DW_AT_location
438	.byte	23                      // DW_FORM_sec_offset
439	.byte	49                      // DW_AT_abstract_origin
440	.byte	19                      // DW_FORM_ref4
441	.byte	0                       // EOM(1)
442	.byte	0                       // EOM(2)
443	.byte	15                      // Abbreviation Code
444	.byte	11                      // DW_TAG_lexical_block
445	.byte	1                       // DW_CHILDREN_yes
446	.byte	85                      // DW_AT_ranges
447	.byte	23                      // DW_FORM_sec_offset
448	.byte	0                       // EOM(1)
449	.byte	0                       // EOM(2)
450	.byte	16                      // Abbreviation Code
451	.byte	52                      // DW_TAG_variable
452	.byte	0                       // DW_CHILDREN_no
453	.byte	2                       // DW_AT_location
454	.byte	24                      // DW_FORM_exprloc
455	.ascii	"\203|"                 // DW_AT_LLVM_tag_offset
456	.byte	11                      // DW_FORM_data1
457	.byte	49                      // DW_AT_abstract_origin
458	.byte	19                      // DW_FORM_ref4
459	.byte	0                       // EOM(1)
460	.byte	0                       // EOM(2)
461	.byte	17                      // Abbreviation Code
462	.byte	29                      // DW_TAG_inlined_subroutine
463	.byte	1                       // DW_CHILDREN_yes
464	.byte	49                      // DW_AT_abstract_origin
465	.byte	19                      // DW_FORM_ref4
466	.byte	17                      // DW_AT_low_pc
467	.byte	1                       // DW_FORM_addr
468	.byte	18                      // DW_AT_high_pc
469	.byte	6                       // DW_FORM_data4
470	.byte	88                      // DW_AT_call_file
471	.byte	11                      // DW_FORM_data1
472	.byte	89                      // DW_AT_call_line
473	.byte	11                      // DW_FORM_data1
474	.byte	0                       // EOM(1)
475	.byte	0                       // EOM(2)
476	.byte	0                       // EOM(3)
477	.section	.debug_info,"",@progbits
478.Lcu_begin0:
479	.word	.Ldebug_info_end0-.Ldebug_info_start0 // Length of Unit
480.Ldebug_info_start0:
481	.hword	4                       // DWARF version number
482	.word	.debug_abbrev           // Offset Into Abbrev. Section
483	.byte	8                       // Address Size (in bytes)
484	.byte	1                       // Abbrev [1] 0xb:0x146 DW_TAG_compile_unit
485	.word	.Linfo_string0          // DW_AT_producer
486	.hword	12                      // DW_AT_language
487	.word	.Linfo_string1          // DW_AT_name
488	.word	.Lline_table_start0     // DW_AT_stmt_list
489	.word	.Linfo_string2          // DW_AT_comp_dir
490	.xword	.Lfunc_begin0           // DW_AT_low_pc
491	.word	.Lfunc_end0-.Lfunc_begin0 // DW_AT_high_pc
492	.byte	2                       // Abbrev [2] 0x2a:0x2a DW_TAG_subprogram
493	.word	.Linfo_string3          // DW_AT_name
494	.byte	1                       // DW_AT_decl_file
495	.byte	3                       // DW_AT_decl_line
496                                        // DW_AT_prototyped
497	.byte	1                       // DW_AT_inline
498	.byte	3                       // Abbrev [3] 0x32:0xb DW_TAG_formal_parameter
499	.word	.Linfo_string4          // DW_AT_name
500	.byte	1                       // DW_AT_decl_file
501	.byte	3                       // DW_AT_decl_line
502	.word	84                      // DW_AT_type
503	.byte	3                       // Abbrev [3] 0x3d:0xb DW_TAG_formal_parameter
504	.word	.Linfo_string5          // DW_AT_name
505	.byte	1                       // DW_AT_decl_file
506	.byte	3                       // DW_AT_decl_line
507	.word	84                      // DW_AT_type
508	.byte	4                       // Abbrev [4] 0x48:0xb DW_TAG_variable
509	.word	.Linfo_string6          // DW_AT_name
510	.byte	1                       // DW_AT_decl_file
511	.byte	4                       // DW_AT_decl_line
512	.word	85                      // DW_AT_type
513	.byte	0                       // End Of Children Mark
514	.byte	5                       // Abbrev [5] 0x54:0x1 DW_TAG_pointer_type
515	.byte	6                       // Abbrev [6] 0x55:0xc DW_TAG_array_type
516	.word	97                      // DW_AT_type
517	.byte	7                       // Abbrev [7] 0x5a:0x6 DW_TAG_subrange_type
518	.word	104                     // DW_AT_type
519	.byte	32                      // DW_AT_count
520	.byte	0                       // End Of Children Mark
521	.byte	8                       // Abbrev [8] 0x61:0x7 DW_TAG_base_type
522	.word	.Linfo_string7          // DW_AT_name
523	.byte	8                       // DW_AT_encoding
524	.byte	1                       // DW_AT_byte_size
525	.byte	9                       // Abbrev [9] 0x68:0x7 DW_TAG_base_type
526	.word	.Linfo_string8          // DW_AT_name
527	.byte	8                       // DW_AT_byte_size
528	.byte	7                       // DW_AT_encoding
529	.byte	2                       // Abbrev [2] 0x6f:0x2e DW_TAG_subprogram
530	.word	.Linfo_string9          // DW_AT_name
531	.byte	1                       // DW_AT_decl_file
532	.byte	8                       // DW_AT_decl_line
533                                        // DW_AT_prototyped
534	.byte	1                       // DW_AT_inline
535	.byte	3                       // Abbrev [3] 0x77:0xb DW_TAG_formal_parameter
536	.word	.Linfo_string10         // DW_AT_name
537	.byte	1                       // DW_AT_decl_file
538	.byte	8                       // DW_AT_decl_line
539	.word	84                      // DW_AT_type
540	.byte	10                      // Abbrev [10] 0x82:0xd DW_TAG_lexical_block
541	.byte	4                       // Abbrev [4] 0x83:0xb DW_TAG_variable
542	.word	.Linfo_string11         // DW_AT_name
543	.byte	1                       // DW_AT_decl_file
544	.byte	10                      // DW_AT_decl_line
545	.word	85                      // DW_AT_type
546	.byte	0                       // End Of Children Mark
547	.byte	10                      // Abbrev [10] 0x8f:0xd DW_TAG_lexical_block
548	.byte	4                       // Abbrev [4] 0x90:0xb DW_TAG_variable
549	.word	.Linfo_string12         // DW_AT_name
550	.byte	1                       // DW_AT_decl_file
551	.byte	14                      // DW_AT_decl_line
552	.word	85                      // DW_AT_type
553	.byte	0                       // End Of Children Mark
554	.byte	0                       // End Of Children Mark
555	.byte	11                      // Abbrev [11] 0x9d:0xb3 DW_TAG_subprogram
556	.xword	.Lfunc_begin0           // DW_AT_low_pc
557	.word	.Lfunc_end0-.Lfunc_begin0 // DW_AT_high_pc
558	.byte	1                       // DW_AT_frame_base
559	.byte	109
560	.word	.Linfo_string13         // DW_AT_name
561	.byte	1                       // DW_AT_decl_file
562	.byte	19                      // DW_AT_decl_line
563                                        // DW_AT_external
564	.byte	12                      // Abbrev [12] 0xb2:0x10 DW_TAG_variable
565	.byte	3                       // DW_AT_location
566	.byte	145
567	.ascii	"\300~"
568	.byte	192                     // DW_AT_LLVM_tag_offset
569	.word	.Linfo_string14         // DW_AT_name
570	.byte	1                       // DW_AT_decl_file
571	.byte	20                      // DW_AT_decl_line
572	.word	85                      // DW_AT_type
573	.byte	13                      // Abbrev [13] 0xc2:0x8d DW_TAG_inlined_subroutine
574	.word	111                     // DW_AT_abstract_origin
575	.word	.Ldebug_ranges0         // DW_AT_ranges
576	.byte	1                       // DW_AT_call_file
577	.byte	21                      // DW_AT_call_line
578	.byte	14                      // Abbrev [14] 0xcd:0x9 DW_TAG_formal_parameter
579	.word	.Ldebug_loc1            // DW_AT_location
580	.word	119                     // DW_AT_abstract_origin
581	.byte	15                      // Abbrev [15] 0xd6:0x38 DW_TAG_lexical_block
582	.word	.Ldebug_ranges2         // DW_AT_ranges
583	.byte	16                      // Abbrev [16] 0xdb:0xa DW_TAG_variable
584	.byte	3                       // DW_AT_location
585	.byte	145
586	.ascii	"\200\177"
587	.byte	128                     // DW_AT_LLVM_tag_offset
588	.word	131                     // DW_AT_abstract_origin
589	.byte	13                      // Abbrev [13] 0xe5:0x28 DW_TAG_inlined_subroutine
590	.word	42                      // DW_AT_abstract_origin
591	.word	.Ldebug_ranges1         // DW_AT_ranges
592	.byte	1                       // DW_AT_call_file
593	.byte	11                      // DW_AT_call_line
594	.byte	14                      // Abbrev [14] 0xf0:0x9 DW_TAG_formal_parameter
595	.word	.Ldebug_loc0            // DW_AT_location
596	.word	50                      // DW_AT_abstract_origin
597	.byte	14                      // Abbrev [14] 0xf9:0x9 DW_TAG_formal_parameter
598	.word	.Ldebug_loc2            // DW_AT_location
599	.word	61                      // DW_AT_abstract_origin
600	.byte	16                      // Abbrev [16] 0x102:0xa DW_TAG_variable
601	.byte	3                       // DW_AT_location
602	.byte	145
603	.ascii	"\240\177"
604	.byte	0                       // DW_AT_LLVM_tag_offset
605	.word	72                      // DW_AT_abstract_origin
606	.byte	0                       // End Of Children Mark
607	.byte	0                       // End Of Children Mark
608	.byte	15                      // Abbrev [15] 0x10e:0x40 DW_TAG_lexical_block
609	.word	.Ldebug_ranges3         // DW_AT_ranges
610	.byte	16                      // Abbrev [16] 0x113:0xa DW_TAG_variable
611	.byte	3                       // DW_AT_location
612	.byte	145
613	.ascii	"\340~"
614	.byte	64                      // DW_AT_LLVM_tag_offset
615	.word	144                     // DW_AT_abstract_origin
616	.byte	17                      // Abbrev [17] 0x11d:0x30 DW_TAG_inlined_subroutine
617	.word	42                      // DW_AT_abstract_origin
618	.xword	.Ltmp10                 // DW_AT_low_pc
619	.word	.Ltmp11-.Ltmp10         // DW_AT_high_pc
620	.byte	1                       // DW_AT_call_file
621	.byte	15                      // DW_AT_call_line
622	.byte	14                      // Abbrev [14] 0x130:0x9 DW_TAG_formal_parameter
623	.word	.Ldebug_loc4            // DW_AT_location
624	.word	50                      // DW_AT_abstract_origin
625	.byte	14                      // Abbrev [14] 0x139:0x9 DW_TAG_formal_parameter
626	.word	.Ldebug_loc3            // DW_AT_location
627	.word	61                      // DW_AT_abstract_origin
628	.byte	16                      // Abbrev [16] 0x142:0xa DW_TAG_variable
629	.byte	3                       // DW_AT_location
630	.byte	145
631	.ascii	"\240\177"
632	.byte	0                       // DW_AT_LLVM_tag_offset
633	.word	72                      // DW_AT_abstract_origin
634	.byte	0                       // End Of Children Mark
635	.byte	0                       // End Of Children Mark
636	.byte	0                       // End Of Children Mark
637	.byte	0                       // End Of Children Mark
638	.byte	0                       // End Of Children Mark
639.Ldebug_info_end0:
640	.section	.debug_ranges,"",@progbits
641.Ldebug_ranges0:
642	.xword	.Ltmp1-.Lfunc_begin0
643	.xword	.Ltmp4-.Lfunc_begin0
644	.xword	.Ltmp5-.Lfunc_begin0
645	.xword	.Ltmp6-.Lfunc_begin0
646	.xword	.Ltmp7-.Lfunc_begin0
647	.xword	.Ltmp8-.Lfunc_begin0
648	.xword	.Ltmp9-.Lfunc_begin0
649	.xword	.Ltmp11-.Lfunc_begin0
650	.xword	0
651	.xword	0
652.Ldebug_ranges1:
653	.xword	.Ltmp1-.Lfunc_begin0
654	.xword	.Ltmp2-.Lfunc_begin0
655	.xword	.Ltmp5-.Lfunc_begin0
656	.xword	.Ltmp6-.Lfunc_begin0
657	.xword	.Ltmp7-.Lfunc_begin0
658	.xword	.Ltmp8-.Lfunc_begin0
659	.xword	.Ltmp9-.Lfunc_begin0
660	.xword	.Ltmp10-.Lfunc_begin0
661	.xword	0
662	.xword	0
663.Ldebug_ranges2:
664	.xword	.Ltmp1-.Lfunc_begin0
665	.xword	.Ltmp3-.Lfunc_begin0
666	.xword	.Ltmp5-.Lfunc_begin0
667	.xword	.Ltmp6-.Lfunc_begin0
668	.xword	.Ltmp7-.Lfunc_begin0
669	.xword	.Ltmp8-.Lfunc_begin0
670	.xword	.Ltmp9-.Lfunc_begin0
671	.xword	.Ltmp10-.Lfunc_begin0
672	.xword	0
673	.xword	0
674.Ldebug_ranges3:
675	.xword	.Ltmp3-.Lfunc_begin0
676	.xword	.Ltmp4-.Lfunc_begin0
677	.xword	.Ltmp10-.Lfunc_begin0
678	.xword	.Ltmp11-.Lfunc_begin0
679	.xword	0
680	.xword	0
681	.section	.debug_macinfo,"",@progbits
682	.byte	0                       // End Of Macro List Mark
683
684	.ident	"clang version 9.0.0 "
685	.section	".note.GNU-stack","",@progbits
686	.section	.debug_line,"",@progbits
687.Lline_table_start0:
688