Changes in directory llvm/lib/CodeGen:
DwarfWriter.cpp updated: 1.148 -> 1.149 MachineModuleInfo.cpp updated: 1.14 -> 1.15 --- Log message: Mark all calls as "could throw", when exceptions are enabled. Emit necessary LP info too. This fixes PR1439: http://llvm.org/PR1439 --- Diffs of the changes: (+13 -5) DwarfWriter.cpp | 2 +- MachineModuleInfo.cpp | 16 ++++++++++++---- 2 files changed, 13 insertions(+), 5 deletions(-) Index: llvm/lib/CodeGen/DwarfWriter.cpp diff -u llvm/lib/CodeGen/DwarfWriter.cpp:1.148 llvm/lib/CodeGen/DwarfWriter.cpp:1.149 --- llvm/lib/CodeGen/DwarfWriter.cpp:1.148 Tue May 22 13:13:40 2007 +++ llvm/lib/CodeGen/DwarfWriter.cpp Wed May 23 06:08:30 2007 @@ -2852,7 +2852,7 @@ EmitLabel("eh_frame_begin", EHFrameInfo.Number); - EmitSectionOffset("eh_frame_begin", "section_eh_frame", + EmitSectionOffset("eh_frame_begin", "eh_frame_common", EHFrameInfo.Number, EHFrameInfo.PersonalityIndex, true, true); Asm->EOL("FDE CIE offset"); Index: llvm/lib/CodeGen/MachineModuleInfo.cpp diff -u llvm/lib/CodeGen/MachineModuleInfo.cpp:1.14 llvm/lib/CodeGen/MachineModuleInfo.cpp:1.15 --- llvm/lib/CodeGen/MachineModuleInfo.cpp:1.14 Sun May 13 10:42:26 2007 +++ llvm/lib/CodeGen/MachineModuleInfo.cpp Wed May 23 06:08:31 2007 @@ -1723,7 +1723,9 @@ LandingPadInfo &LandingPad = LandingPads[i]; LandingPad.LandingPadLabel = MappedLabel(LandingPad.LandingPadLabel); - if (!LandingPad.LandingPadLabel) { + // Special case: we *should* emit LPs with null LP MBB. This indicates + // "rethrow" case. + if (!LandingPad.LandingPadLabel && LandingPad.LandingPadBlock) { LandingPads.erase(LandingPads.begin() + i); continue; } @@ -1768,9 +1770,15 @@ /// getPersonalityIndex - Return unique index for current personality /// function. NULL personality function should always get zero index. unsigned MachineModuleInfo::getPersonalityIndex() const { - const Function* Personality = (!LandingPads.empty() ? - LandingPads[0].Personality : NULL); - + const Function* Personality = NULL; + + // Scan landing pads. If there is at least one non-NULL personality - use it. + for (unsigned i = 0; i != LandingPads.size(); ++i) + if (LandingPads[i].Personality) { + Personality = LandingPads[i].Personality; + break; + } + for (unsigned i = 0; i < Personalities.size(); ++i) { if (Personalities[i] == Personality) return i; _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits