Revert commit 126684 "Use the correct shift amount type". It is only the correct
authorDuncan Sands <baldrick@free.fr>
Fri, 4 Mar 2011 14:28:59 +0000 (14:28 +0000)
committerDuncan Sands <baldrick@free.fr>
Fri, 4 Mar 2011 14:28:59 +0000 (14:28 +0000)
type after type legalization has completed.  Before then it may simply not be big
enough to hold the shift amount, particularly on x86 which uses a very small type
for shifts (this issue broke stuff in the past which is why LegalizeTypes carefully
uses a large type for shift amounts).

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

lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp

index 0f7359d832a9381f34fab0b309a8ee4660896f83..935aab0e59afed4c86add5b9f1646a896017efe4 100644 (file)
@@ -226,7 +226,7 @@ SDValue DAGTypeLegalizer::PromoteIntRes_BSWAP(SDNode *N) {
 
   unsigned DiffBits = NVT.getSizeInBits() - OVT.getSizeInBits();
   return DAG.getNode(ISD::SRL, dl, NVT, DAG.getNode(ISD::BSWAP, dl, NVT, Op),
-                     DAG.getConstant(DiffBits, TLI.getShiftAmountTy(NVT)));
+                     DAG.getConstant(DiffBits, TLI.getPointerTy()));
 }
 
 SDValue DAGTypeLegalizer::PromoteIntRes_BUILD_PAIR(SDNode *N) {