[llvm-commits] [llvm] r65367 - in /llvm/trunk: include/llvm/CodeGen/DwarfWriter.h include/llvm/CodeGen/SelectionDAG.h lib/CodeGen/SelectionDAG/FastISel.cpp lib/CodeGen/SelectionDAG/LegalizeDAG.cpp lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp test/DebugInfo/2009-01-30-Method.ll test/DebugInfo/deaddebuglabel.ll test/DebugInfo/forwardDecl.ll test/FrontendC++/2006-11-06-StackTrace.cpp test/FrontendC++/2006-11-30-Pubnames.cpp utils/TableGen/AsmWriterEmitter.cpp

Bill Wendling isanbard at gmail.com
Mon Feb 23 18:35:31 PST 2009


Author: void
Date: Mon Feb 23 20:35:30 2009
New Revision: 65367

URL: http://llvm.org/viewvc/llvm-project?rev=65367&view=rev
Log:
- Use the "Fast" flag instead of "OptimizeForSize" to determine whether to emit
  a DBG_LABEL or not. We want to fall back to the original way of emitting debug
  info when we're in -O0/-fast mode.
- Add plumbing in to pass the "Fast" flag to places that need it.
- XFAIL DebugInfo/deaddebuglabel.ll. This is finding 11 labels instead of 8. I
  need to investigate still.

Modified:
    llvm/trunk/include/llvm/CodeGen/DwarfWriter.h
    llvm/trunk/include/llvm/CodeGen/SelectionDAG.h
    llvm/trunk/lib/CodeGen/SelectionDAG/FastISel.cpp
    llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
    llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp
    llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
    llvm/trunk/test/DebugInfo/2009-01-30-Method.ll
    llvm/trunk/test/DebugInfo/deaddebuglabel.ll
    llvm/trunk/test/DebugInfo/forwardDecl.ll
    llvm/trunk/test/FrontendC++/2006-11-06-StackTrace.cpp
    llvm/trunk/test/FrontendC++/2006-11-30-Pubnames.cpp
    llvm/trunk/utils/TableGen/AsmWriterEmitter.cpp

Modified: llvm/trunk/include/llvm/CodeGen/DwarfWriter.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/DwarfWriter.h?rev=65367&r1=65366&r2=65367&view=diff

==============================================================================
--- llvm/trunk/include/llvm/CodeGen/DwarfWriter.h (original)
+++ llvm/trunk/include/llvm/CodeGen/DwarfWriter.h Mon Feb 23 20:35:30 2009
@@ -48,7 +48,10 @@
   /// DE - Provides the DwarfWriter exception implementation.
   ///
   DwarfException *DE;
-  
+
+  /// FastCodeGen - True if generating code via the "fast" isel.
+  /// 
+  bool FastCodeGen;
 public:
   static char ID; // Pass identification, replacement for typeid
 
@@ -104,6 +107,9 @@
   /// ShouldEmitDwarfDebug - Returns true if Dwarf debugging declarations should
   /// be emitted.
   bool ShouldEmitDwarfDebug() const;
+
+  bool getFastCodeGen() const { return FastCodeGen; }
+  void setFastCodeGen(bool Fast) { FastCodeGen = Fast; }
 };
 
 

Modified: llvm/trunk/include/llvm/CodeGen/SelectionDAG.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/SelectionDAG.h?rev=65367&r1=65366&r2=65367&view=diff

==============================================================================
--- llvm/trunk/include/llvm/CodeGen/SelectionDAG.h (original)
+++ llvm/trunk/include/llvm/CodeGen/SelectionDAG.h Mon Feb 23 20:35:30 2009
@@ -216,7 +216,7 @@
   ///
   /// Note that this is an involved process that may invalidate pointers into
   /// the graph.
-  void Legalize(bool TypesNeedLegalizing);
+  void Legalize(bool TypesNeedLegalizing, bool Fast);
 
   /// RemoveDeadNodes - This method deletes all unreachable nodes in the
   /// SelectionDAG.

Modified: llvm/trunk/lib/CodeGen/SelectionDAG/FastISel.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/FastISel.cpp?rev=65367&r1=65366&r2=65367&view=diff

==============================================================================
--- llvm/trunk/lib/CodeGen/SelectionDAG/FastISel.cpp (original)
+++ llvm/trunk/lib/CodeGen/SelectionDAG/FastISel.cpp Mon Feb 23 20:35:30 2009
@@ -370,6 +370,7 @@
       unsigned Line = Subprogram.getLineNumber();
       unsigned LabelID = DW->RecordSourceLine(Line, 0, SrcFile);
       setCurDebugLoc(DebugLoc::get(MF.getOrCreateDebugLocID(SrcFile, Line, 0)));
+      DW->setFastCodeGen(true);
 
       if (DW->getRecordSourceLineCount() != 1) {
         const TargetInstrDesc &II = TII.get(TargetInstrInfo::DBG_LABEL);

Modified: llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp?rev=65367&r1=65366&r2=65367&view=diff

==============================================================================
--- llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp (original)
+++ llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp Mon Feb 23 20:35:30 2009
@@ -56,6 +56,7 @@
   TargetLowering &TLI;
   SelectionDAG &DAG;
   bool TypesNeedLegalizing;
+  bool Fast;
 
   // Libcall insertion helpers.
 
@@ -137,7 +138,8 @@
   }
 
 public:
