[Mlir-commits] [mlir] dc6cd6a - [mlir] Honor IntrHasSideEffects on IntrNoMem LLVM intrinsics (#212760)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Thu Jul 30 05:32:25 PDT 2026
Author: Benjamin Kramer
Date: 2026-07-30T14:32:20+02:00
New Revision: dc6cd6a29a0831d1a4d607162a1dbd07b556143a
URL: https://github.com/llvm/llvm-project/commit/dc6cd6a29a0831d1a4d607162a1dbd07b556143a
DIFF: https://github.com/llvm/llvm-project/commit/dc6cd6a29a0831d1a4d607162a1dbd07b556143a.diff
LOG: [mlir] Honor IntrHasSideEffects on IntrNoMem LLVM intrinsics (#212760)
`[IntrNoMem, IntrHasSideEffects]` is a perfectly valid intrinsic trait
combination, and MLIR would CSE/DCE those without checking. This mirrors
how LLVM models this, see getEffectiveME in IntrinsicEmitter.cpp
Added:
Modified:
mlir/tools/mlir-tblgen/LLVMIRIntrinsicGen.cpp
Removed:
################################################################################
diff --git a/mlir/tools/mlir-tblgen/LLVMIRIntrinsicGen.cpp b/mlir/tools/mlir-tblgen/LLVMIRIntrinsicGen.cpp
index 54cc4b79a36b1..ea72ae974c585 100644
--- a/mlir/tools/mlir-tblgen/LLVMIRIntrinsicGen.cpp
+++ b/mlir/tools/mlir-tblgen/LLVMIRIntrinsicGen.cpp
@@ -161,11 +161,15 @@ class LLVMIntrinsic {
}
/// Return true if the intrinsic may have side effects, i.e. does not have the
- /// `IntrNoMem` property.
+ /// `IntrNoMem` property or has the `IntrHasSideEffects` property.
bool hasSideEffects() const {
return llvm::none_of(
- record.getValueAsListOfDefs(fieldTraits),
- [](const Record *r) { return r->getName() == "IntrNoMem"; });
+ record.getValueAsListOfDefs(fieldTraits),
+ [](const Record *r) { return r->getName() == "IntrNoMem"; }) ||
+ llvm::any_of(record.getValueAsListOfDefs(fieldTraits),
+ [](const Record *r) {
+ return r->getName() == "IntrHasSideEffects";
+ });
}
/// Return true if the intrinsic is commutative, i.e. has the respective
More information about the Mlir-commits
mailing list