[llvm-commits] [llvm] r60997 - in /llvm/trunk: include/llvm/CodeGen/SelectionDAG.h lib/CodeGen/SelectionDAG/LegalizeDAG.cpp lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp

Bill Wendling isanbard at gmail.com
Sat Dec 13 15:53:13 PST 2008


Duncan,

This patch is causing this failure:

Running /Users/void/llvm/llvm.src/test/CodeGen/Generic/dg.exp ...
FAIL: /Users/void/llvm/llvm.src/test/CodeGen/Generic/asm-large- 
immediate.ll
Failed with exit(1) at line 1
while running:  llvm-as < /Users/void/llvm/llvm.src/test/CodeGen/ 
Generic/asm-large-immediate.ll |  llc | /usr/bin/grep 68719476738
Assertion failed: ((TypesNeedLegalizing || getTypeAction(VT) == Legal)  
&& "Illegal type introduced after type legalization?"), function  
HandleOp, file /Users/void/llvm/llvm.src/lib/CodeGen/SelectionDAG/ 
LegalizeDAG.cpp, line 493.
0   llc               0x0085392e char const* std::find<char const*,  
char>(char const*, char const*, char const&) + 98
1   llc               0x00853e63  
llvm::sys::PrintStackTraceOnErrorSignal() + 593
2   libSystem.B.dylib 0x96cac09b _sigtramp + 43
3   libSystem.B.dylib 0xffffffff _sigtramp + 1765097359
4   libSystem.B.dylib 0x96d24ec2 raise + 26
5   libSystem.B.dylib 0x96d3447f abort + 73
6   libSystem.B.dylib 0x96d26063 __assert_rtn + 101
7   llc               0x004f9018  
llvm::cast_retty<llvm::SubprogramDesc, llvm::DebugInfoDesc*>::ret_type  
llvm::cast<llvm::Sub

I temporarily reverted the change. Could you look into this?

Thanks!
-bw

On Dec 13, 2008, at 2:33 PM, Duncan Sands wrote:

> Author: baldrick
> Date: Sat Dec 13 16:33:38 2008
> New Revision: 60997
>
> URL: http://llvm.org/viewvc/llvm-project?rev=60997&view=rev
> Log:
> LegalizeDAG is not supposed to introduce illegal
> types into the DAG if they were not already there.
> Check this with an assertion.
>
> Modified:
>    llvm/trunk/include/llvm/CodeGen/SelectionDAG.h
>    llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
>    llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
>
> Modified: llvm/trunk/include/llvm/CodeGen/SelectionDAG.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/SelectionDAG.h?rev=60997&r1=60996&r2=60997&view=diff
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- llvm/trunk/include/llvm/CodeGen/SelectionDAG.h (original)
> +++ llvm/trunk/include/llvm/CodeGen/SelectionDAG.h Sat Dec 13  
> 16:33:38 2008
> @@ -212,7 +212,7 @@
>   ///
>   /// Note that this is an involved process that may invalidate  
> pointers into
>   /// the graph.
> -  void Legalize();
> +  void Legalize(bool TypesNeedLegalizing);
>
>   /// RemoveDeadNodes - This method deletes all unreachable nodes in  
> the
>   /// SelectionDAG.
>
> Modified: llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp?rev=60997&r1=60996&r2=60997&view=diff
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp (original)
> +++ llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp Sat Dec 13  
> 16:33:38 2008
> @@ -51,6 +51,7 @@
> class VISIBILITY_HIDDEN SelectionDAGLegalize {
>   TargetLowering &TLI;
>   SelectionDAG &DAG;
> +  bool TypesNeedLegalizing;
>
>   // Libcall insertion helpers.
>
> @@ -127,7 +128,7 @@
>   }
>
> public:
> -  explicit SelectionDAGLegalize(SelectionDAG &DAG);
> +  explicit SelectionDAGLegalize(SelectionDAG &DAG, bool  
> TypesNeedLegalizing);
>
>   /// 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
> @@ -348,8 +349,8 @@
>   return TLI.isShuffleMaskLegal(Mask, VT) ? Mask.getNode() : 0;
> }
>
> -SelectionDAGLegalize::SelectionDAGLegalize(SelectionDAG &dag)
> -  : TLI(dag.getTargetLoweringInfo()), DAG(dag),
> +SelectionDAGLegalize::SelectionDAGLegalize(SelectionDAG &dag, bool  
> types)
> +  : TLI(dag.getTargetLoweringInfo()), DAG(dag),  
> TypesNeedLegalizing(types),
>     ValueTypeActions(TLI.getValueTypeActions()) {
>   assert(MVT::LAST_VALUETYPE <= 32 &&
>          "Too many value types for ValueTypeActions to hold!");
> @@ -488,6 +489,8 @@
> /// appropriate for its type.
> void SelectionDAGLegalize::HandleOp(SDValue Op) {
>   MVT VT = Op.getValueType();
> +  assert((TypesNeedLegalizing || getTypeAction(VT) == Legal) &&
> +         "Illegal type introduced after type legalization?");
>   switch (getTypeAction(VT)) {
>   default: assert(0 && "Bad type action!");
>   case Legal:   (void)LegalizeOp(Op); break;
> @@ -8602,9 +8605,9 @@
>
> // SelectionDAG::Legalize - This is the entry point for the file.
> //
> -void SelectionDAG::Legalize() {
> +void SelectionDAG::Legalize(bool TypesNeedLegalizing) {
>   /// run - This is the main entry point to this class.
>   ///
> -  SelectionDAGLegalize(*this).LegalizeDAG();
> +  SelectionDAGLegalize(*this, TypesNeedLegalizing).LegalizeDAG();
> }
>
>
> Modified: llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp?rev=60997&r1=60996&r2=60997&view=diff
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp  
> (original)
> +++ llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp Sat Dec  
> 13 16:33:38 2008
> @@ -620,9 +620,9 @@
>
>   if (TimePassesIsEnabled) {
>     NamedRegionTimer T("DAG Legalization", GroupName);
> -    CurDAG->Legalize();
> +    CurDAG->Legalize(DisableLegalizeTypes);
>   } else {
> -    CurDAG->Legalize();
> +    CurDAG->Legalize(DisableLegalizeTypes);
>   }
>
>   DOUT << "Legalized selection DAG:\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