summaryrefslogtreecommitdiffstats
path: root/llvm/utils
diff options
context:
space:
mode:
authorQingShan Zhang <qshanz@cn.ibm.com>2019-10-11 08:36:54 +0000
committerQingShan Zhang <qshanz@cn.ibm.com>2019-10-11 08:36:54 +0000
commitbb8d54001075ed22fc63d366e33c3fcdfa3fd3e0 (patch)
tree884347f1535fd165bde364fcc8e2c8236e0636a2 /llvm/utils
parente0cb1cf7e3689bdd48ef996da1780819ebc60bc0 (diff)
downloadbcm5719-llvm-bb8d54001075ed22fc63d366e33c3fcdfa3fd3e0.tar.gz
bcm5719-llvm-bb8d54001075ed22fc63d366e33c3fcdfa3fd3e0.zip
[TableGen] Fix a bug that MCSchedClassDesc is interfered between different SchedModel
Assume that, ModelA has scheduling resource for InstA and ModelB has scheduling resource for InstB. This is what the llvm::MCSchedClassDesc looks like: llvm::MCSchedClassDesc ModelASchedClasses[] = { ... InstA, 0, ... InstB, -1,... }; llvm::MCSchedClassDesc ModelBSchedClasses[] = { ... InstA, -1,... InstB, 0,... }; The -1 means invalid num of macro ops, while it is valid if it is >=0. This is what we look like now: llvm::MCSchedClassDesc ModelASchedClasses[] = { ... InstA, 0, ... InstB, 0,... }; llvm::MCSchedClassDesc ModelBSchedClasses[] = { ... InstA, 0,... InstB, 0,... }; And compiler hit the assertion here because the SCDesc is valid now for both InstA and InstB. Differential Revision: https://reviews.llvm.org/D67950 llvm-svn: 374524
Diffstat (limited to 'llvm/utils')
-rw-r--r--llvm/utils/TableGen/SubtargetEmitter.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/llvm/utils/TableGen/SubtargetEmitter.cpp b/llvm/utils/TableGen/SubtargetEmitter.cpp
index f9705723650..9b094adb7d5 100644
--- a/llvm/utils/TableGen/SubtargetEmitter.cpp
+++ b/llvm/utils/TableGen/SubtargetEmitter.cpp
@@ -1057,6 +1057,7 @@ void SubtargetEmitter::GenSchedClassTables(const CodeGenProcModel &ProcModel,
LLVM_DEBUG(dbgs() << ProcModel.ModelName
<< " does not have resources for class " << SC.Name
<< '\n');
+ SCDesc.NumMicroOps = MCSchedClassDesc::InvalidNumMicroOps;
}
}
// Sum resources across all operand writes.
OpenPOWER on IntegriCloud