aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/MachineInstr.cpp
diff options
context:
space:
mode:
authorDjordje Todorovic <djordje.todorovic@rt-rk.com>2020-02-27 11:44:53 +0100
committerDjordje Todorovic <djordje.todorovic@rt-rk.com>2020-02-27 13:57:06 +0100
commit016d91ccbd4d434aa90fbfa6fd28e9da1abc9279 (patch)
tree6f5bd8ac2fe4db9052351fa2dd0f527074a0664d /llvm/lib/CodeGen/MachineInstr.cpp
parentfa9439fac84ea4eb4050aa1ae150c0ec2cf86c20 (diff)
downloadllvm-016d91ccbd4d434aa90fbfa6fd28e9da1abc9279.zip
llvm-016d91ccbd4d434aa90fbfa6fd28e9da1abc9279.tar.gz
llvm-016d91ccbd4d434aa90fbfa6fd28e9da1abc9279.tar.bz2
[CallSiteInfo] Handle bundles when updating call site info
This will address the issue: P8198 and P8199 (from D73534). The methods was not handle bundles properly. Differential Revision: https://reviews.llvm.org/D74904
Diffstat (limited to 'llvm/lib/CodeGen/MachineInstr.cpp')
-rw-r--r--llvm/lib/CodeGen/MachineInstr.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/MachineInstr.cpp b/llvm/lib/CodeGen/MachineInstr.cpp
index a704175..2eba41c 100644
--- a/llvm/lib/CodeGen/MachineInstr.cpp
+++ b/llvm/lib/CodeGen/MachineInstr.cpp
@@ -697,8 +697,8 @@ void MachineInstr::eraseFromBundle() {
getParent()->erase_instr(this);
}
-bool MachineInstr::isCandidateForCallSiteEntry() const {
- if (!isCall(MachineInstr::IgnoreBundle))
+bool MachineInstr::isCandidateForCallSiteEntry(QueryType Type) const {
+ if (!isCall(Type))
return false;
switch (getOpcode()) {
case TargetOpcode::PATCHABLE_EVENT_CALL:
@@ -711,6 +711,12 @@ bool MachineInstr::isCandidateForCallSiteEntry() const {
return true;
}
+bool MachineInstr::shouldUpdateCallSiteInfo() const {
+ if (isBundle())
+ return isCandidateForCallSiteEntry(MachineInstr::AnyInBundle);
+ return isCandidateForCallSiteEntry();
+}
+
unsigned MachineInstr::getNumExplicitOperands() const {
unsigned NumOperands = MCID->getNumOperands();
if (!MCID->isVariadic())