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
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 @@
 , RootScope(NULL)
 , FrameMoves()
 , LandingPads()
+, Personality(NULL)
 {}
 MachineModuleInfo::~MachineModuleInfo() {
 
@@ -1685,9 +1686,13 @@
 /// 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 @@
 /// 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;
 }