[CodeGenPrepare] Replace other uses of EVT::getEVT with TL::getValueType.
authorAhmed Bougacha <ahmed.bougacha@gmail.com>
Wed, 12 Nov 2014 23:05:03 +0000 (23:05 +0000)
committerAhmed Bougacha <ahmed.bougacha@gmail.com>
Wed, 12 Nov 2014 23:05:03 +0000 (23:05 +0000)
r221820 fixed a problem (PR21548) where an iPTR was used in TLI legality checks,
which isn't valid and resulted in a failed assertion.
The solution was to lower pointer types into the correct target's VT, by
using TL::getValueType instead of EVT::getEVT.

This commit changes 3 other uses of EVT::getEVT, but without any tests:
- One of these non-lowered EVTs is passed to allowsMisalignedMemoryAccesses,
which goes into target's TL implementation and doesn't cause any problem (yet.)
- Two others are passed to TLI.isOperationLegalOrCustom:
  - one only looks at extensions, so doesn't concern pointers.
  - one only looks at binary operators, so also isn't a problem.

The latter might some day be exposed to pointers and cause the same assert as
the original PR, because there's a comment hinting at also supporting cast ops.

For consistency, update all of them and be done with it.

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

lib/CodeGen/CodeGenPrepare.cpp

index bea75a2f2ad3ff7d5916876d14520f4c9f124019..60539a981ac353df46422add7b38ecef78eef75d 100644 (file)
@@ -2024,8 +2024,8 @@ AddressingModeMatcher::IsPromotionProfitable(unsigned MatchedSize,
   if (!ISDOpcode)
     return true;
   // Otherwise, check if the promoted instruction is legal or not.
-  return TLI.isOperationLegalOrCustom(ISDOpcode,
-                                      EVT::getEVT(PromotedInst->getType()));
+  return TLI.isOperationLegalOrCustom(
+      ISDOpcode, TLI.getValueType(PromotedInst->getType()));
 }
 
 /// MatchOperationAddr - Given an instruction or constant expr, see if we can
@@ -3272,7 +3272,7 @@ class VectorPromoteHelper {
     unsigned Align = ST->getAlignment();
     // Check if this store is supported.
     if (!TLI.allowsMisalignedMemoryAccesses(
-            EVT::getEVT(ST->getValueOperand()->getType()), AS, Align)) {
+            TLI.getValueType(ST->getValueOperand()->getType()), AS, Align)) {
       // If this is not supported, there is no way we can combine
       // the extract with the store.
       return false;
@@ -3404,8 +3404,8 @@ public:
     if (!ISDOpcode)
       return false;
     return StressStoreExtract ||
-           TLI.isOperationLegalOrCustom(ISDOpcode,
-                                        EVT::getEVT(getTransitionType(), true));
+           TLI.isOperationLegalOrCustom(
+               ISDOpcode, TLI.getValueType(getTransitionType(), true));
   }
 
   /// \brief Check whether or not \p Use can be combined