summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
diff options
context:
space:
mode:
authorAmara Emerson <aemerson@apple.com>2018-02-01 20:47:03 +0000
committerAmara Emerson <aemerson@apple.com>2018-02-01 20:47:03 +0000
commitcbc02c71a4be9dcd4cd7f9a82c9d1cac3c51ca6a (patch)
tree43058b6ba0745bda310dd8b30fb29127115dceea /llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
parent4536c1f5695be17d31d2f73556c2c06f30e4f4eb (diff)
downloadbcm5719-llvm-cbc02c71a4be9dcd4cd7f9a82c9d1cac3c51ca6a.tar.gz
bcm5719-llvm-cbc02c71a4be9dcd4cd7f9a82c9d1cac3c51ca6a.zip
[GlobalISel] Fix assert failure when legalizing non-power-2 loads.
Until we support extending loads properly we're going to fall back for these. We already handle stores in the same way, so this is just being consistent. llvm-svn: 324001
Diffstat (limited to 'llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp')
-rw-r--r--llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp b/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
index 773e51c6e34..ed1f0c9cb16 100644
--- a/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
+++ b/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
@@ -709,9 +709,12 @@ LegalizerHelper::widenScalar(MachineInstr &MI, unsigned TypeIdx, LLT WideTy) {
return Legalized;
}
case TargetOpcode::G_LOAD: {
- assert(alignTo(MRI.getType(MI.getOperand(0).getReg()).getSizeInBits(), 8) ==
- WideTy.getSizeInBits() &&
- "illegal to increase number of bytes loaded");
+ // For some types like i24, we might try to widen to i32. To properly handle
+ // this we should be using a dedicated extending load, until then avoid
+ // trying to legalize.
+ if (alignTo(MRI.getType(MI.getOperand(0).getReg()).getSizeInBits(), 8) !=
+ WideTy.getSizeInBits())
+ return UnableToLegalize;
unsigned DstExt = MRI.createGenericVirtualRegister(WideTy);
MIRBuilder.buildLoad(DstExt, MI.getOperand(1).getReg(),
OpenPOWER on IntegriCloud