blob: 5b21225b91e96657c72fe79abf438f9fadd11dbd [file] [log] [blame]
Adrian Prantl88dd6972013-12-20 00:37:18 +00001; REQUIRES: object-emission
Adrian Prantl99c7af22013-12-18 21:48:19 +00002; Test (r)value qualifiers on C++11 non-static member functions.
3; Generated from tools/clang/test/CodeGenCXX/debug-info-qualifiers.cpp
4;
Adrian Prantlfeae63d2013-12-19 01:41:16 +00005; class A {
6; public:
7; void l() const &;
8; void r() const &&;
9; };
10;
11; void g() {
12; A a;
13; auto pl = &A::l;
14; auto pr = &A::r;
15; }
16;
Timur Iskhodzhanovf166f6c2014-01-30 01:39:17 +000017; RUN: %llc_dwarf -filetype=obj -O0 < %s | llvm-dwarfdump - | FileCheck %s
Adrian Prantl99c7af22013-12-18 21:48:19 +000018; CHECK: DW_TAG_subroutine_type DW_CHILDREN_yes
19; CHECK-NEXT: DW_AT_reference DW_FORM_flag_present
20; CHECK: DW_TAG_subroutine_type DW_CHILDREN_yes
21; CHECK-NEXT: DW_AT_rvalue_reference DW_FORM_flag_present
22;
23; CHECK: DW_TAG_subprogram
Adrian Prantl99c7af22013-12-18 21:48:19 +000024; CHECK-NOT: DW_TAG_subprogram
25; CHECK: DW_AT_name {{.*}}"l"
26; CHECK-NOT: DW_TAG_subprogram
27; CHECK: DW_AT_reference [DW_FORM_flag_present] (true)
28
29; CHECK: DW_TAG_subprogram
30; CHECK-NOT: DW_TAG_subprogram
31; CHECK: DW_AT_name {{.*}}"r"
32; CHECK-NOT: DW_TAG_subprogram
33; CHECK: DW_AT_rvalue_reference [DW_FORM_flag_present] (true)
34
Adrian Prantl99c7af22013-12-18 21:48:19 +000035%class.A = type { i8 }
36
37; Function Attrs: nounwind
38define void @_Z1gv() #0 {
39 %a = alloca %class.A, align 1
40 %pl = alloca { i64, i64 }, align 8
41 %pr = alloca { i64, i64 }, align 8
Duncan P. N. Exon Smith176b6912014-10-03 20:01:09 +000042 call void @llvm.dbg.declare(metadata !{%class.A* %a}, metadata !24, metadata !{metadata !"0x102"}), !dbg !25
43 call void @llvm.dbg.declare(metadata !{{ i64, i64 }* %pl}, metadata !26, metadata !{metadata !"0x102"}), !dbg !31
Adrian Prantl99c7af22013-12-18 21:48:19 +000044 store { i64, i64 } { i64 ptrtoint (void (%class.A*)* @_ZNKR1A1lEv to i64), i64 0 }, { i64, i64 }* %pl, align 8, !dbg !31
Duncan P. N. Exon Smith176b6912014-10-03 20:01:09 +000045 call void @llvm.dbg.declare(metadata !{{ i64, i64 }* %pr}, metadata !32, metadata !{metadata !"0x102"}), !dbg !35
Adrian Prantl99c7af22013-12-18 21:48:19 +000046 store { i64, i64 } { i64 ptrtoint (void (%class.A*)* @_ZNKO1A1rEv to i64), i64 0 }, { i64, i64 }* %pr, align 8, !dbg !35
47 ret void, !dbg !36
48}
49
50; Function Attrs: nounwind readnone
Adrian Prantl87b7eb92014-10-01 18:55:02 +000051declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
Adrian Prantl99c7af22013-12-18 21:48:19 +000052
53declare void @_ZNKR1A1lEv(%class.A*)
54
55declare void @_ZNKO1A1rEv(%class.A*)
56
57attributes #0 = { nounwind }
58attributes #1 = { nounwind readnone }
59
60!llvm.dbg.cu = !{!0}
61!llvm.module.flags = !{!21, !22}
62!llvm.ident = !{!23}
63
Duncan P. N. Exon Smith176b6912014-10-03 20:01:09 +000064!0 = metadata !{metadata !"0x11\004\00clang version 3.5 \000\00\000\00\000", metadata !1, metadata !2, metadata !3, metadata !16, metadata !2, metadata !2} ; [ DW_TAG_compile_unit ] [] [DW_LANG_C_plus_plus]
Adrian Prantl99c7af22013-12-18 21:48:19 +000065!1 = metadata !{metadata !"", metadata !""}
David Blaikie5e390e42014-02-04 01:23:52 +000066!2 = metadata !{}
Adrian Prantl99c7af22013-12-18 21:48:19 +000067!3 = metadata !{metadata !4}
Duncan P. N. Exon Smith176b6912014-10-03 20:01:09 +000068!4 = metadata !{metadata !"0x2\00A\002\008\008\000\000\000", metadata !5, null, null, metadata !6, null, null, metadata !"_ZTS1A"} ; [ DW_TAG_class_type ] [A] [line 2, size 8, align 8, offset 0] [def] [from ]
Adrian Prantl99c7af22013-12-18 21:48:19 +000069!5 = metadata !{metadata !"debug-info-qualifiers.cpp", metadata !""}
70!6 = metadata !{metadata !7, metadata !13}
Duncan P. N. Exon Smith176b6912014-10-03 20:01:09 +000071!7 = metadata !{metadata !"0x2e\00l\00l\00_ZNKR1A1lEv\005\000\000\000\006\0016640\000\005", metadata !5, metadata !"_ZTS1A", metadata !8, null, null, null, i32 0, metadata !12} ; [ DW_TAG_subprogram ] [line 5] [reference] [l]
72!8 = metadata !{metadata !"0x15\00\000\000\000\000\0016384\000", i32 0, null, null, metadata !9, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [reference] [from ]
Adrian Prantl99c7af22013-12-18 21:48:19 +000073!9 = metadata !{null, metadata !10}
Duncan P. N. Exon Smith176b6912014-10-03 20:01:09 +000074!10 = metadata !{metadata !"0xf\00\000\0064\0064\000\001088", null, null, metadata !11} ; [ DW_TAG_pointer_type ] [line 0, size 64, align 64, offset 0] [artificial] [from ]
75!11 = metadata !{metadata !"0x26\00\000\000\000\000\000", null, null, metadata !"_ZTS1A"} ; [ DW_TAG_const_type ] [line 0, size 0, align 0, offset 0] [from _ZTS1A]
Adrian Prantl99c7af22013-12-18 21:48:19 +000076!12 = metadata !{i32 786468}
Duncan P. N. Exon Smith176b6912014-10-03 20:01:09 +000077!13 = metadata !{metadata !"0x2e\00r\00r\00_ZNKO1A1rEv\007\000\000\000\006\0033024\000\007", metadata !5, metadata !"_ZTS1A", metadata !14, null, null, null, i32 0, metadata !15} ; [ DW_TAG_subprogram ] [line 7] [rvalue reference] [r]
78!14 = metadata !{metadata !"0x15\00\000\000\000\000\0032768\000", i32 0, null, null, metadata !9, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [rvalue reference] [from ]
Adrian Prantl99c7af22013-12-18 21:48:19 +000079!15 = metadata !{i32 786468}
80!16 = metadata !{metadata !17}
Duncan P. N. Exon Smith176b6912014-10-03 20:01:09 +000081!17 = metadata !{metadata !"0x2e\00g\00g\00_Z1gv\0010\000\001\000\006\00256\000\0010", metadata !5, metadata !18, metadata !19, null, void ()* @_Z1gv, null, null, metadata !2} ; [ DW_TAG_subprogram ] [line 10] [def] [g]
82!18 = metadata !{metadata !"0x29", metadata !5} ; [ DW_TAG_file_type ]
83!19 = metadata !{metadata !"0x15\00\000\000\000\000\000\000", i32 0, null, null, metadata !20, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ]
Adrian Prantl99c7af22013-12-18 21:48:19 +000084!20 = metadata !{null}
85!21 = metadata !{i32 2, metadata !"Dwarf Version", i32 4}
Duncan P. N. Exon Smith176b6912014-10-03 20:01:09 +000086!22 = metadata !{i32 1, metadata !"Debug Info Version", i32 2}
Adrian Prantl99c7af22013-12-18 21:48:19 +000087!23 = metadata !{metadata !"clang version 3.5 "}
Duncan P. N. Exon Smith176b6912014-10-03 20:01:09 +000088!24 = metadata !{metadata !"0x100\00a\0011\000", metadata !17, metadata !18, metadata !4} ; [ DW_TAG_auto_variable ] [a] [line 11]
Adrian Prantl99c7af22013-12-18 21:48:19 +000089!25 = metadata !{i32 11, i32 0, metadata !17, null}
Duncan P. N. Exon Smith176b6912014-10-03 20:01:09 +000090!26 = metadata !{metadata !"0x100\00pl\0016\000", metadata !17, metadata !18, metadata !27} ; [ DW_TAG_auto_variable ] [pl] [line 16]
91!27 = metadata !{metadata !"0x1f\00\000\000\000\000\000", null, null, metadata !28, metadata !"_ZTS1A"} ; [ DW_TAG_ptr_to_member_type ] [line 0, size 0, align 0, offset 0] [from ]
92!28 = metadata !{metadata !"0x15\00\000\000\000\000\0016384\000", i32 0, null, null, metadata !29, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [reference] [from ]
Adrian Prantl99c7af22013-12-18 21:48:19 +000093!29 = metadata !{null, metadata !30}
Duncan P. N. Exon Smith176b6912014-10-03 20:01:09 +000094!30 = metadata !{metadata !"0xf\00\000\0064\0064\000\001088", null, null, metadata !"_ZTS1A"} ; [ DW_TAG_pointer_type ] [line 0, size 64, align 64, offset 0] [artificial] [from _ZTS1A]
Adrian Prantl99c7af22013-12-18 21:48:19 +000095!31 = metadata !{i32 16, i32 0, metadata !17, null}
Duncan P. N. Exon Smith176b6912014-10-03 20:01:09 +000096!32 = metadata !{metadata !"0x100\00pr\0021\000", metadata !17, metadata !18, metadata !33} ; [ DW_TAG_auto_variable ] [pr] [line 21]
97!33 = metadata !{metadata !"0x1f\00\000\000\000\000\000", null, null, metadata !34, metadata !"_ZTS1A"} ; [ DW_TAG_ptr_to_member_type ] [line 0, size 0, align 0, offset 0] [from ]
98!34 = metadata !{metadata !"0x15\00\000\000\000\000\0032768\000", i32 0, null, null, metadata !29, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [rvalue reference] [from ]
Adrian Prantl99c7af22013-12-18 21:48:19 +000099!35 = metadata !{i32 21, i32 0, metadata !17, null}
100!36 = metadata !{i32 22, i32 0, metadata !17, null}