summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-exegesis/lib/MCInstrDescView.cpp
diff options
context:
space:
mode:
authorGuillaume Chatelet <gchatelet@google.com>2018-06-13 13:53:56 +0000
committerGuillaume Chatelet <gchatelet@google.com>2018-06-13 13:53:56 +0000
commit60e3d582f664486507119dc2b7fc3a876b065664 (patch)
treeac00c0cb2c7c054e9e3ce29c8850b3960d7522b8 /llvm/tools/llvm-exegesis/lib/MCInstrDescView.cpp
parent3e039f86cccf39e18161cac86940a7c78563dcc4 (diff)
downloadbcm5719-llvm-60e3d582f664486507119dc2b7fc3a876b065664.tar.gz
bcm5719-llvm-60e3d582f664486507119dc2b7fc3a876b065664.zip
[llvm-exegesis] Fix failing assert when creating Snippet for LAHF.
Reviewers: courbet Subscribers: tschuett, llvm-commits Differential Revision: https://reviews.llvm.org/D48123 llvm-svn: 334599
Diffstat (limited to 'llvm/tools/llvm-exegesis/lib/MCInstrDescView.cpp')
-rw-r--r--llvm/tools/llvm-exegesis/lib/MCInstrDescView.cpp16
1 files changed, 10 insertions, 6 deletions
diff --git a/llvm/tools/llvm-exegesis/lib/MCInstrDescView.cpp b/llvm/tools/llvm-exegesis/lib/MCInstrDescView.cpp
index c57696979d5..110053829a6 100644
--- a/llvm/tools/llvm-exegesis/lib/MCInstrDescView.cpp
+++ b/llvm/tools/llvm-exegesis/lib/MCInstrDescView.cpp
@@ -208,13 +208,17 @@ static void randomize(const Variable &Var, llvm::MCOperand &AssignedValue) {
static void setRegisterOperandValue(const RegisterOperandAssignment &ROV,
InstructionInstance &II) {
assert(ROV.Op);
- assert(ROV.Op->IsExplicit);
- auto &AssignedValue = II.getValueFor(*ROV.Op);
- if (AssignedValue.isValid()) {
- assert(AssignedValue.isReg() && AssignedValue.getReg() == ROV.Reg);
- return;
+ if (ROV.Op->IsExplicit) {
+ auto &AssignedValue = II.getValueFor(*ROV.Op);
+ if (AssignedValue.isValid()) {
+ assert(AssignedValue.isReg() && AssignedValue.getReg() == ROV.Reg);
+ return;
+ }
+ AssignedValue = llvm::MCOperand::createReg(ROV.Reg);
+ } else {
+ assert(ROV.Op->ImplicitReg != nullptr);
+ assert(ROV.Reg == *ROV.Op->ImplicitReg);
}
- AssignedValue = llvm::MCOperand::createReg(ROV.Reg);
}
size_t randomBit(const llvm::BitVector &Vector) {
OpenPOWER on IntegriCloud