<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Mar 29, 2013 at 1:23 PM, Eric Christopher <span dir="ltr"><<a href="mailto:echristo@gmail.com" target="_blank">echristo@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: echristo<br>
Date: Fri Mar 29 15:23:06 2013<br>
New Revision: 178366<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=178366&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=178366&view=rev</a><br>
Log:<br>
Use 12 as the magic number for our abbreviation data and our<br>
die values. A lot of DIEs have 10 attributes in C++ code (example<br>
clang), none had more than 12. Seems like a good default.<br>
<br>
Modified:<br>
    llvm/trunk/lib/CodeGen/AsmPrinter/DIE.cpp<br>
    llvm/trunk/lib/CodeGen/AsmPrinter/DIE.h<br>
    llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp<br>
<br>
Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DIE.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DIE.cpp?rev=178366&r1=178365&r2=178366&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DIE.cpp?rev=178366&r1=178365&r2=178366&view=diff</a><br>

==============================================================================<br>
--- llvm/trunk/lib/CodeGen/AsmPrinter/DIE.cpp (original)<br>
+++ llvm/trunk/lib/CodeGen/AsmPrinter/DIE.cpp Fri Mar 29 15:23:06 2013<br>
@@ -144,7 +144,7 @@ void DIE::print(raw_ostream &O, unsigned<br>
     O << "Size: " << Size << "\n";<br>
   }<br>
<br>
-  const SmallVector<DIEAbbrevData, 8> &Data = Abbrev.getData();<br>
+  const SmallVector<DIEAbbrevData, 12> &Data = Abbrev.getData();<br>
<br>
   IndentCount += 2;<br>
   for (unsigned i = 0, N = Data.size(); i < N; ++i) {<br>
@@ -324,7 +324,7 @@ void DIEEntry::print(raw_ostream &O) {<br>
 ///<br>
 unsigned DIEBlock::ComputeSize(AsmPrinter *AP) {<br>
   if (!Size) {<br>
-    const SmallVector<DIEAbbrevData, 8> &AbbrevData = Abbrev.getData();<br>
+    const SmallVector<DIEAbbrevData, 12> &AbbrevData = Abbrev.getData();<br>
     for (unsigned i = 0, N = Values.size(); i < N; ++i)<br>
       Size += Values[i]->SizeOf(AP, AbbrevData[i].getForm());<br>
   }<br>
@@ -343,7 +343,7 @@ void DIEBlock::EmitValue(AsmPrinter *Asm<br>
   case dwarf::DW_FORM_block:  Asm->EmitULEB128(Size); break;<br>
   }<br>
<br>
-  const SmallVector<DIEAbbrevData, 8> &AbbrevData = Abbrev.getData();<br>
+  const SmallVector<DIEAbbrevData, 12> &AbbrevData = Abbrev.getData();<br>
   for (unsigned i = 0, N = Values.size(); i < N; ++i)<br>
     Values[i]->EmitValue(Asm, AbbrevData[i].getForm());<br>
 }<br>
<br>
Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DIE.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DIE.h?rev=178366&r1=178365&r2=178366&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DIE.h?rev=178366&r1=178365&r2=178366&view=diff</a><br>

==============================================================================<br>
--- llvm/trunk/lib/CodeGen/AsmPrinter/DIE.h (original)<br>
+++ llvm/trunk/lib/CodeGen/AsmPrinter/DIE.h Fri Mar 29 15:23:06 2013<br>
@@ -66,7 +66,7 @@ namespace llvm {<br>
<br>
     /// Data - Raw data bytes for abbreviation.<br>
     ///<br>
-    SmallVector<DIEAbbrevData, 8> Data;<br>
+    SmallVector<DIEAbbrevData, 12> Data;<br>
<br>
   public:<br>
     DIEAbbrev(uint16_t T, uint16_t C) : Tag(T), ChildrenFlag(C), Data() {}<br>
@@ -75,7 +75,7 @@ namespace llvm {<br>
     uint16_t getTag() const { return Tag; }<br>
     unsigned getNumber() const { return Number; }<br>
     uint16_t getChildrenFlag() const { return ChildrenFlag; }<br>
-    const SmallVector<DIEAbbrevData, 8> &getData() const { return Data; }<br>
+    const SmallVector<DIEAbbrevData, 12> &getData() const { return Data; }<br></blockquote><div><br></div><div style>Here and elsewhere, could you use SmallVectorImpl to decouple yourself from the size hint in function signatures? This is used in other places throughout LLVM and IMHO makes much nicer code.</div>
<div style><br></div><div style>Eli</div><div style><br></div><div><br></div><div><br></div></div></div></div>