DAGCombiner: Partially revert r192795, getNOT was fixed not to create illegal constants.
authorBenjamin Kramer <benny.kra@googlemail.com>
Sun, 17 Nov 2013 10:40:03 +0000 (10:40 +0000)
committerBenjamin Kramer <benny.kra@googlemail.com>
Sun, 17 Nov 2013 10:40:03 +0000 (10:40 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194959 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SelectionDAG/DAGCombiner.cpp
test/CodeGen/X86/xor.ll

index 78543a4113d5f90e73fe85c0ffa50e48a977de8b..15b4ddc0338a4005482d50f6a3f17efe3aaab333 100644 (file)
@@ -3576,7 +3576,7 @@ SDValue DAGCombiner::visitXOR(SDNode *N) {
   }
   // fold (xor (and x, y), y) -> (and (not x), y)
   if (N0.getOpcode() == ISD::AND && N0.getNode()->hasOneUse() &&
-      N0->getOperand(1) == N1 && isTypeLegal(VT.getScalarType())) {
+      N0->getOperand(1) == N1) {
     SDValue X = N0->getOperand(0);
     SDValue NotX = DAG.getNOT(SDLoc(X), X, VT);
     AddToWorkList(NotX.getNode());
index be2ea525b156f81b47c749a8926d0fd47b23d8cf..fd8e1b4cebaa4043a21a345a66a55964df0cd095 100644 (file)
@@ -178,4 +178,6 @@ define i32 @PR17487(i1 %tobool) {
 
 ; X64-LABEL: PR17487:
 ; X64: andn
+; X32-LABEL: PR17487:
+; X32: andn
 }