diff options
author | Bill Wendling <isanbard@gmail.com> | 2010-02-09 22:49:16 +0000 |
---|---|---|
committer | Bill Wendling <isanbard@gmail.com> | 2010-02-09 22:49:16 +0000 |
commit | bf02536262e484f3c44f7db8d7c584f4588ccaa2 (patch) | |
tree | 9fe48c7f7d39964fcf53ff8c38f31177ef12ff49 /llvm/lib/CodeGen/AsmPrinter | |
parent | e4c83e4e2e097aacc29025f25a48b7d972612398 (diff) | |
download | bcm5719-llvm-bf02536262e484f3c44f7db8d7c584f4588ccaa2.tar.gz bcm5719-llvm-bf02536262e484f3c44f7db8d7c584f4588ccaa2.zip |
Improve comments in the LSDA somewhat. They can be improved much more.
llvm-svn: 95707
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter')
-rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DwarfException.cpp | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfException.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfException.cpp index c762b701767..e0975551986 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfException.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfException.cpp @@ -34,6 +34,7 @@ #include "llvm/Support/Timer.h" #include "llvm/ADT/SmallString.h" #include "llvm/ADT/StringExtras.h" +#include "llvm/ADT/Twine.h" using namespace llvm; DwarfException::DwarfException(raw_ostream &OS, AsmPrinter *A, @@ -868,13 +869,14 @@ void DwarfException::EmitExceptionTable() { // Offset of the landing pad, counted in 16-byte bundles relative to the // @LPStart address. - if (!S.PadLabel) + if (!S.PadLabel) { + Asm->OutStreamer.AddComment("Landing pad"); Asm->OutStreamer.EmitIntValue(0, 4/*size*/, 0/*addrspace*/); - else + } else { EmitSectionOffset("label", "eh_func_begin", S.PadLabel, SubprogramCount, true, true); - - EOL("Landing pad"); + EOL("Landing pad"); + } // Offset of the first associated action record, relative to the start of // the action table. This value is biased by 1 (1 indicates the start of @@ -884,35 +886,40 @@ void DwarfException::EmitExceptionTable() { } // Emit the Action Table. + EOL("Action Record Table:"); + unsigned Iter = 1; for (SmallVectorImpl<ActionEntry>::const_iterator I = Actions.begin(), E = Actions.end(); I != E; ++I) { const ActionEntry &Action = *I; + EOL(Twine("Action Record ") + Twine(Iter++)); // Type Filter // // Used by the runtime to match the type of the thrown exception to the // type of the catch clauses or the types in the exception specification. - EmitSLEB128(Action.ValueForTypeID, "TypeInfo index"); + EmitSLEB128(Action.ValueForTypeID, " TypeInfo index"); // Action Record // // Self-relative signed displacement in bytes of the next action record, // or 0 if there is no next action record. - EmitSLEB128(Action.NextAction, "Next action"); + EmitSLEB128(Action.NextAction, " Next action"); } // Emit the Catch TypeInfos. + Iter = TypeInfos.size(); for (std::vector<GlobalVariable *>::const_reverse_iterator I = TypeInfos.rbegin(), E = TypeInfos.rend(); I != E; ++I) { const GlobalVariable *GV = *I; PrintRelDirective(); - if (GV) + if (GV) { O << *Asm->GetGlobalValueSymbol(GV); - else + EOL(Twine("TypeInfo ") + Twine(Iter--)); + } else { O << "0x0"; - - EOL("TypeInfo"); + EOL(""); + } } // Emit the Exception Specifications. |