diff options
author | Djordje Todorovic <djordje.todorovic@rt-rk.com> | 2020-02-27 11:44:53 +0100 |
---|---|---|
committer | Djordje Todorovic <djordje.todorovic@rt-rk.com> | 2020-02-27 13:57:06 +0100 |
commit | 016d91ccbd4d434aa90fbfa6fd28e9da1abc9279 (patch) | |
tree | 6f5bd8ac2fe4db9052351fa2dd0f527074a0664d /llvm/lib/CodeGen/MachineInstr.cpp | |
parent | fa9439fac84ea4eb4050aa1ae150c0ec2cf86c20 (diff) | |
download | llvm-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.cpp | 10 |
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()) |