Mind adding the C++ you used for the test to the comments in the test please?<br><br><div>Thanks!</div><div><br></div><div>-eric</div><br><div>On Wed Dec 18 2013 at 1:54:57 PM, Adrian Prantl <<a href="mailto:aprantl@apple.com">aprantl@apple.com</a>> wrote:</div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: adrian<br>
Date: Wed Dec 18 15:48:19 2013<br>
New Revision: 197613<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=197613&view=rev" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project?rev=197613&view=rev</a><br>
Log:<br>
Debug info: Implement (rvalue) reference qualifiers for C++11 non-static<br>
member functions. Paired commit with CFE.<br>
<br>
rdar://problem/15356637<br>
<br>
Added:<br>
    llvm/trunk/test/DebugInfo/<u></u>debug-info-qualifiers.ll<br>
Modified:<br>
    llvm/trunk/include/llvm/<u></u>DIBuilder.h<br>
    llvm/trunk/include/llvm/<u></u>DebugInfo.h<br>
    llvm/trunk/lib/CodeGen/<u></u>AsmPrinter/DwarfUnit.cpp<br>
    llvm/trunk/lib/IR/DIBuilder.<u></u>cpp<br>
    llvm/trunk/lib/IR/DebugInfo.<u></u>cpp<br>
<br>
Modified: llvm/trunk/include/llvm/<u></u>DIBuilder.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DIBuilder.h?rev=197613&r1=197612&r2=197613&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/include/<u></u>llvm/DIBuilder.h?rev=197613&<u></u>r1=197612&r2=197613&view=diff</a><br>

==============================<u></u>==============================<u></u>==================<br>
--- llvm/trunk/include/llvm/<u></u>DIBuilder.h (original)<br>
+++ llvm/trunk/include/llvm/<u></u>DIBuilder.h Wed Dec 18 15:48:19 2013<br>
@@ -415,10 +415,13 @@ namespace llvm {<br>
         StringRef UniqueIdentifier = StringRef());<br>
<br>
     /// createSubroutineType - Create subroutine type.<br>
-    /// @param File           File in which this subroutine is defined.<br>
-    /// @param ParameterTypes An array of subroutine parameter types. This<br>
-    ///                       includes return type at 0th index.<br>
-    DICompositeType createSubroutineType(DIFile File, DIArray ParameterTypes);<br>
+    /// @param File            File in which this subroutine is defined.<br>
+    /// @param ParameterTypes  An array of subroutine parameter types. This<br>
+    ///                        includes return type at 0th index.<br>
+    /// @param Flags           E.g.: LValueReference.<br>
+    ///                        These flags are used to emit dwarf attributes.<br>
+    DICompositeType createSubroutineType(DIFile File, DIArray ParameterTypes,<br>
+                                         unsigned Flags = 0);<br>
<br>
     /// createArtificialType - Create a new DIType with "artificial" flag set.<br>
     DIType createArtificialType(DIType Ty);<br>
<br>
Modified: llvm/trunk/include/llvm/<u></u>DebugInfo.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo.h?rev=197613&r1=197612&r2=197613&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/include/<u></u>llvm/DebugInfo.h?rev=197613&<u></u>r1=197612&r2=197613&view=diff</a><br>

