Do not create ZEXTLOAD's unless we are before legalize or the operation is
authorChris Lattner <sabre@nondot.org>
Tue, 4 Apr 2006 17:39:18 +0000 (17:39 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 4 Apr 2006 17:39:18 +0000 (17:39 +0000)
legal.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27402 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SelectionDAG/DAGCombiner.cpp

index c982e5be8fc0d4d2fd4756f492d393767e9c9a2e..a5925ad69c6e36f5daf627a742e78e4e984e76b2 100644 (file)
@@ -1193,7 +1193,8 @@ SDOperand DAGCombiner::visitAND(SDNode *N) {
     
     LoadedVT = N0.getOpcode() == ISD::LOAD ? VT :
                            cast<VTSDNode>(N0.getOperand(3))->getVT();
-    if (EVT != MVT::Other && LoadedVT > EVT) {
+    if (EVT != MVT::Other && LoadedVT > EVT &&
+        (!AfterLegalize || TLI.isOperationLegal(ISD::ZEXTLOAD, EVT))) {
       MVT::ValueType PtrType = N0.getOperand(1).getValueType();
       // For big endian targets, we need to add an offset to the pointer to load
       // the correct bytes.  For little endian systems, we merely need to read