summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/GlobalISel/InstructionSelect.cpp
diff options
context:
space:
mode:
authorTim Northover <tnorthover@apple.com>2017-02-24 21:21:38 +0000
committerTim Northover <tnorthover@apple.com>2017-02-24 21:21:38 +0000
commitef29e7284b355e5ca8931e73bf6312d33a549c23 (patch)
tree97527a76f6ea7a01ec8d543b86b620f5068c61cb /llvm/lib/CodeGen/GlobalISel/InstructionSelect.cpp
parentcd72f156d693aa61a93c1369daf51e43b9982c78 (diff)
downloadbcm5719-llvm-ef29e7284b355e5ca8931e73bf6312d33a549c23.tar.gz
bcm5719-llvm-ef29e7284b355e5ca8931e73bf6312d33a549c23.zip
GlobalISel: check for CImm rather than Imm on G_CONSTANTs.
All G_CONSTANTS created by the MachineIRBuilder have an operand of type CImm (i.e. a ConstantInt), so that's what the selector needs to look for. llvm-svn: 296176
Diffstat (limited to 'llvm/lib/CodeGen/GlobalISel/InstructionSelect.cpp')
-rw-r--r--llvm/lib/CodeGen/GlobalISel/InstructionSelect.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/GlobalISel/InstructionSelect.cpp b/llvm/lib/CodeGen/GlobalISel/InstructionSelect.cpp
index a38ff00ed41..c1e4a8661a2 100644
--- a/llvm/lib/CodeGen/GlobalISel/InstructionSelect.cpp
+++ b/llvm/lib/CodeGen/GlobalISel/InstructionSelect.cpp
@@ -20,6 +20,7 @@
#include "llvm/CodeGen/MachineOptimizationRemarkEmitter.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/CodeGen/TargetPassConfig.h"
+#include "llvm/IR/Constants.h"
#include "llvm/IR/Function.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Debug.h"
@@ -187,8 +188,10 @@ bool InstructionSelector::isOperandImmEqual(
MachineInstr *Def = MRI.getVRegDef(MO.getReg());
if (Def->getOpcode() != TargetOpcode::G_CONSTANT)
return false;
- assert(Def->getOperand(1).isImm() && "G_CONSTANT values must be constants");
- return Def->getOperand(1).getImm() == Value;
+ assert(Def->getOperand(1).isCImm() &&
+ "G_CONSTANT values must be constants");
+ const ConstantInt &Imm = *Def->getOperand(1).getCImm();
+ return Imm.getBitWidth() <= 64 && Imm.getSExtValue() == Value;
}
return false;
OpenPOWER on IntegriCloud