==============================<u></u>==============================<u></u>==================<br>
--- llvm/trunk/include/llvm/<u></u>DebugInfo.h (original)<br>
+++ llvm/trunk/include/llvm/<u></u>DebugInfo.h Wed Dec 18 15:48:19 2013<br>
@@ -64,20 +64,22 @@ class DIDescriptor {<br>
<br>
 public:<br>
   enum {<br>
-    FlagPrivate = 1 << 0,<br>
-    FlagProtected = 1 << 1,<br>
-    FlagFwdDecl = 1 << 2,<br>
-    FlagAppleBlock = 1 << 3,<br>
-    FlagBlockByrefStruct = 1 << 4,<br>
-    FlagVirtual = 1 << 5,<br>
-    FlagArtificial = 1 << 6,<br>
-    FlagExplicit = 1 << 7,<br>
-    FlagPrototyped = 1 << 8,<br>
+    FlagPrivate           = 1 << 0,<br>
+    FlagProtected         = 1 << 1,<br>
+    FlagFwdDecl           = 1 << 2,<br>
+    FlagAppleBlock        = 1 << 3,<br>
+    FlagBlockByrefStruct  = 1 << 4,<br>
+    FlagVirtual           = 1 << 5,<br>
+    FlagArtificial        = 1 << 6,<br>
+    FlagExplicit          = 1 << 7,<br>
+    FlagPrototyped        = 1 << 8,<br>
     FlagObjcClassComplete = 1 << 9,<br>
-    FlagObjectPointer = 1 << 10,<br>
-    FlagVector = 1 << 11,<br>
-    FlagStaticMember = 1 << 12,<br>
-    FlagIndirectVariable = 1 << 13<br>
+    FlagObjectPointer     = 1 << 10,<br>
+    FlagVector            = 1 << 11,<br>
+    FlagStaticMember      = 1 << 12,<br>
+    FlagIndirectVariable  = 1 << 13,<br>
+    FlagLValueReference   = 1 << 14,<br>
+    FlagRValueReference   = 1 << 15<br>
   };<br>
<br>
 protected:<br>
@@ -313,6 +315,12 @@ public:<br>
   }<br>
   bool isVector() const { return (getFlags() & FlagVector) != 0; }<br>
   bool isStaticMember() const { return (getFlags() & FlagStaticMember) != 0; }<br>
+  bool isLValueReference() const {<br>
+    return (getFlags() & FlagLValueReference) != 0;<br>
+  }<br>
+  bool isRValueReference() const {<br>
+    return (getFlags() & FlagRValueReference) != 0;<br>
+  }<br>
   bool isValid() const { return DbgNode && isType(); }<br>
<br>
   /// replaceAllUsesWith - Replace all uses of debug info referenced by<br>
@@ -470,6 +478,19 @@ public:<br>
     return (getUnsignedField(13) & FlagPrototyped) != 0;<br>
   }<br>
<br>
+  /// Return true if this subprogram is a C++11 reference-qualified<br>
+  /// non-static member function (void foo() &).<br>
+  unsigned isLValueReference() const {<br>
+    return (getUnsignedField(13) & FlagLValueReference) != 0;<br>
+  }<br>
+<br>
+  /// Return true if this subprogram is a C++11<br>
+  /// rvalue-reference-qualified non-static member function<br>
+  /// (void foo() &&).<br>
+  unsigned isRValueReference() const {<br>
+    return (getUnsignedField(13) & FlagRValueReference) != 0;<br>
+  }<br>
+<br>
   unsigned isOptimized() const;<br>
<br>
   /// Verify - Verify that a subprogram descriptor is well formed.<br>
<br>
Modified: llvm/trunk/lib/CodeGen/<u></u>AsmPrinter/DwarfUnit.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp?rev=197613&r1=197612&r2=197613&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/lib/<u></u>CodeGen/AsmPrinter/DwarfUnit.<u></u>cpp?rev=197613&r1=197612&r2=<u></u>197613&view=diff</a><br>

==============================<u></u>==============================<u></u>==================<br>
--- llvm/trunk/lib/CodeGen/<u></u>AsmPrinter/DwarfUnit.cpp (original)<br>
+++ llvm/trunk/lib/CodeGen/<u></u>AsmPrinter/DwarfUnit.cpp Wed Dec 18 15:48:19 2013<br>
@@ -1218,6 +1218,12 @@ void DwarfUnit::constructTypeDIE(<u></u>DIE &Bu<br>
         (Language == dwarf::DW_LANG_C89 || Language == dwarf::DW_LANG_C99 ||<br>
          Language == dwarf::DW_LANG_ObjC))<br>
       addFlag(&Buffer, dwarf::DW_AT_prototyped);<br>
