[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