[clang] [CIR] Split side_effect into memory effects, nounwind, and willreturn (PR #223890)

Andy Kaylor via cfe-commits cfe-commits at lists.llvm.org
Mon Sep 21 13:57:39 PDT 2026


================
@@ -411,6 +411,73 @@ static ParseResult parseFloatLiteral(AsmParser &parser,
   return success();
 }
 
+//===----------------------------------------------------------------------===//
+// MemoryEffectsAttr definitions
+//===----------------------------------------------------------------------===//
+
+MemoryEffectsAttr MemoryEffectsAttr::none(MLIRContext *ctx) {
+  return get(ctx, ModRefInfo::NoModRef);
+}
+
+MemoryEffectsAttr MemoryEffectsAttr::readOnly(MLIRContext *ctx) {
+  return get(ctx, ModRefInfo::Ref);
+}
+
+MemoryEffectsAttr MemoryEffectsAttr::writeOnly(MLIRContext *ctx) {
+  return get(ctx, ModRefInfo::Mod);
+}
+
+MemoryEffectsAttr MemoryEffectsAttr::argMemOnly(MLIRContext *ctx,
+                                                ModRefInfo mr) {
+  return get(ctx, ModRefInfo::NoModRef, mr, ModRefInfo::NoModRef,
----------------
andykaylor wrote:

These would benefit from comments indicating what each argument means -- `/
```suggestion
  return get(ctx, /*other=*/ModRefInfo::NoModRef, /*arg_mem=*/mr, /*inaccessible_mem=*/ModRefInfo::NoModRef,
  etc.
```

https://github.com/llvm/llvm-project/pull/223890


More information about the cfe-commits mailing list