================
@@ -364,13 +377,31 @@ OpenACCAtomicConstruct::getAssociatedStmtInfo() const {
     // type, and 'x' is a scalar l value. As above, this can come in 2 forms;
     // Binary Operator or CXXOperatorCallExpr.
     std::pair<const Expr *, const Expr *> BinaryArgs =
-        getBinaryOpArgs(cast<const Expr>(getAssociatedStmt()));
+        getBinaryOpArgs(AssocStmt);
     // We want the L-value for ONLY the X side, so we ignore implicit casts. 
For
     // the right side (the expr), we emit it as an r-value so we need to
     // maintain implicit casts.
     return {/*v=*/nullptr, BinaryArgs.first->IgnoreImpCasts(),
             BinaryArgs.second};
   }
+  case OpenACCAtomicKind::None:
+  case OpenACCAtomicKind::Update: {
+    std::pair<bool, const Expr *> UnaryArgs = getUnaryOpArgs(AssocStmt);
+
+    // TODO: ERICH: Figure out what we are going to do to figure out this is an
----------------
erichkeane wrote:

Oh woops!  That comment ended up going stale when I figured out how I was going 
to do serialization with the little trickery of "create an alloca, save the 
value, run the expr, then load & yield" thing.  

At the time I thought I was going to have to do some sort of trickery to teach 
CIR-Gen how to differentiate between the two forms, but the above seems much 
more robust to me.  Anyway, removed the comment, thanks for the review!

https://github.com/llvm/llvm-project/pull/164836
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to