-  explicit SelectionDAGLegalize(SelectionDAG &DAG, bool TypesNeedLegalizing);
+  explicit SelectionDAGLegalize(SelectionDAG &DAG, bool TypesNeedLegalizing,
+                                bool fast);
 
   /// getTypeAction - Return how we should legalize values of this type, either
   /// it is already legal or we need to expand it into multiple registers of
@@ -362,9 +364,10 @@
   return TLI.isShuffleMaskLegal(Mask, VT) ? Mask.getNode() : 0;
 }
 
-SelectionDAGLegalize::SelectionDAGLegalize(SelectionDAG &dag, bool types)
+SelectionDAGLegalize::SelectionDAGLegalize(SelectionDAG &dag,
+                                           bool types, bool fast)
   : TLI(dag.getTargetLoweringInfo()), DAG(dag), TypesNeedLegalizing(types),
-    ValueTypeActions(TLI.getValueTypeActions()) {
+    Fast(fast), ValueTypeActions(TLI.getValueTypeActions()) {
   assert(MVT::LAST_VALUETYPE <= 32 &&
          "Too many value types for ValueTypeActions to hold!");
 }
@@ -1289,9 +1292,8 @@
 
         unsigned Line = DSP->getLine();
         unsigned Col = DSP->getColumn();
-        const Function *F = DAG.getMachineFunction().getFunction();
 
-        if (!F->hasFnAttr(Attribute::OptimizeForSize)) {
+        if (Fast) {
           // A bit self-referential to have DebugLoc on Debug_Loc nodes, but it
           // won't hurt anything.
           if (useDEBUG_LOC) {
@@ -8640,9 +8642,9 @@
 
 // SelectionDAG::Legalize - This is the entry point for the file.
 //
-void SelectionDAG::Legalize(bool TypesNeedLegalizing) {
+void SelectionDAG::Legalize(bool TypesNeedLegalizing, bool Fast) {
   /// run - This is the main entry point to this class.
   ///
-  SelectionDAGLegalize(*this, TypesNeedLegalizing).LegalizeDAG();
+  SelectionDAGLegalize(*this, TypesNeedLegalizing, Fast).LegalizeDAG();
 }
 

Modified: llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp?rev=65367&r1=65366&r2=65367&view=diff

==============================================================================
--- llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp (original)
+++ llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp Mon Feb 23 20:35:30 2009
@@ -3915,6 +3915,7 @@
       if (Fast)
         DAG.setRoot(DAG.getLabel(ISD::DBG_LABEL, getCurDebugLoc(),
                                  getRoot(), LabelID));
+      DW->setFastCodeGen(Fast);
     }
 
     return 0;
@@ -3950,9 +3951,7 @@
       // create a label if this is a beginning of inlined function.
       unsigned Line = Subprogram.getLineNumber();
 
-      // FIXME: Support more than just -Os.
-      const Function *F = I.getParent()->getParent();
-      if (!F->hasFnAttr(Attribute::OptimizeForSize)) {
+      if (Fast) {
         unsigned LabelID = DW->RecordSourceLine(Line, 0, SrcFile);
         if (DW->getRecordSourceLineCount() != 1)
           DAG.setRoot(DAG.getLabel(ISD::DBG_LABEL, getCurDebugLoc(),
@@ -3966,8 +3965,7 @@
     return 0;
   }
   case Intrinsic::dbg_declare: {
-    const Function *F = I.getParent()->getParent();
-    if (!F->hasFnAttr(Attribute::OptimizeForSize)) {
+    if (Fast) {
       DwarfWriter *DW = DAG.getDwarfWriter();
       DbgDeclareInst &DI = cast<DbgDeclareInst>(I);
       Value *Variable = DI.getVariable();

Modified: llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp?rev=65367&r1=65366&r2=65367&view=diff

==============================================================================
--- llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp (original)
+++ llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp Mon Feb 23 20:35:30 2009
@@ -621,9 +621,9 @@
 
   if (TimePassesIsEnabled) {
     NamedRegionTimer T("DAG Legalization", GroupName);
-    CurDAG->Legalize(DisableLegalizeTypes);
+    CurDAG->Legalize(DisableLegalizeTypes, Fast);
   } else {
-    CurDAG->Legalize(DisableLegalizeTypes);
+    CurDAG->Legalize(DisableLegalizeTypes, Fast);
   }
   
   DOUT << "Legalized selection DAG:\n";

Modified: llvm/trunk/test/DebugInfo/2009-01-30-Method.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/2009-01-30-Method.ll?rev=65367&r1=65366&r2=65367&view=diff

==============================================================================
--- llvm/trunk/test/DebugInfo/2009-01-30-Method.ll (original)
+++ llvm/trunk/test/DebugInfo/2009-01-30-Method.ll Mon Feb 23 20:35:30 2009
@@ -1,4 +1,4 @@
-; RUN: llvm-as < %s | llc | grep "\\"foo" | count 3
+; RUN: llvm-as < %s | llc -fast | grep "\\"foo" | count 3
 ; 1 declaration, 1 definition and 1 pubnames entry.
 target triple = "i386-apple-darwin*"
 	%llvm.dbg.anchor.type = type { i32, i32 }

Modified: llvm/trunk/test/DebugInfo/deaddebuglabel.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/deaddebuglabel.ll?rev=65367&r1=65366&r2=65367&view=diff

==============================================================================
--- llvm/trunk/test/DebugInfo/deaddebuglabel.ll (original)
+++ llvm/trunk/test/DebugInfo/deaddebuglabel.ll Mon Feb 23 20:35:30 2009
@@ -1,5 +1,6 @@
+; RUN: llvm-as < %s | llc -fast | grep "label" | count 8
 ; PR2614
-; RUN: llvm-as < %s | llc | grep "label" | count 8
+; XFAIL: *
 
 target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-f80:32:32-v64:64:64-v128:128:128-a0:0:64"
 target triple = "i686-pc-linux-gnu"

Modified: llvm/trunk/test/DebugInfo/forwardDecl.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/forwardDecl.ll?rev=65367&r1=65366&r2=65367&view=diff

==============================================================================
--- llvm/trunk/test/DebugInfo/forwardDecl.ll (original)
+++ llvm/trunk/test/DebugInfo/forwardDecl.ll Mon Feb 23 20:35:30 2009
@@ -1,4 +1,4 @@
-; RUN: llvm-as < %s | llc | %prcontext ST 1 | grep 0x1 | count 1
+; RUN: llvm-as < %s | llc -fast | %prcontext ST 1 | grep 0x1 | count 1
 
 target triple = "i386-apple-darwin9.6"
 	%llvm.dbg.anchor.type = type { i32, i32 }

Modified: llvm/trunk/test/FrontendC++/2006-11-06-StackTrace.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/FrontendC%2B%2B/2006-11-06-StackTrace.cpp?rev=65367&r1=65366&r2=65367&view=diff

==============================================================================
--- llvm/trunk/test/FrontendC++/2006-11-06-StackTrace.cpp (original)
+++ llvm/trunk/test/FrontendC++/2006-11-06-StackTrace.cpp Mon Feb 23 20:35:30 2009
@@ -1,6 +1,7 @@
 // This is a regression test on debug info to make sure that we can get a
 // meaningful stack trace from a C++ program.
-// RUN: %llvmgcc -S -O0 -g %s -o - | llvm-as | llc --disable-fp-elim -o %t.s -f
+// RUN: %llvmgcc -S -O0 -g %s -o - | llvm-as | \
+// RUN:    llc --disable-fp-elim -o %t.s -f -fast -relocation-model=pic
 // RUN: %compile_c %t.s -o %t.o
 // RUN: %link %t.o -o %t.exe
 // RUN: echo {break DeepStack::deepest\nrun 17\nwhere\n} > %t.in 

Modified: llvm/trunk/test/FrontendC++/2006-11-30-Pubnames.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/FrontendC%2B%2B/2006-11-30-Pubnames.cpp?rev=65367&r1=65366&r2=65367&view=diff

==============================================================================
--- llvm/trunk/test/FrontendC++/2006-11-30-Pubnames.cpp (original)
+++ llvm/trunk/test/FrontendC++/2006-11-30-Pubnames.cpp Mon Feb 23 20:35:30 2009
@@ -1,7 +1,7 @@
 // This is a regression test on debug info to make sure that we can access 
 // qualified global names.
 // RUN: %llvmgcc -S -O0 -g %s -o - | llvm-as | \
-// RUN:   llc --disable-fp-elim -o %t.s -f
+// RUN:   llc --disable-fp-elim -o %t.s -f -fast
 // RUN: %compile_c %t.s -o %t.o
 // RUN: %link %t.o -o %t.exe
 // RUN: %llvmdsymutil %t.exe 

Modified: llvm/trunk/utils/TableGen/AsmWriterEmitter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/AsmWriterEmitter.cpp?rev=65367&r1=65366&r2=65367&view=diff

==============================================================================
--- llvm/trunk/utils/TableGen/AsmWriterEmitter.cpp (original)
+++ llvm/trunk/utils/TableGen/AsmWriterEmitter.cpp Mon Feb 23 20:35:30 2009
@@ -641,7 +641,8 @@
   O << "\";\n\n";
 
   O << "  if (TAI->doesSupportDebugInformation() &&\n"
-    << "      DW->ShouldEmitDwarfDebug()) {\n"
+    << "      DW->ShouldEmitDwarfDebug() &&\n"
+    << "      !DW->getFastCodeGen()) {\n"
     << "    const MachineFunction *MF = MI->getParent()->getParent();\n"
     << "    DebugLoc CurDL = MI->getDebugLoc();\n\n"
     << "    if (!CurDL.isUnknown()) {\n"





More information about the llvm-commits mailing list