aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/MachineInstr.cpp
diff options
context:
space:
mode:
authorChen Zheng <czhengsz@cn.ibm.com>2020-10-07 00:12:21 -0400
committerChen Zheng <czhengsz@cn.ibm.com>2020-10-07 00:12:21 -0400
commited46e84c7aaffd847656ac559acb06089096ec33 (patch)
treeccff4eb2915b5a853a0d3f2ed4f1229ab4c71bf5 /llvm/lib/CodeGen/MachineInstr.cpp
parentf05608707c641423a4cd4d5923a44cda153ebbcb (diff)
downloadllvm-ed46e84c7aaffd847656ac559acb06089096ec33.zip
llvm-ed46e84c7aaffd847656ac559acb06089096ec33.tar.gz
llvm-ed46e84c7aaffd847656ac559acb06089096ec33.tar.bz2
[MachineInstr] exclude call instruction in mayAlias
we now get noAlias result for a call instruction and other load/store/call instructions if we query mayAlias. This is not right as call instruction is not with mayloadorstore, but it may alter the memory. This patch fixes this wrong alias query. Differential Revision: https://reviews.llvm.org/D87490
Diffstat (limited to 'llvm/lib/CodeGen/MachineInstr.cpp')
-rw-r--r--llvm/lib/CodeGen/MachineInstr.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/MachineInstr.cpp b/llvm/lib/CodeGen/MachineInstr.cpp
index ebae5eb..c5c3f8c 100644
--- a/llvm/lib/CodeGen/MachineInstr.cpp
+++ b/llvm/lib/CodeGen/MachineInstr.cpp
@@ -1236,6 +1236,11 @@ bool MachineInstr::mayAlias(AAResults *AA, const MachineInstr &Other,
const TargetInstrInfo *TII = MF->getSubtarget().getInstrInfo();
const MachineFrameInfo &MFI = MF->getFrameInfo();
+ // Execulde call instruction which may alter the memory but can not be handled
+ // by this function.
+ if (isCall() || Other.isCall())
+ return true;
+
// If neither instruction stores to memory, they can't alias in any
// meaningful way, even if they read from the same address.
if (!mayStore() && !Other.mayStore())