[llvm] [AArch64][InstCombine] Eliminate redundant barrier intrinsics (PR #112023)
David Sherwood via llvm-commits
llvm-commits at lists.llvm.org
Mon Oct 14 08:49:40 PDT 2024
================
@@ -2150,13 +2150,42 @@ static std::optional<Instruction *> instCombineSVEInsr(InstCombiner &IC,
return std::nullopt;
}
+static std::optional<Instruction *> instCombineDMB(InstCombiner &IC,
+ IntrinsicInst &II) {
+ // If this barrier is post-dominated by identical one we can remove it
+ auto *NI = II.getNextNonDebugInstruction();
+ int LookaheadThreshold = 10;
+ auto CanSkipOver = [](Instruction *I) {
+ return !I->mayReadOrWriteMemory() && !I->mayHaveSideEffects();
+ };
+ while (--LookaheadThreshold && !isa<IntrinsicInst>(NI)) {
----------------
david-arm wrote:
Can you fold the call below into the while statement - does that work out neater? For example:
```
while (--LookaheadThreshold && !isa<IntrinsicInst>(NI) && CanSkipOver(NI)) {
auto *NIBB = NI->getParent();
...
```
https://github.com/llvm/llvm-project/pull/112023
More information about the llvm-commits
mailing list