+<br>
+    if (CTy.isLValueReference())<br>
+      addFlag(&Buffer, dwarf::DW_AT_reference);<br>
+<br>
+    if (CTy.isRValueReference())<br>
+      addFlag(&Buffer, dwarf::DW_AT_rvalue_reference)<u></u>;<br>
   } break;<br>
   case dwarf::DW_TAG_structure_type:<br>
   case dwarf::DW_TAG_union_type:<br>
@@ -1520,6 +1526,12 @@ DIE *DwarfUnit::<u></u>getOrCreateSubprogramDIE<br>
     addUInt(SPDie, dwarf::DW_AT_APPLE_isa, dwarf::DW_FORM_flag, isa);<br>
   }<br>
<br>
+  if (SP.isLValueReference())<br>
+    addFlag(SPDie, dwarf::DW_AT_reference);<br>
+<br>
+  if (SP.isRValueReference())<br>
+    addFlag(SPDie, dwarf::DW_AT_rvalue_reference)<u></u>;<br>
+<br>
   return SPDie;<br>
 }<br>
<br>
<br>
Modified: llvm/trunk/lib/IR/DIBuilder.<u></u>cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/DIBuilder.cpp?rev=197613&r1=197612&r2=197613&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/lib/IR/<u></u>DIBuilder.cpp?rev=197613&r1=<u></u>197612&r2=197613&view=diff</a><br>

