[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

Evan Cheng echeng at apple.com
Mon Feb 23 22:20:18 PST 2009


On Feb 23, 2009, at 6:35 PM, Bill Wendling wrote:

>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- 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; }
> };

Bill, is this necessary? See LLVMTargetMachine.cpp:

   case TargetMachine::AssemblyFile:
     if (addAssemblyEmitter(PM, Fast, Out))
       return FileModel::Error;

It's passing in "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);

This shouldn't be necessary.

>
>
>       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) {

Ewww. Legalizer shouldn't have to do this. Is this code even  
exercised? I don't see ISD::DBG_STOPPOINT ever being generated. If  
not, we should just make the default expansion to its chain.

Thanks,

Evan

>
> @@ -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"
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits




More information about the llvm-commits mailing list