================
@@ -286,16 +286,28 @@ class OpenACCClauseCIREmitter final
             std::move(bounds)};
   }
 
+  mlir::acc::DataClauseModifier
+  convertModifiers(OpenACCModifierKind modifiers) {
+    using namespace mlir::acc;
+    DataClauseModifier mlirModifiers{};
+
+    // The MLIR representation of this represents `always` as `alwaysin` +
+    // `alwaysout`.  So do a small fixup here.
+    if (isOpenACCModifierBitSet(modifiers, OpenACCModifierKind::Always)) {
----------------
erichkeane wrote:

Unfortunately not on the using the same type.  The FE and the MLIR have 
different needs when it comes to tracking `always`.  CFE needs to differentiate 
`always` from someone typing `alwaysin` and `alwaysout` for diagnostics 
purposes.  The MLIR passes need `always`->`alwaysin|alwaysout` to ensure they 
don't miss opt.

The static assert however is a great idea!

https://github.com/llvm/llvm-project/pull/145770
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to