factor some labels, simplify some code.
authorChris Lattner <sabre@nondot.org>
Sat, 13 Mar 2010 07:40:56 +0000 (07:40 +0000)
committerChris Lattner <sabre@nondot.org>
Sat, 13 Mar 2010 07:40:56 +0000 (07:40 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98429 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/AsmPrinter/DwarfDebug.cpp
lib/CodeGen/AsmPrinter/DwarfException.cpp
lib/CodeGen/AsmPrinter/DwarfPrinter.cpp

index 8ddea46cb8ecc2125540289e7796d481077fc06f..8510ae776fd5333dcda63edcb2a0f2e2e3c0c0fe 100644 (file)
@@ -2756,16 +2756,15 @@ emitFunctionDebugFrame(const FunctionDebugFrameInfo &DebugFrameInfo) {
                     getTempLabel("section_debug_frame"), true, false);
 
   Asm->OutStreamer.AddComment("FDE initial location");
-  Asm->OutStreamer.EmitSymbolValue(getDWLabel("func_begin",
-                                              DebugFrameInfo.Number),
+  MCSymbol *FuncBeginSym = getDWLabel("func_begin", DebugFrameInfo.Number);
+  Asm->OutStreamer.EmitSymbolValue(FuncBeginSym,
                                    TD->getPointerSize(), 0/*AddrSpace*/);
   
   
-  
   Asm->OutStreamer.AddComment("FDE address range");
-  EmitDifference(getDWLabel("func_end", DebugFrameInfo.Number),
-                 getDWLabel("func_begin", DebugFrameInfo.Number));
+  EmitDifference(getDWLabel("func_end", DebugFrameInfo.Number), FuncBeginSym);
 
+  // FuncBeginSym.
   EmitFrameMoves("func_begin", DebugFrameInfo.Number, DebugFrameInfo.Moves,
                  false);
 
index 09fae287f7d6cb26b7e1d49ad05be056e747b0c4..58ebafa105081f745701e1ac1a008c07bbc378fd 100644 (file)
@@ -221,12 +221,13 @@ void DwarfException::EmitFDE(const FunctionEHFrameInfo &EHFrameInfo) {
                                  EHFrameInfo.PersonalityIndex),
                       true, true);
 
+    MCSymbol *EHFuncBeginSym = getDWLabel("eh_func_begin", EHFrameInfo.Number);
 
     Asm->OutStreamer.AddComment("FDE initial location");
-    EmitReference(getDWLabel("eh_func_begin", EHFrameInfo.Number), FDEEncoding);
+    EmitReference(EHFuncBeginSym, FDEEncoding);
+    
     Asm->OutStreamer.AddComment("FDE address range");
-    EmitDifference(getDWLabel("eh_func_end", EHFrameInfo.Number),
-                   getDWLabel("eh_func_begin", EHFrameInfo.Number),
+    EmitDifference(getDWLabel("eh_func_end", EHFrameInfo.Number),EHFuncBeginSym,
                    SizeOfEncodedValue(FDEEncoding) == 4);
 
     // If there is a personality and landing pads then point to the language
@@ -246,6 +247,7 @@ void DwarfException::EmitFDE(const FunctionEHFrameInfo &EHFrameInfo) {
     }
 
     // Indicate locations of function specific callee saved registers in frame.
+    // EHFuncBeginSym
     EmitFrameMoves("eh_func_begin", EHFrameInfo.Number, EHFrameInfo.Moves,
                    true);
 
index f55e4fe8e6c277083195ecd4302c546e86e31ae0..3c00839aa77306ddea5840302671b80b9dfc6118 100644 (file)
@@ -240,12 +240,12 @@ void DwarfPrinter::EmitSectionOffset(const MCSymbol *Label,
 void DwarfPrinter::EmitFrameMoves(const char *BaseLabel, unsigned BaseLabelID,
                                   const std::vector<MachineMove> &Moves,
                                   bool isEH) {
-  int stackGrowth =
-    Asm->TM.getFrameInfo()->getStackGrowthDirection() ==
-    TargetFrameInfo::StackGrowsUp ?
-    TD->getPointerSize() : -TD->getPointerSize();
-  bool IsLocal = BaseLabel && strcmp(BaseLabel, "label") == 0;
-
+  int stackGrowth = TD->getPointerSize();
+  if (Asm->TM.getFrameInfo()->getStackGrowthDirection() !=
+      TargetFrameInfo::StackGrowsUp)
+    stackGrowth *= -1;
+  
+  bool IsLocal = false;
   for (unsigned i = 0, N = Moves.size(); i < N; ++i) {
     const MachineMove &Move = Moves[i];
     unsigned LabelID = Move.getLabelID();