diff options
| author | Amir Ayupov <aaupov@fb.com> | 2025-06-08 17:43:02 -0700 |
|---|---|---|
| committer | Amir Ayupov <aaupov@fb.com> | 2025-06-08 17:43:02 -0700 |
| commit | 68b99df7ad1b910378c8cda5afff637fbe3c0efc (patch) | |
| tree | 1d2e51419c3f89a0909603d355598c27f1a92d42 /llvm/lib/CodeGen/CodeGenPrepare.cpp | |
| parent | bbbecc425389aeb7b93d9018b40a95b389c27f40 (diff) | |
| parent | c480dcddd91e3ff0707d6629e6ddac8587d9d1f1 (diff) | |
[𝘀𝗽𝗿] changes introduced through rebaseusers/aaupov/spr/main.bolt-sort-entrydata
Created using spr 1.3.4
[skip ci]
Diffstat (limited to 'llvm/lib/CodeGen/CodeGenPrepare.cpp')
| -rw-r--r-- | llvm/lib/CodeGen/CodeGenPrepare.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/CodeGenPrepare.cpp b/llvm/lib/CodeGen/CodeGenPrepare.cpp index 822ed6283117..32348a899683 100644 --- a/llvm/lib/CodeGen/CodeGenPrepare.cpp +++ b/llvm/lib/CodeGen/CodeGenPrepare.cpp @@ -5945,8 +5945,17 @@ bool CodeGenPrepare::optimizeMemoryInst(Instruction *MemoryInst, Value *Addr, // The current BB may be optimized multiple times, we can't guarantee the // reuse of Addr happens later, call findInsertPos to find an appropriate // insert position. - IRBuilder<> Builder(MemoryInst->getParent(), - findInsertPos(Addr, MemoryInst, SunkAddr)); + auto InsertPos = findInsertPos(Addr, MemoryInst, SunkAddr); + + // TODO: Adjust insert point considering (Base|Scaled)Reg if possible. + if (!SunkAddr) { + auto &DT = getDT(*MemoryInst->getFunction()); + if ((AddrMode.BaseReg && !DT.dominates(AddrMode.BaseReg, &*InsertPos)) || + (AddrMode.ScaledReg && !DT.dominates(AddrMode.ScaledReg, &*InsertPos))) + return Modified; + } + + IRBuilder<> Builder(MemoryInst->getParent(), InsertPos); if (SunkAddr) { LLVM_DEBUG(dbgs() << "CGP: Reusing nonlocal addrmode: " << AddrMode |
