[llvm-commits] [llvm] r133296 - /llvm/trunk/lib/MC/MCAsmStreamer.cpp
Bill Wendling
isanbard at gmail.com
Fri Jun 17 14:29:06 PDT 2011
Author: void
Date: Fri Jun 17 16:29:06 2011
New Revision: 133296
URL: http://llvm.org/viewvc/llvm-project?rev=133296&view=rev
Log:
SjLj exception handling LSDA decoding support wasn't represented correctly. Use
the correct values, etc. In particular, the exception handling type is SjLj, not
ARM.
Modified:
llvm/trunk/lib/MC/MCAsmStreamer.cpp
Modified: llvm/trunk/lib/MC/MCAsmStreamer.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCAsmStreamer.cpp?rev=133296&r1=133295&r2=133296&view=diff
==============================================================================
--- llvm/trunk/lib/MC/MCAsmStreamer.cpp (original)
+++ llvm/trunk/lib/MC/MCAsmStreamer.cpp Fri Jun 17 16:29:06 2011
@@ -1482,7 +1482,7 @@
CMT << "@CallSite Encoding: " << DecodeDWARFEncoding(LSDAEncoding[4]) << "\n";
CMT << "@Action Table Size: " << LSDAEncoding[5] << " bytes\n\n";
- bool isSjLjEH = (MAI.getExceptionHandlingType() == ExceptionHandling::ARM);
+ bool isSjLjEH = (MAI.getExceptionHandlingType() == ExceptionHandling::SjLj);
int64_t CallSiteTableSize = LSDAEncoding[5];
unsigned CallSiteEntrySize;
@@ -1493,14 +1493,13 @@
1; // TType index.
else
CallSiteEntrySize = 1 + // Call index.
- 1 + // Landing pad.
1; // TType index.
unsigned NumEntries = CallSiteTableSize / CallSiteEntrySize;
assert(CallSiteTableSize % CallSiteEntrySize == 0 &&
"The action table size is not a multiple of what it should be!");
unsigned TTypeIdx = 5 + // Action table size index.
- (isSjLjEH ? 3 : 4) * NumEntries + // Action table entries.
+ (isSjLjEH ? 2 : 4) * NumEntries + // Action table entries.
1; // Just because.
// Emit the action table.
@@ -1518,20 +1517,20 @@
// The end of the throwing region.
Idx = LSDAEncoding[I++];
OS << *cast<MCBinaryExpr>(Assignments[Idx - 1])->getLHS();
- } else {
- CMT << " A throw from call " << *Assignments[Idx - 1];
- }
- // The landing pad.
- Idx = LSDAEncoding[I++];
- if (Idx) {
- OS << " jumps to "
- << *cast<MCBinaryExpr>(Assignments[Idx - 1])->getLHS()
- << " on an exception.\n";
+ // The landing pad.
+ Idx = LSDAEncoding[I++];
+ if (Idx) {
+ OS << " jumps to "
+ << *cast<MCBinaryExpr>(Assignments[Idx - 1])->getLHS()
+ << " on an exception.\n";
+ } else {
+ OS << " does not have a landing pad.\n";
+ ++I;
+ continue;
+ }
} else {
- OS << " does not have a landing pad.\n";
- ++I;
- continue;
+ CMT << " A throw from call " << Idx << "\n";
}
// The index into the action table.
@@ -1606,11 +1605,10 @@
bool useCFI, MCInstPrinter *IP,
MCCodeEmitter *CE, TargetAsmBackend *TAB,
bool ShowInst) {
-#if 0
if (isVerboseAsm)
return new MCLSDADecoderAsmStreamer(Context, OS, isVerboseAsm, useLoc,
useCFI, IP, CE, TAB, ShowInst);
-#endif
+
return new MCAsmStreamer(Context, OS, isVerboseAsm, useLoc, useCFI,
IP, CE, TAB, ShowInst);
}
More information about the llvm-commits
mailing list