[llvm] r221827 - [CodeGenPrepare] Replace other uses of EVT::getEVT with TL::getValueType.
Ahmed Bougacha
ahmed.bougacha at gmail.com
Wed Nov 12 15:05:03 PST 2014
Author: ab
Date: Wed Nov 12 17:05:03 2014
New Revision: 221827
URL: http://llvm.org/viewvc/llvm-project?rev=221827&view=rev
Log:
[CodeGenPrepare] Replace other uses of EVT::getEVT with TL::getValueType.
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.
Modified:
llvm/trunk/lib/CodeGen/CodeGenPrepare.cpp
Modified: llvm/trunk/lib/CodeGen/CodeGenPrepare.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/CodeGenPrepare.cpp?rev=221827&r1=221826&r2=221827&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/CodeGenPrepare.cpp (original)
+++ llvm/trunk/lib/CodeGen/CodeGenPrepare.cpp Wed Nov 12 17:05:03 2014
@@ -2024,8 +2024,8 @@ AddressingModeMatcher::IsPromotionProfit
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
More information about the llvm-commits
mailing list