[llvm-commits] CVS: llvm/lib/CodeGen/DwarfWriter.cpp
Anton Korobeynikov
asl at math.spbu.ru
Fri May 11 01:24:16 PDT 2007
Changes in directory llvm/lib/CodeGen:
DwarfWriter.cpp updated: 1.139 -> 1.140
---
Log message:
Fix action No calculation in multiple-invoke-one-LP mode
---
Diffs of the changes: (+31 -31)
DwarfWriter.cpp | 62 ++++++++++++++++++++++++++++----------------------------
1 files changed, 31 insertions(+), 31 deletions(-)
Index: llvm/lib/CodeGen/DwarfWriter.cpp
diff -u llvm/lib/CodeGen/DwarfWriter.cpp:1.139 llvm/lib/CodeGen/DwarfWriter.cpp:1.140
--- llvm/lib/CodeGen/DwarfWriter.cpp:1.139 Thu May 10 17:34:59 2007
+++ llvm/lib/CodeGen/DwarfWriter.cpp Fri May 11 03:23:57 2007
@@ -2934,41 +2934,41 @@
unsigned SizeAction = 0;
signed FirstAction;
- for (unsigned j = 0, E = LandingPad.BeginLabels.size(); j != E; ++j) {
- if (IsFilter) {
- // FIXME - Assume there is only one filter typeinfo list per function
- // time being. I.E., Each call to eh_filter will have the same list.
- // This can change if a function is inlined.
- Filter = &LandingPad;
- SizeAction = Asm->SizeSLEB128(-1) + Asm->SizeSLEB128(0);
+ if (IsFilter) {
+ // FIXME - Assume there is only one filter typeinfo list per function
+ // time being. I.E., Each call to eh_filter will have the same list.
+ // This can change if a function is inlined.
+ Filter = &LandingPad;
+ SizeAction = Asm->SizeSLEB128(-1) + Asm->SizeSLEB128(0);
+ SizeSiteActions += SizeAction;
+ // Record the first action of the landing pad site.
+ FirstAction = SizeActions + SizeSiteActions - SizeAction + 1;
+ } else if (TypeIds.empty()) {
+ FirstAction = 0;
+ } else {
+ // Gather the action sizes
+ for (unsigned j = 0, M = TypeIds.size(); j != M; ++j) {
+ unsigned TypeID = TypeIds[j];
+ unsigned SizeTypeID = Asm->SizeSLEB128(TypeID);
+ signed Action = j ? -(SizeAction + SizeTypeID) : 0;
+ SizeAction = SizeTypeID + Asm->SizeSLEB128(Action);
SizeSiteActions += SizeAction;
- // Record the first action of the landing pad site.
- FirstAction = SizeActions + SizeSiteActions - SizeAction + 1;
- } else if (TypeIds.empty()) {
- FirstAction = 0;
- } else {
- // Gather the action sizes
- for (unsigned k = 0, M = TypeIds.size(); k != M; ++k) {
- unsigned TypeID = TypeIds[k];
- unsigned SizeTypeID = Asm->SizeSLEB128(TypeID);
- signed Action = k ? -(SizeAction + SizeTypeID) : 0;
- SizeAction = SizeTypeID + Asm->SizeSLEB128(Action);
- SizeSiteActions += SizeAction;
- }
-
- // Record the first action of the landing pad site.
- FirstAction = SizeActions + SizeSiteActions - SizeAction + 1;
}
-
- Actions.push_back(FirstAction);
- // Compute this sites contribution to size.
- SizeActions += SizeSiteActions;
- SizeSites += sizeof(int32_t) + // Site start.
- sizeof(int32_t) + // Site length.
- sizeof(int32_t) + // Landing pad.
- Asm->SizeSLEB128(FirstAction); // Action.
+ // Record the first action of the landing pad site.
+ FirstAction = SizeActions + SizeSiteActions - SizeAction + 1;
}
+
+ unsigned M = LandingPad.BeginLabels.size();
+ for (unsigned j = 0; j!=M; ++j)
+ Actions.push_back(FirstAction);
+
+ // Compute this sites contribution to size.
+ SizeActions += SizeSiteActions*M;
+ SizeSites += M*(sizeof(int32_t) + // Site start.
+ sizeof(int32_t) + // Site length.
+ sizeof(int32_t) + // Landing pad.
+ Asm->SizeSLEB128(FirstAction)); // Action.
}
// Final tallies.
More information about the llvm-commits
mailing list