Timur Iskhodzhanov | f166f6c | 2014-01-30 01:39:17 +0000 | [diff] [blame] | 1 | ; RUN: llvm-as < %s | %llc_dwarf -asm-verbose -O0 | grep AT_specification | count 2 |
Devang Patel | 019922d | 2010-04-06 23:53:48 +0000 | [diff] [blame] | 2 | ; Radar 7833483 |
| 3 | ; Do not emit AT_specification for nested function foo. |
| 4 | |
| 5 | %class.A = type { i8 } |
| 6 | %class.B = type { i8 } |
| 7 | |
| 8 | define i32 @main() ssp { |
| 9 | entry: |
| 10 | %retval = alloca i32, align 4 ; <i32*> [#uses=3] |
| 11 | %b = alloca %class.A, align 1 ; <%class.A*> [#uses=1] |
| 12 | store i32 0, i32* %retval |
| 13 | call void @llvm.dbg.declare(metadata !{%class.A* %b}, metadata !0), !dbg !14 |
| 14 | %call = call i32 @_ZN1B2fnEv(%class.A* %b), !dbg !15 ; <i32> [#uses=1] |
| 15 | store i32 %call, i32* %retval, !dbg !15 |
| 16 | %0 = load i32* %retval, !dbg !16 ; <i32> [#uses=1] |
| 17 | ret i32 %0, !dbg !16 |
| 18 | } |
| 19 | |
| 20 | declare void @llvm.dbg.declare(metadata, metadata) nounwind readnone |
| 21 | |
| 22 | define linkonce_odr i32 @_ZN1B2fnEv(%class.A* %this) ssp align 2 { |
| 23 | entry: |
| 24 | %retval = alloca i32, align 4 ; <i32*> [#uses=2] |
| 25 | %this.addr = alloca %class.A*, align 8 ; <%class.A**> [#uses=2] |
| 26 | %a = alloca %class.A, align 1 ; <%class.A*> [#uses=1] |
| 27 | %i = alloca i32, align 4 ; <i32*> [#uses=2] |
| 28 | store %class.A* %this, %class.A** %this.addr |
| 29 | call void @llvm.dbg.declare(metadata !{%class.A** %this.addr}, metadata !17), !dbg !18 |
| 30 | %this1 = load %class.A** %this.addr ; <%class.A*> [#uses=0] |
| 31 | call void @llvm.dbg.declare(metadata !{%class.A* %a}, metadata !19), !dbg !27 |
| 32 | call void @llvm.dbg.declare(metadata !{i32* %i}, metadata !28), !dbg !29 |
| 33 | %call = call i32 @_ZZN1B2fnEvEN1A3fooEv(%class.A* %a), !dbg !30 ; <i32> [#uses=1] |
| 34 | store i32 %call, i32* %i, !dbg !30 |
| 35 | %tmp = load i32* %i, !dbg !31 ; <i32> [#uses=1] |
| 36 | store i32 %tmp, i32* %retval, !dbg !31 |
| 37 | %0 = load i32* %retval, !dbg !32 ; <i32> [#uses=1] |
| 38 | ret i32 %0, !dbg !32 |
| 39 | } |
| 40 | |
| 41 | define internal i32 @_ZZN1B2fnEvEN1A3fooEv(%class.A* %this) ssp align 2 { |
| 42 | entry: |
| 43 | %retval = alloca i32, align 4 ; <i32*> [#uses=2] |
| 44 | %this.addr = alloca %class.A*, align 8 ; <%class.A**> [#uses=2] |
| 45 | store %class.A* %this, %class.A** %this.addr |
| 46 | call void @llvm.dbg.declare(metadata !{%class.A** %this.addr}, metadata !33), !dbg !34 |
| 47 | %this1 = load %class.A** %this.addr ; <%class.A*> [#uses=0] |
| 48 | store i32 42, i32* %retval, !dbg !35 |
| 49 | %0 = load i32* %retval, !dbg !35 ; <i32> [#uses=1] |
| 50 | ret i32 %0, !dbg !35 |
| 51 | } |
| 52 | |
David Blaikie | e5a2f70 | 2013-03-08 00:23:31 +0000 | [diff] [blame] | 53 | !llvm.dbg.cu = !{!4} |
Manman Ren | 409558f | 2013-11-22 21:49:45 +0000 | [diff] [blame] | 54 | !llvm.module.flags = !{!40} |
David Blaikie | e5a2f70 | 2013-03-08 00:23:31 +0000 | [diff] [blame] | 55 | !37 = metadata !{metadata !2, metadata !10, metadata !23} |
| 56 | |
| 57 | !0 = metadata !{i32 786688, metadata !1, metadata !"b", metadata !3, i32 16, metadata !8, i32 0, null} ; [ DW_TAG_auto_variable ] |
Manman Ren | ed696c3 | 2013-07-24 22:23:00 +0000 | [diff] [blame] | 58 | !1 = metadata !{i32 786443, metadata !38, metadata !2, i32 15, i32 12, i32 0} ; [ DW_TAG_lexical_block ] |
| 59 | !2 = metadata !{i32 786478, metadata !38, metadata !3, metadata !"main", metadata !"main", metadata !"main", i32 15, metadata !5, i1 false, i1 true, i32 0, i32 0, null, i1 false, i32 0, i32 ()* @main, null, null, null, i32 15} ; [ DW_TAG_subprogram ] |
| 60 | !3 = metadata !{i32 786473, metadata !38} ; [ DW_TAG_file_type ] |
Manman Ren | cc4e4d8 | 2013-07-26 20:04:30 +0000 | [diff] [blame] | 61 | !4 = metadata !{i32 786449, metadata !38, i32 4, metadata !"clang 1.5", i1 false, metadata !"", i32 0, metadata !39, metadata !39, metadata !37, null, null, metadata !""} ; [ DW_TAG_compile_unit ] |
Manman Ren | 0ed70ae | 2013-08-26 22:39:55 +0000 | [diff] [blame] | 62 | !5 = metadata !{i32 786453, metadata !38, metadata !3, metadata !"", i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !6, i32 0, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ] |
Devang Patel | 019922d | 2010-04-06 23:53:48 +0000 | [diff] [blame] | 63 | !6 = metadata !{metadata !7} |
Manman Ren | ed696c3 | 2013-07-24 22:23:00 +0000 | [diff] [blame] | 64 | !7 = metadata !{i32 786468, metadata !38, metadata !3, metadata !"int", i32 0, i64 32, i64 32, i64 0, i32 0, i32 5} ; [ DW_TAG_base_type ] |
Manman Ren | 0ed70ae | 2013-08-26 22:39:55 +0000 | [diff] [blame] | 65 | !8 = metadata !{i32 786434, metadata !38, metadata !3, metadata !"B", i32 2, i64 8, i64 8, i64 0, i32 0, null, metadata !9, i32 0, null, null, null} ; [ DW_TAG_class_type ] [B] [line 2, size 8, align 8, offset 0] [def] [from ] |
Devang Patel | 019922d | 2010-04-06 23:53:48 +0000 | [diff] [blame] | 66 | !9 = metadata !{metadata !10} |
Manman Ren | ed696c3 | 2013-07-24 22:23:00 +0000 | [diff] [blame] | 67 | !10 = metadata !{i32 786478, metadata !38, metadata !8, metadata !"fn", metadata !"fn", metadata !"_ZN1B2fnEv", i32 4, metadata !11, i1 false, i1 true, i32 0, i32 0, null, i1 false, i32 0, i32 (%class.A*)* @_ZN1B2fnEv, null, null, null, i32 4} ; [ DW_TAG_subprogram ] |
Manman Ren | 0ed70ae | 2013-08-26 22:39:55 +0000 | [diff] [blame] | 68 | !11 = metadata !{i32 786453, metadata !38, metadata !3, metadata !"", i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !12, i32 0, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ] |
Devang Patel | 019922d | 2010-04-06 23:53:48 +0000 | [diff] [blame] | 69 | !12 = metadata !{metadata !7, metadata !13} |
Manman Ren | ed696c3 | 2013-07-24 22:23:00 +0000 | [diff] [blame] | 70 | !13 = metadata !{i32 786447, metadata !38, metadata !3, metadata !"", i32 0, i64 64, i64 64, i64 0, i32 64, metadata !8} ; [ DW_TAG_pointer_type ] |
Devang Patel | 019922d | 2010-04-06 23:53:48 +0000 | [diff] [blame] | 71 | !14 = metadata !{i32 16, i32 5, metadata !1, null} |
| 72 | !15 = metadata !{i32 17, i32 3, metadata !1, null} |
| 73 | !16 = metadata !{i32 18, i32 1, metadata !2, null} |
David Blaikie | e5a2f70 | 2013-03-08 00:23:31 +0000 | [diff] [blame] | 74 | !17 = metadata !{i32 786689, metadata !10, metadata !"this", metadata !3, i32 4, metadata !13, i32 0, null} ; [ DW_TAG_arg_variable ] |
Devang Patel | 019922d | 2010-04-06 23:53:48 +0000 | [diff] [blame] | 75 | !18 = metadata !{i32 4, i32 7, metadata !10, null} |
David Blaikie | e5a2f70 | 2013-03-08 00:23:31 +0000 | [diff] [blame] | 76 | !19 = metadata !{i32 786688, metadata !20, metadata !"a", metadata !3, i32 9, metadata !21, i32 0, null} ; [ DW_TAG_auto_variable ] |
Manman Ren | ed696c3 | 2013-07-24 22:23:00 +0000 | [diff] [blame] | 77 | !20 = metadata !{i32 786443, metadata !38, metadata !10, i32 4, i32 12, i32 0} ; [ DW_TAG_lexical_block ] |
Manman Ren | 0ed70ae | 2013-08-26 22:39:55 +0000 | [diff] [blame] | 78 | !21 = metadata !{i32 786434, metadata !38, metadata !10, metadata !"A", i32 5, i64 8, i64 8, i64 0, i32 0, null, metadata !22, i32 0, null, null, null} ; [ DW_TAG_class_type ] [A] [line 5, size 8, align 8, offset 0] [def] [from ] |
Devang Patel | 019922d | 2010-04-06 23:53:48 +0000 | [diff] [blame] | 79 | !22 = metadata !{metadata !23} |
Manman Ren | ed696c3 | 2013-07-24 22:23:00 +0000 | [diff] [blame] | 80 | !23 = metadata !{i32 786478, metadata !38, metadata !21, metadata !"foo", metadata !"foo", metadata !"_ZZN1B2fnEvEN1A3fooEv", i32 7, metadata !24, i1 false, i1 true, i32 0, i32 0, null, i1 false, i32 0, i32 (%class.A*)* @_ZZN1B2fnEvEN1A3fooEv, null, null, null, i32 7} ; [ DW_TAG_subprogram ] |
Manman Ren | 0ed70ae | 2013-08-26 22:39:55 +0000 | [diff] [blame] | 81 | !24 = metadata !{i32 786453, metadata !38, metadata !3, metadata !"", i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !25, i32 0, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ] |
Devang Patel | 019922d | 2010-04-06 23:53:48 +0000 | [diff] [blame] | 82 | !25 = metadata !{metadata !7, metadata !26} |
Manman Ren | ed696c3 | 2013-07-24 22:23:00 +0000 | [diff] [blame] | 83 | !26 = metadata !{i32 786447, metadata !38, metadata !3, metadata !"", i32 0, i64 64, i64 64, i64 0, i32 64, metadata !21} ; [ DW_TAG_pointer_type ] |
Devang Patel | 019922d | 2010-04-06 23:53:48 +0000 | [diff] [blame] | 84 | !27 = metadata !{i32 9, i32 7, metadata !20, null} |
David Blaikie | e5a2f70 | 2013-03-08 00:23:31 +0000 | [diff] [blame] | 85 | !28 = metadata !{i32 786688, metadata !20, metadata !"i", metadata !3, i32 10, metadata !7, i32 0, null} ; [ DW_TAG_auto_variable ] |
Devang Patel | 019922d | 2010-04-06 23:53:48 +0000 | [diff] [blame] | 86 | !29 = metadata !{i32 10, i32 9, metadata !20, null} |
| 87 | !30 = metadata !{i32 10, i32 5, metadata !20, null} |
| 88 | !31 = metadata !{i32 11, i32 5, metadata !20, null} |
| 89 | !32 = metadata !{i32 12, i32 3, metadata !10, null} |
David Blaikie | e5a2f70 | 2013-03-08 00:23:31 +0000 | [diff] [blame] | 90 | !33 = metadata !{i32 786689, metadata !23, metadata !"this", metadata !3, i32 7, metadata !26, i32 0, null} ; [ DW_TAG_arg_variable ] |
Devang Patel | 019922d | 2010-04-06 23:53:48 +0000 | [diff] [blame] | 91 | !34 = metadata !{i32 7, i32 11, metadata !23, null} |
| 92 | !35 = metadata !{i32 7, i32 19, metadata !36, null} |
Manman Ren | ed696c3 | 2013-07-24 22:23:00 +0000 | [diff] [blame] | 93 | !36 = metadata !{i32 786443, metadata !38, metadata !23, i32 7, i32 17, i32 0} ; [ DW_TAG_lexical_block ] |
| 94 | !38 = metadata !{metadata !"one.cc", metadata !"/tmp" } |
Manman Ren | cc4e4d8 | 2013-07-26 20:04:30 +0000 | [diff] [blame] | 95 | !39 = metadata !{i32 0} |
Manman Ren | 409558f | 2013-11-22 21:49:45 +0000 | [diff] [blame] | 96 | !40 = metadata !{i32 1, metadata !"Debug Info Version", i32 1} |