<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Nov 18, 2014, at 9:23 AM, David Blaikie <<a href="mailto:dblaikie@gmail.com" class="">dblaikie@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><div class="gmail_extra"><br class="Apple-interchange-newline"><br class=""><div class="gmail_quote">On Mon, Nov 17, 2014 at 4:29 PM, Manman Ren<span class="Apple-converted-space"> </span><span dir="ltr" class=""><<a href="mailto:manman.ren@gmail.com" target="_blank" class="">manman.ren@gmail.com</a>></span><span class="Apple-converted-space"> </span>wrote:<br class=""><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;">Author: mren<br class="">Date: Mon Nov 17 18:29:08 2014<br class="">New Revision: 222195<br class=""><br class="">URL:<span class="Apple-converted-space"> </span><a href="http://llvm.org/viewvc/llvm-project?rev=222195&view=rev" target="_blank" class="">http://llvm.org/viewvc/llvm-project?rev=222195&view=rev</a><br class="">Log:<br class="">Debug Info: In DIBuilder, the context field of a global variable is updated to<br class="">use DIScopeRef.<br class=""><br class="">A paired commit at clang will follow to show cases where we will use an<br class="">identifer for the context of a global variable.<br class=""><br class=""><a href="rdar://18958417" class="">rdar://18958417</a><br class=""><br class="">Added:<br class="">   <span class="Apple-converted-space"> </span>llvm/trunk/test/DebugInfo/global-with-type-context.ll<br class="">Modified:<br class="">   <span class="Apple-converted-space"> </span>llvm/trunk/include/llvm/IR/DebugInfo.h<br class="">   <span class="Apple-converted-space"> </span>llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp<br class="">   <span class="Apple-converted-space"> </span>llvm/trunk/lib/IR/DIBuilder.cpp<br class="">   <span class="Apple-converted-space"> </span>llvm/trunk/lib/IR/DebugInfo.cpp<br class=""><br class="">Modified: llvm/trunk/include/llvm/IR/DebugInfo.h<br class="">URL:<span class="Apple-converted-space"> </span><a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/DebugInfo.h?rev=222195&r1=222194&r2=222195&view=diff" target="_blank" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/DebugInfo.h?rev=222195&r1=222194&r2=222195&view=diff</a><br class="">==============================================================================<br class="">--- llvm/trunk/include/llvm/IR/DebugInfo.h (original)<br class="">+++ llvm/trunk/include/llvm/IR/DebugInfo.h Mon Nov 17 18:29:08 2014<br class="">@@ -763,7 +763,7 @@ public:<br class="">   unsigned isLocalToUnit() const { return getHeaderFieldAs<bool>(5); }<br class="">   unsigned isDefinition() const { return getHeaderFieldAs<bool>(6); }<br class=""><br class="">-  DIScope getContext() const { return getFieldAs<DIScope>(1); }<br class="">+  DIScopeRef getContext() const { return getFieldAs<DIScopeRef>(1); }<br class="">   StringRef getFilename() const { return getFieldAs<DIFile>(2).getFilename(); }<br class="">   StringRef getDirectory() const {<br class="">     return getFieldAs<DIFile>(2).getDirectory();<br class=""><br class="">Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp<br class="">URL:<span class="Apple-converted-space"> </span><a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp?rev=222195&r1=222194&r2=222195&view=diff" target="_blank" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp?rev=222195&r1=222194&r2=222195&view=diff</a><br class="">==============================================================================<br class="">--- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp (original)<br class="">+++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp Mon Nov 17 18:29:08 2014<br class="">@@ -103,7 +103,7 @@ DIE *DwarfCompileUnit::getOrCreateGlobal<br class=""><br class="">   assert(GV.isGlobalVariable());<br class=""><br class="">-  DIScope GVContext = GV.getContext();<br class="">+  DIScope GVContext = DD->resolve(GV.getContext());<br class="">   DIType GTy = DD->resolve(GV.getType());<br class=""><br class="">   // Construct the context before querying for the existence of the DIE in<br class="">@@ -122,7 +122,7 @@ DIE *DwarfCompileUnit::getOrCreateGlobal<br class="">     DIE *VariableSpecDIE = getOrCreateStaticMemberDIE(SDMDecl);<br class="">     addDIEEntry(*VariableDIE, dwarf::DW_AT_specification, *VariableSpecDIE);<br class="">   } else {<br class="">-    DeclContext = GV.getContext();<br class="">+    DeclContext = resolve(GV.getContext());<br class="">     // Add name and type.<br class="">     addString(*VariableDIE, dwarf::DW_AT_name, GV.getDisplayName());<br class="">     addType(*VariableDIE, GTy);<br class=""><br class="">Modified: llvm/trunk/lib/IR/DIBuilder.cpp<br class="">URL:<span class="Apple-converted-space"> </span><a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/DIBuilder.cpp?rev=222195&r1=222194&r2=222195&view=diff" target="_blank" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/DIBuilder.cpp?rev=222195&r1=222194&r2=222195&view=diff</a><br class="">==============================================================================<br class="">--- llvm/trunk/lib/IR/DIBuilder.cpp (original)<br class="">+++ llvm/trunk/lib/IR/DIBuilder.cpp Mon Nov 17 18:29:08 2014<br class="">@@ -844,7 +844,7 @@ static DIGlobalVariable createGlobalVari<br class="">                       <span class="Apple-converted-space"> </span>.concat(isLocalToUnit)<br class="">                       <span class="Apple-converted-space"> </span>.concat(isDefinition)<br class="">                       <span class="Apple-converted-space"> </span>.get(VMContext),<br class="">-                   getNonCompileUnitScope(Context), F, Ty, Val,<br class="">+                   DIScope(getNonCompileUnitScope(Context)).getRef(), F, Ty, Val,<br class="">                   <span class="Apple-converted-space"> </span>DIDescriptor(Decl)};<br class=""><br class="">   return DIGlobalVariable(CreateFunc(Elts));<br class=""><br class="">Modified: llvm/trunk/lib/IR/DebugInfo.cpp<br class="">URL:<span class="Apple-converted-space"> </span><a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/DebugInfo.cpp?rev=222195&r1=222194&r2=222195&view=diff" target="_blank" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/DebugInfo.cpp?rev=222195&r1=222194&r2=222195&view=diff</a><br class="">==============================================================================<br class="">--- llvm/trunk/lib/IR/DebugInfo.cpp (original)<br class="">+++ llvm/trunk/lib/IR/DebugInfo.cpp Mon Nov 17 18:29:08 2014<br class="">@@ -567,8 +567,8 @@ bool DIGlobalVariable::Verify() const {<br class=""><br class="">   if (getDisplayName().empty())<br class="">     return false;<br class="">-  // Make sure context @ field 1 is an MDNode.<br class="">-  if (!fieldIsMDNode(DbgNode, 1))<br class="">+  // Make sure context @ field 1 is a ScopeRef.<br class="">+  if (!fieldIsScopeRef(DbgNode, 1))<br class="">     return false;<br class="">   // Make sure that type @ field 3 is a DITypeRef.<br class="">   if (!fieldIsTypeRef(DbgNode, 3))<br class="">@@ -1005,7 +1005,7 @@ void DebugInfoFinder::processModule(cons<br class="">       for (unsigned i = 0, e = GVs.getNumElements(); i != e; ++i) {<br class="">         DIGlobalVariable DIG(GVs.getElement(i));<br class="">         if (addGlobalVariable(DIG)) {<br class="">-          processScope(DIG.getContext());<br class="">+          processScope(DIG.getContext().resolve(TypeIdentifierMap));<br class="">           processType(DIG.getType().resolve(TypeIdentifierMap));<br class="">         }<br class="">       }<br class=""><br class="">Added: llvm/trunk/test/DebugInfo/global-with-type-context.ll<br class="">URL:<span class="Apple-converted-space"> </span><a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/global-with-type-context.ll?rev=222195&view=auto" target="_blank" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/global-with-type-context.ll?rev=222195&view=auto</a><br class="">==============================================================================<br class="">--- llvm/trunk/test/DebugInfo/global-with-type-context.ll (added)<br class="">+++ llvm/trunk/test/DebugInfo/global-with-type-context.ll Mon Nov 17 18:29:08 2014<br class="">@@ -0,0 +1,154 @@<br class="">+; REQUIRES: object-emission<br class="">+<br class="">+; RUN: %llc_dwarf -filetype=obj -O0 < %s > %t<br class="">+; RUN: llvm-dwarfdump -debug-dump=info %t | FileCheck %s<br class="">+<br class="">+; IR generated from clang -g with the following source:<br class="">+; struct F {<br class="">+;   static const int i = 2;<br class="">+;   virtual ~F();<br class="">+; };<br class="">+;<br class="">+; void f1() {<br class="">+;   int i = F::i;<br class="">+; }<br class="">+<br class="">+; Make sure we correctly handle context of a global variable being a type identifier.<br class="">+; CHECK:  [[STRUCT:.*]]: DW_TAG_structure_type<br class="">+; CHECK: DW_AT_name [DW_FORM_strp] {{.*}}= "F")<br class="">+; CHECK: DW_TAG_variable<br class=""></blockquote><div class=""><br class=""></div><div class="">This isn't a feature, it's a bug. <a href="http://llvm.org/bugs/show_bug.cgi?id=21511" target="_blank" class="">http://llvm.org/bugs/show_bug.cgi?id=21511</a> one that I need to fix (probably in the next few days).<br class=""><br class="">Once this bug is fixed, is your change needed?</div></div></div></div></div></blockquote><div><br class=""></div>Hi David,</div><div><br class=""></div><div>If we are sure that the context of a global variable is never going to be a type with identifier, this change will not be needed (it is redundant but it does not hurt).</div><div>If that is the case, we need to add an assertion to make sure it is never going to happen.</div><div>Otherwise, we still need this patch to link to the uniqued type context.</div><div><br class=""></div><div>If bug21511 is fixed, this testing case may no longer be valid (i,e we are not going to generate the .ll file from the .cpp file) and I will need to find another testing case.</div><div><br class=""></div><div>Thanks,</div><div>Manman</div><div><br class=""><blockquote type="cite" class=""><div class=""><div dir="ltr" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><div class="gmail_extra"><div class="gmail_quote"><div class=""> </div><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;">+; CHECK-NEXT: DW_AT_specification {{.*}} "i"<br class="">+; CHECK-NEXT: DW_AT_const_value [DW_FORM_sdata] (2)<br class="">+<br class="">+target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"<br class="">+target triple = "x86_64-apple-darwin14.0.0"<br class="">+<br class="">+; Function Attrs: nounwind<br class="">+define void @_Z2f1v() #0 {<br class="">+entry:<br class="">+  %i = alloca i32, align 4<br class="">+  call void @llvm.dbg.declare(metadata !{i32* %i}, metadata !29, metadata !30), !dbg !31<br class="">+  store i32 2, i32* %i, align 4, !dbg !31<br class="">+  ret void, !dbg !32<br class="">+}<br class="">+<br class="">+; Function Attrs: nounwind readnone<br class="">+declare void @llvm.dbg.declare(metadata, metadata, metadata) #1<br class="">+<br class="">+attributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-realign-stack" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }<br class="">+attributes #1 = { nounwind readnone }<br class="">+<br class="">+!<a href="http://llvm.dbg.cu/" target="_blank" class="">llvm.dbg.cu</a><span class="Apple-converted-space"> </span>= !{!0}<br class="">+!llvm.module.flags = !{!26, !27}<br class="">+!llvm.ident = !{!28}<br class="">+<br class="">+!0 = metadata !{metadata !"0x11\004\00clang version 3.6.0 (trunk 222175)\000\00\000\00\001", metadata !1, metadata !2, metadata !3, metadata !20, metadata !24, metadata !2} ; [ DW_TAG_compile_unit ] [<stdin>] [DW_LANG_C_plus_plus]<br class="">+!1 = metadata !{metadata !"<stdin>", metadata !"."}<br class="">+!2 = metadata !{}<br class="">+!3 = metadata !{metadata !4}<br class="">+!4 = metadata !{metadata !"0x13\00F\001\0064\0064\000\000\000", metadata !5, null, null, metadata !6, metadata !"_ZTS1F", null, metadata !"_ZTS1F"} ; [ DW_TAG_structure_type ] [F] [line 1, size 64, align 64, offset 0] [def] [from ]<br class="">+!5 = metadata !{metadata !"test.cpp", metadata !"."}<br class="">+!6 = metadata !{metadata !7, metadata !14, metadata !16}<br class="">+!7 = metadata !{metadata !"0xd\00_vptr$F\000\0064\000\000\0064", metadata !5, metadata !8, metadata !9} ; [ DW_TAG_member ] [_vptr$F] [line 0, size 64, align 0, offset 0] [artificial] [from ]<br class="">+!8 = metadata !{metadata !"0x29", metadata !5}    ; [ DW_TAG_file_type ]<br class="">+!9 = metadata !{metadata !"0xf\00\000\0064\000\000\000", null, null, metadata !10} ; [ DW_TAG_pointer_type ] [line 0, size 64, align 0, offset 0] [from __vtbl_ptr_type]<br class="">+!10 = metadata !{metadata !"0xf\00__vtbl_ptr_type\000\0064\000\000\000", null, null, metadata !11} ; [ DW_TAG_pointer_type ] [__vtbl_ptr_type] [line 0, size 64, align 0, offset 0] [from ]<br class="">+!11 = metadata !{metadata !"0x15\00\000\000\000\000\000\000", null, null, null, metadata !12, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ]<br class="">+!12 = metadata !{metadata !13}<br class="">+!13 = metadata !{metadata !"0x24\00int\000\0032\0032\000\000\005", null, null} ; [ DW_TAG_base_type ] [int] [line 0, size 32, align 32, offset 0, enc DW_ATE_signed]<br class="">+!14 = metadata !{metadata !"0xd\00i\002\000\000\000\004096", metadata !5, metadata !"_ZTS1F", metadata !15, i32 2} ; [ DW_TAG_member ] [i] [line 2, size 0, align 0, offset 0] [static] [from ]<br class="">+!15 = metadata !{metadata !"0x26\00\000\000\000\000\000", null, null, metadata !13} ; [ DW_TAG_const_type ] [line 0, size 0, align 0, offset 0] [from int]<br class="">+!16 = metadata !{metadata !"0x2e\00~F\00~F\00\003\000\000\001\000\00256\000\003", metadata !5, metadata !"_ZTS1F", metadata !17, metadata !"_ZTS1F", null, null, null, null} ; [ DW_TAG_subprogram ] [line 3] [~F]<br class="">+!17 = metadata !{metadata !"0x15\00\000\000\000\000\000\000", null, null, null, metadata !18, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ]<br class="">+!18 = metadata !{null, metadata !19}<br class="">+!19 = metadata !{metadata !"0xf\00\000\0064\0064\000\001088\00", null, null, metadata !"_ZTS1F"} ; [ DW_TAG_pointer_type ] [line 0, size 64, align 64, offset 0] [artificial] [from _ZTS1F]<br class="">+!20 = metadata !{metadata !21}<br class="">+!21 = metadata !{metadata !"0x2e\00f1\00f1\00_Z2f1v\006\000\001\000\000\00256\000\006", metadata !5, metadata !8, metadata !22, null, void ()* @_Z2f1v, null, null, metadata !2} ; [ DW_TAG_subprogram ] [line 6] [def] [f1]<br class="">+!22 = metadata !{metadata !"0x15\00\000\000\000\000\000\000", null, null, null, metadata !23, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ]<br class="">+!23 = metadata !{null}<br class="">+!24 = metadata !{metadata !25}<br class="">+!25 = metadata !{metadata !"0x34\00i\00i\00\002\001\001", metadata !"_ZTS1F", metadata !8, metadata !15, i32 2, metadata !14} ; [ DW_TAG_variable ] [i] [line 2] [local] [def]<br class="">+!26 = metadata !{i32 2, metadata !"Dwarf Version", i32 4}<br class="">+!27 = metadata !{i32 2, metadata !"Debug Info Version", i32 2}<br class="">+!28 = metadata !{metadata !"clang version 3.6.0 (trunk 222175)"}<br class="">+!29 = metadata !{metadata !"0x100\00i\007\000", metadata !21, metadata !8, metadata !13} ; [ DW_TAG_auto_variable ] [i] [line 7]<br class="">+!30 = metadata !{metadata !"0x102"}               ; [ DW_TAG_expression ]<br class="">+!31 = metadata !{i32 7, i32 0, metadata !21, null}<br class="">+!32 = metadata !{i32 8, i32 0, metadata !21, null}<br class="">+; REQUIRES: object-emission<br class="">+<br class="">+; RUN: %llc_dwarf -filetype=obj -O0 < %s > %t<br class="">+; RUN: llvm-dwarfdump -debug-dump=info %t | FileCheck %s<br class="">+<br class="">+; IR generated from clang -g with the following source:<br class="">+; struct F {<br class="">+;   static const int i = 2;<br class="">+;   virtual ~F();<br class="">+; };<br class="">+;<br class="">+; void f1() {<br class="">+;   int i = F::i;<br class="">+; }<br class="">+<br class="">+; Make sure we correctly handle context of a global variable being a type identifier.<br class="">+; CHECK:  [[STRUCT:.*]]: DW_TAG_structure_type<br class="">+; CHECK: DW_AT_name [DW_FORM_strp] {{.*}}= "F")<br class="">+; CHECK: DW_TAG_variable<br class="">+; CHECK-NEXT: DW_AT_specification {{.*}} "i"<br class="">+; CHECK-NEXT: DW_AT_const_value [DW_FORM_sdata] (2)<br class="">+<br class="">+target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"<br class="">+target triple = "x86_64-apple-darwin14.0.0"<br class="">+<br class="">+; Function Attrs: nounwind<br class="">+define void @_Z2f1v() #0 {<br class="">+entry:<br class="">+  %i = alloca i32, align 4<br class="">+  call void @llvm.dbg.declare(metadata !{i32* %i}, metadata !29, metadata !30), !dbg !31<br class="">+  store i32 2, i32* %i, align 4, !dbg !31<br class="">+  ret void, !dbg !32<br class="">+}<br class="">+<br class="">+; Function Attrs: nounwind readnone<br class="">+declare void @llvm.dbg.declare(metadata, metadata, metadata) #1<br class="">+<br class="">+attributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-realign-stack" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }<br class="">+attributes #1 = { nounwind readnone }<br class="">+<br class="">+!<a href="http://llvm.dbg.cu/" target="_blank" class="">llvm.dbg.cu</a><span class="Apple-converted-space"> </span>= !{!0}<br class="">+!llvm.module.flags = !{!26, !27}<br class="">+!llvm.ident = !{!28}<br class="">+<br class="">+!0 = metadata !{metadata !"0x11\004\00clang version 3.6.0 (trunk 222175)\000\00\000\00\001", metadata !1, metadata !2, metadata !3, metadata !20, metadata !24, metadata !2} ; [ DW_TAG_compile_unit ] [<stdin>] [DW_LANG_C_plus_plus]<br class="">+!1 = metadata !{metadata !"<stdin>", metadata !"."}<br class="">+!2 = metadata !{}<br class="">+!3 = metadata !{metadata !4}<br class="">+!4 = metadata !{metadata !"0x13\00F\001\0064\0064\000\000\000", metadata !5, null, null, metadata !6, metadata !"_ZTS1F", null, metadata !"_ZTS1F"} ; [ DW_TAG_structure_type ] [F] [line 1, size 64, align 64, offset 0] [def] [from ]<br class="">+!5 = metadata !{metadata !"test.cpp", metadata !"."}<br class="">+!6 = metadata !{metadata !7, metadata !14, metadata !16}<br class="">+!7 = metadata !{metadata !"0xd\00_vptr$F\000\0064\000\000\0064", metadata !5, metadata !8, metadata !9} ; [ DW_TAG_member ] [_vptr$F] [line 0, size 64, align 0, offset 0] [artificial] [from ]<br class="">+!8 = metadata !{metadata !"0x29", metadata !5}    ; [ DW_TAG_file_type ]<br class="">+!9 = metadata !{metadata !"0xf\00\000\0064\000\000\000", null, null, metadata !10} ; [ DW_TAG_pointer_type ] [line 0, size 64, align 0, offset 0] [from __vtbl_ptr_type]<br class="">+!10 = metadata !{metadata !"0xf\00__vtbl_ptr_type\000\0064\000\000\000", null, null, metadata !11} ; [ DW_TAG_pointer_type ] [__vtbl_ptr_type] [line 0, size 64, align 0, offset 0] [from ]<br class="">+!11 = metadata !{metadata !"0x15\00\000\000\000\000\000\000", null, null, null, metadata !12, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ]<br class="">+!12 = metadata !{metadata !13}<br class="">+!13 = metadata !{metadata !"0x24\00int\000\0032\0032\000\000\005", null, null} ; [ DW_TAG_base_type ] [int] [line 0, size 32, align 32, offset 0, enc DW_ATE_signed]<br class="">+!14 = metadata !{metadata !"0xd\00i\002\000\000\000\004096", metadata !5, metadata !"_ZTS1F", metadata !15, i32 2} ; [ DW_TAG_member ] [i] [line 2, size 0, align 0, offset 0] [static] [from ]<br class="">+!15 = metadata !{metadata !"0x26\00\000\000\000\000\000", null, null, metadata !13} ; [ DW_TAG_const_type ] [line 0, size 0, align 0, offset 0] [from int]<br class="">+!16 = metadata !{metadata !"0x2e\00~F\00~F\00\003\000\000\001\000\00256\000\003", metadata !5, metadata !"_ZTS1F", metadata !17, metadata !"_ZTS1F", null, null, null, null} ; [ DW_TAG_subprogram ] [line 3] [~F]<br class="">+!17 = metadata !{metadata !"0x15\00\000\000\000\000\000\000", null, null, null, metadata !18, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ]<br class="">+!18 = metadata !{null, metadata !19}<br class="">+!19 = metadata !{metadata !"0xf\00\000\0064\0064\000\001088\00", null, null, metadata !"_ZTS1F"} ; [ DW_TAG_pointer_type ] [line 0, size 64, align 64, offset 0] [artificial] [from _ZTS1F]<br class="">+!20 = metadata !{metadata !21}<br class="">+!21 = metadata !{metadata !"0x2e\00f1\00f1\00_Z2f1v\006\000\001\000\000\00256\000\006", metadata !5, metadata !8, metadata !22, null, void ()* @_Z2f1v, null, null, metadata !2} ; [ DW_TAG_subprogram ] [line 6] [def] [f1]<br class="">+!22 = metadata !{metadata !"0x15\00\000\000\000\000\000\000", null, null, null, metadata !23, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ]<br class="">+!23 = metadata !{null}<br class="">+!24 = metadata !{metadata !25}<br class="">+!25 = metadata !{metadata !"0x34\00i\00i\00\002\001\001", metadata !"_ZTS1F", metadata !8, metadata !15, i32 2, metadata !14} ; [ DW_TAG_variable ] [i] [line 2] [local] [def]<br class="">+!26 = metadata !{i32 2, metadata !"Dwarf Version", i32 4}<br class="">+!27 = metadata !{i32 2, metadata !"Debug Info Version", i32 2}<br class="">+!28 = metadata !{metadata !"clang version 3.6.0 (trunk 222175)"}<br class="">+!29 = metadata !{metadata !"0x100\00i\007\000", metadata !21, metadata !8, metadata !13} ; [ DW_TAG_auto_variable ] [i] [line 7]<br class="">+!30 = metadata !{metadata !"0x102"}               ; [ DW_TAG_expression ]<br class="">+!31 = metadata !{i32 7, i32 0, metadata !21, null}<br class="">+!32 = metadata !{i32 8, i32 0, metadata !21, null}<br class=""><br class=""><br class="">_______________________________________________<br class="">llvm-commits mailing list<br class=""><a href="mailto:llvm-commits@cs.uiuc.edu" target="_blank" class="">llvm-commits@cs.uiuc.edu</a><br class=""><a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank" class="">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br class=""></blockquote></div><br class=""></div></div><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">_______________________________________________</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">llvm-commits mailing list</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><a href="mailto:llvm-commits@cs.uiuc.edu" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">llvm-commits@cs.uiuc.edu</a><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a></div></blockquote></div><br class=""></body></html>