diff options
author | Anton Korobeynikov <asl@math.spbu.ru> | 2007-05-12 22:36:25 +0000 |
---|---|---|
committer | Anton Korobeynikov <asl@math.spbu.ru> | 2007-05-12 22:36:25 +0000 |
commit | 13da17843cb9a441cd9f3fe5786ba9e0b113b814 (patch) | |
tree | 9ced64635c8b19ae1a77a5b3e0c241c9019df08d /llvm/lib/CodeGen/MachineModuleInfo.cpp | |
parent | 81ee020f649a5f18f7e2c969fa4ed81c34e19f1f (diff) | |
download | llvm-13da17843cb9a441cd9f3fe5786ba9e0b113b814.zip llvm-13da17843cb9a441cd9f3fe5786ba9e0b113b814.tar.gz llvm-13da17843cb9a441cd9f3fe5786ba9e0b113b814.tar.bz2 |
More DWARF-related things cleanup:
1. Fix PR1380
2. Apply Duncan's patch from PR1410
3. Insert workaround for "one personality function per module" as noted in PR1414
4. Emit correct debug frames for x86/linux. This partly fixes DebugInfo/2006-11-06-StackTrace.cpp: stack trace is
shown correctly, but arguments for function on top of stack are displayed incorrectly.
llvm-svn: 37015
Diffstat (limited to 'llvm/lib/CodeGen/MachineModuleInfo.cpp')
-rw-r--r-- | llvm/lib/CodeGen/MachineModuleInfo.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/llvm/lib/CodeGen/MachineModuleInfo.cpp b/llvm/lib/CodeGen/MachineModuleInfo.cpp index 9d532ad..2217281 100644 --- a/llvm/lib/CodeGen/MachineModuleInfo.cpp +++ b/llvm/lib/CodeGen/MachineModuleInfo.cpp @@ -1475,6 +1475,7 @@ MachineModuleInfo::MachineModuleInfo() , RootScope(NULL) , FrameMoves() , LandingPads() +, Personality(NULL) {} MachineModuleInfo::~MachineModuleInfo() { @@ -1685,9 +1686,13 @@ unsigned MachineModuleInfo::addLandingPad(MachineBasicBlock *LandingPad) { /// addPersonality - Provide the personality function for the exception /// information. void MachineModuleInfo::addPersonality(MachineBasicBlock *LandingPad, - Function *Personality) { + Function *PersFn) { LandingPadInfo &LP = getOrCreateLandingPadInfo(LandingPad); - LP.Personality = Personality; + LP.Personality = PersFn; + + // FIXME: Until PR1414 will be fixed, we're using 1 personality function per + // module + Personality = PersFn; } /// addCatchTypeInfo - Provide the catch typeinfo for a landing pad. @@ -1751,7 +1756,11 @@ unsigned MachineModuleInfo::getTypeIDFor(GlobalVariable *TI) { /// getLandingPadInfos - Return a reference to the landing pad info for the /// current function. Function *MachineModuleInfo::getPersonality() const { - return !LandingPads.empty() ? LandingPads[0].Personality : NULL; + // FIXME: Until PR1414 will be fixed, we're using 1 personality function per + // module + + //return !LandingPads.empty() ? LandingPads[0].Personality : NULL; + return Personality; } |