==============================<u></u>==============================<u></u>==================<br>
--- llvm/trunk/lib/IR/DIBuilder.<u></u>cpp (original)<br>
+++ llvm/trunk/lib/IR/DIBuilder.<u></u>cpp Wed Dec 18 15:48:19 2013<br>
@@ -706,7 +706,8 @@ DICompositeType DIBuilder::createUnionTy<br>
<br>
 /// createSubroutineType - Create subroutine type.<br>
 DICompositeType DIBuilder::<u></u>createSubroutineType(DIFile File,<br>
-                                                DIArray ParameterTypes) {<br>
+                                                DIArray ParameterTypes,<br>
+                                                unsigned Flags) {<br>
   // TAG_subroutine_type is encoded in DICompositeType format.<br>
   Value *Elts[] = {<br>
     GetTagConstant(VMContext, dwarf::DW_TAG_subroutine_type)<u></u>,<br>
@@ -717,7 +718,7 @@ DICompositeType DIBuilder::createSubrout<br>
     ConstantInt::get(Type::<u></u>getInt64Ty(VMContext), 0), // Size<br>
     ConstantInt::get(Type::<u></u>getInt64Ty(VMContext), 0), // Align<br>
     ConstantInt::get(Type::<u></u>getInt64Ty(VMContext), 0), // Offset<br>
-    ConstantInt::get(Type::<u></u>getInt32Ty(VMContext), 0), // Flags<br>
+    ConstantInt::get(Type::<u></u>getInt32Ty(VMContext), Flags), // Flags<br>
     NULL,<br>
     ParameterTypes,<br>
     ConstantInt::get(Type::<u></u>getInt32Ty(VMContext), 0),<br>
<br>
Modified: llvm/trunk/lib/IR/DebugInfo.<u></u>cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/DebugInfo.cpp?rev=197613&r1=197612&r2=197613&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/lib/IR/<u></u>DebugInfo.cpp?rev=197613&r1=<u></u>197612&r2=197613&view=diff</a><br>

==============================<u></u>==============================<u></u>==================<br>
--- llvm/trunk/lib/IR/DebugInfo.<u></u>cpp (original)<br>
+++ llvm/trunk/lib/IR/DebugInfo.<u></u>cpp Wed Dec 18 15:48:19 2013<br>
@@ -504,6 +504,10 @@ bool DICompositeType::Verify() const {<br>
   if (!fieldIsMDString(DbgNode, 14))<br>
     return false;<br>
<br>
+  // A subroutine type can't be both & and &&.<br>
+  if (isLValueReference() && isRValueReference())<br>
+    return false;<br>
+<br>
   return DbgNode->getNumOperands() == 15;<br>
 }<br>
<br>
@@ -520,6 +524,11 @@ bool DISubprogram::Verify() const {<br>
   // Containing type @ field 12.<br>
   if (!fieldIsTypeRef(DbgNode, 12))<br>
     return false;<br>
+<br>
+  // A subprogram can't be both & and &&.<br>
+  if (isLValueReference() && isRValueReference())<br>
+    return false;<br>
+<br>
   return DbgNode->getNumOperands() == 20;<br>
 }<br>
<br>
@@ -1297,6 +1306,12 @@ void DIType::printInternal(raw_<u></u>ostream &<br>
     OS << " [vector]";<br>
   if (isStaticMember())<br>
     OS << " [static]";<br>
+<br>
+  if (isLValueReference())<br>
+    OS << " [reference]";<br>
+<br>
+  if (isRValueReference())<br>
+    OS << " [rvalue reference]";<br>
 }<br>
<br>
 void DIDerivedType::printInternal(<u></u>raw_ostream &OS) const {<br>
@@ -1336,6 +1351,12 @@ void DISubprogram::printInternal(<u></u>raw_ost<br>
   else if (isProtected())<br>
     OS << " [protected]";<br>
<br>
+  if (isLValueReference())<br>
+    OS << " [reference]";<br>
+<br>
+  if (isRValueReference())<br>
+    OS << " [rvalue reference]";<br>
+<br>
   StringRef Res = getName();<br>
   if (!Res.empty())<br>
     OS << " [" << Res << ']';<br>
<br>
Added: llvm/trunk/test/DebugInfo/<u></u>debug-info-qualifiers.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/debug-info-qualifiers.ll?rev=197613&view=auto" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/test/<u></u>DebugInfo/debug-info-<u></u>qualifiers.ll?rev=197613&view=<u></u>auto</a><br>

==============================<u></u>==============================<u></u>==================<br>
--- llvm/trunk/test/DebugInfo/<u></u>debug-info-qualifiers.ll (added)<br>
+++ llvm/trunk/test/DebugInfo/<u></u>debug-info-qualifiers.ll Wed Dec 18 15:48:19 2013<br>
@@ -0,0 +1,93 @@<br>
+; Test (r)value qualifiers on C++11 non-static member functions.<br>
+; Generated from tools/clang/test/CodeGenCXX/<u></u>debug-info-qualifiers.cpp<br>
+;<br>
+; RUN: llc -filetype=obj -O0 < %s | llvm-dwarfdump - | FileCheck %s<br>
+; CHECK: DW_TAG_subroutine_type     DW_CHILDREN_yes<br>
+; CHECK-NEXT: DW_AT_reference  DW_FORM_flag_present<br>
+; CHECK: DW_TAG_subroutine_type     DW_CHILDREN_yes<br>
+; CHECK-NEXT: DW_AT_rvalue_reference DW_FORM_flag_present<br>
+;<br>
+; CHECK: DW_TAG_subprogram<br>
+;<br>
+; CHECK: DW_TAG_subprogram<br>
+; CHECK-NOT: DW_TAG_subprogram<br>
+; CHECK:   DW_AT_name {{.*}}"l"<br>
+; CHECK-NOT: DW_TAG_subprogram<br>
+; CHECK:   DW_AT_reference [DW_FORM_flag_present] (true)<br>
+<br>
+; CHECK: DW_TAG_subprogram<br>
+; CHECK-NOT: DW_TAG_subprogram<br>
+; CHECK:   DW_AT_name {{.*}}"r"<br>
+; CHECK-NOT: DW_TAG_subprogram<br>
+; CHECK:   DW_AT_rvalue_reference [DW_FORM_flag_present] (true)<br>
+<br>
+<br>
+target datalayout = "e-i64:64-f80:128-s:64-n8:16:<u></u>32:64-S128"<br>
+target triple = "x86_64-apple-darwin"<br>
+<br>
+%class.A = type { i8 }<br>
+<br>
+; Function Attrs: nounwind<br>
+define void @_Z1gv() #0 {<br>
+  %a = alloca %class.A, align 1<br>
+  %pl = alloca { i64, i64 }, align 8<br>
+  %pr = alloca { i64, i64 }, align 8<br>
+  call void @llvm.dbg.declare(metadata !{%class.A* %a}, metadata !24), !dbg !25<br>
+  call void @llvm.dbg.declare(metadata !{{ i64, i64 }* %pl}, metadata !26), !dbg !31<br>
+  store { i64, i64 } { i64 ptrtoint (void (%class.A*)* @_ZNKR1A1lEv to i64), i64 0 }, { i64, i64 }* %pl, align 8, !dbg !31<br>
+  call void @llvm.dbg.declare(metadata !{{ i64, i64 }* %pr}, metadata !32), !dbg !35<br>
+  store { i64, i64 } { i64 ptrtoint (void (%class.A*)* @_ZNKO1A1rEv to i64), i64 0 }, { i64, i64 }* %pr, align 8, !dbg !35<br>
+  ret void, !dbg !36<br>
+}<br>
+<br>
+; Function Attrs: nounwind readnone<br>
+declare void @llvm.dbg.declare(metadata, metadata) #1<br>
+<br>
+declare void @_ZNKR1A1lEv(%class.A*)<br>
+<br>
+declare void @_ZNKO1A1rEv(%class.A*)<br>
+<br>
+attributes #0 = { nounwind }<br>
+attributes #1 = { nounwind readnone }<br>
+<br>
+!<a href="http://llvm.dbg.cu" target="_blank">llvm.dbg.cu</a> = !{!0}<br>
+!llvm.module.flags = !{!21, !22}<br>
+!llvm.ident = !{!23}<br>
+<br>
+!0 = metadata !{i32 786449, metadata !1, i32 4, metadata !"clang version 3.5 ", i1 false, metadata !"", i32 0, metadata !2, metadata !3, metadata !16, metadata !2, metadata !2, metadata !""} ; [ DW_TAG_compile_unit ] [] [DW_LANG_C_plus_plus]<br>

+!1 = metadata !{metadata !"", metadata !""}<br>
+!2 = metadata !{i32 0}<br>
+!3 = metadata !{metadata !4}<br>
+!4 = metadata !{i32 786434, metadata !5, null, metadata !"A", i32 2, i64 8, i64 8, i32 0, i32 0, null, metadata !6, i32 0, null, null, metadata !"_ZTS1A"} ; [ DW_TAG_class_type ] [A] [line 2, size 8, align 8, offset 0] [def] [from ]<br>

+!5 = metadata !{metadata !"debug-info-qualifiers.cpp", metadata !""}<br>
+!6 = metadata !{metadata !7, metadata !13}<br>
+!7 = metadata !{i32 786478, metadata !5, metadata !"_ZTS1A", metadata !"l", metadata !"l", metadata !"_ZNKR1A1lEv", i32 5, metadata !8, i1 false, i1 false, i32 0, i32 0, null, i32 16640, i1 false, null, null, i32 0, metadata !12, i32 5} ; [ DW_TAG_subprogram ] [line 5] [reference] [l]<br>

+!8 = metadata !{i32 786453, i32 0, null, metadata !"", i32 0, i64 0, i64 0, i64 0, i32 16384, null, metadata !9, i32 0, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [reference] [from ]<br>

+!9 = metadata !{null, metadata !10}<br>
+!10 = metadata !{i32 786447, null, null, metadata !"", i32 0, i64 64, i64 64, i64 0, i32 1088, metadata !11} ; [ DW_TAG_pointer_type ] [line 0, size 64, align 64, offset 0] [artificial] [from ]<br>
+!11 = metadata !{i32 786470, null, null, metadata !"", i32 0, i64 0, i64 0, i64 0, i32 0, metadata !"_ZTS1A"} ; [ DW_TAG_const_type ] [line 0, size 0, align 0, offset 0] [from _ZTS1A]<br>
+!12 = metadata !{i32 786468}<br>
+!13 = metadata !{i32 786478, metadata !5, metadata !"_ZTS1A", metadata !"r", metadata !"r", metadata !"_ZNKO1A1rEv", i32 7, metadata !14, i1 false, i1 false, i32 0, i32 0, null, i32 33024, i1 false, null, null, i32 0, metadata !15, i32 7} ; [ DW_TAG_subprogram ] [line 7] [rvalue reference] [r]<br>

+!14 = metadata !{i32 786453, i32 0, null, metadata !"", i32 0, i64 0, i64 0, i64 0, i32 32768, null, metadata !9, i32 0, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [rvalue reference] [from ]<br>

+!15 = metadata !{i32 786468}<br>
+!16 = metadata !{metadata !17}<br>
+!17 = metadata !{i32 786478, metadata !5, metadata !18, metadata !"g", metadata !"g", metadata !"_Z1gv", i32 10, metadata !19, i1 false, i1 true, i32 0, i32 0, null, i32 256, i1 false, void ()* @_Z1gv, null, null, metadata !2, i32 10} ; [ DW_TAG_subprogram ] [line 10] [def] [g]<br>

+!18 = metadata !{i32 786473, metadata !5}         ; [ DW_TAG_file_type ]<br>
+!19 = metadata !{i32 786453, i32 0, null, metadata !"", i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !20, i32 0, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ]<br>

+!20 = metadata !{null}<br>
+!21 = metadata !{i32 2, metadata !"Dwarf Version", i32 4}<br>
+!22 = metadata !{i32 1, metadata !"Debug Info Version", i32 1}<br>
+!23 = metadata !{metadata !"clang version 3.5 "}<br>
+!24 = metadata !{i32 786688, metadata !17, metadata !"a", metadata !18, i32 11, metadata !4, i32 0, i32 0} ; [ DW_TAG_auto_variable ] [a] [line 11]<br>
+!25 = metadata !{i32 11, i32 0, metadata !17, null}<br>
+!26 = metadata !{i32 786688, metadata !17, metadata !"pl", metadata !18, i32 16, metadata !27, i32 0, i32 0} ; [ DW_TAG_auto_variable ] [pl] [line 16]<br>
+!27 = metadata !{i32 786463, null, null, null, i32 0, i64 0, i64 0, i64 0, i32 0, metadata !28, metadata !"_ZTS1A"} ; [ DW_TAG_ptr_to_member_type ] [line 0, size 0, align 0, offset 0] [from ]<br>
+!28 = metadata !{i32 786453, i32 0, null, metadata !"", i32 0, i64 0, i64 0, i64 0, i32 16384, null, metadata !29, i32 0, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [reference] [from ]<br>

+!29 = metadata !{null, metadata !30}<br>
+!30 = metadata !{i32 786447, null, null, metadata !"", i32 0, i64 64, i64 64, i64 0, i32 1088, metadata !"_ZTS1A"} ; [ DW_TAG_pointer_type ] [line 0, size 64, align 64, offset 0] [artificial] [from _ZTS1A]<br>

+!31 = metadata !{i32 16, i32 0, metadata !17, null}<br>
+!32 = metadata !{i32 786688, metadata !17, metadata !"pr", metadata !18, i32 21, metadata !33, i32 0, i32 0} ; [ DW_TAG_auto_variable ] [pr] [line 21]<br>
+!33 = metadata !{i32 786463, null, null, null, i32 0, i64 0, i64 0, i64 0, i32 0, metadata !34, metadata !"_ZTS1A"} ; [ DW_TAG_ptr_to_member_type ] [line 0, size 0, align 0, offset 0] [from ]<br>
+!34 = metadata !{i32 786453, i32 0, null, metadata !"", i32 0, i64 0, i64 0, i64 0, i32 32768, null, metadata !29, i32 0, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [rvalue reference] [from ]<br>

+!35 = metadata !{i32 21, i32 0, metadata !17, null}<br>
+!36 = metadata !{i32 22, i32 0, metadata !17, null}<br>
<br>
<br>
______________________________<u></u>_________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu" target="_blank">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/<u></u>mailman/listinfo/llvm-commits</a><br>
</blockquote>