[llvm-commits] [llvm] r112997 - /llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp

Bob Wilson bob.wilson at apple.com
Fri Sep 3 12:20:37 PDT 2010


Author: bwilson
Date: Fri Sep  3 14:20:37 2010
New Revision: 112997

URL: http://llvm.org/viewvc/llvm-project?rev=112997&view=rev
Log:
Add a missing check when legalizing a vector extending load.  This doesn't
solve the root problem, but it corrects the bug in the code I added to
support legalizing in the case where the non-extended type is also legal.

Modified:
    llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp

Modified: llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp?rev=112997&r1=112996&r2=112997&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp (original)
+++ llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp Fri Sep  3 14:20:37 2010
@@ -1313,9 +1313,7 @@
           }
           break;
         case TargetLowering::Expand:
-          if (!TLI.isLoadExtLegal(ISD::EXTLOAD, SrcVT)) {
-            // FIXME: If SrcVT isn't legal, then this introduces an illegal
-            // type.
+          if (!TLI.isLoadExtLegal(ISD::EXTLOAD, SrcVT) && isTypeLegal(SrcVT)) {
             SDValue Load = DAG.getLoad(SrcVT, dl, Tmp1, Tmp2, LD->getSrcValue(),
                                        LD->getSrcValueOffset(),
                                        LD->isVolatile(), LD->isNonTemporal(),
@@ -1335,6 +1333,10 @@
             Tmp2 = LegalizeOp(Load.getValue(1));
             break;
           }
+          // FIXME: This does not work for vectors on most targets.  Sign- and
+          // zero-extend operations are currently folded into extending loads,
+          // whether they are legal or not, and then we end up here without any
+          // support for legalizing them.
           assert(ExtType != ISD::EXTLOAD &&
                  "EXTLOAD should always be supported!");
           // Turn the unsupported load into an EXTLOAD followed by an explicit





More information about the llvm-commits mailing list