================
@@ -158,24 +170,27 @@ mlir::LogicalResult
CIRGenFunction::emitOpenACCOpAssociatedStmt(
llvm::SmallVector<mlir::Type> retTy;
llvm::SmallVector<mlir::Value> operands;
-
- // Clause-emitter must be here because it might modify operands.
- OpenACCClauseCIREmitter clauseEmitter(getCIRGenModule(), dirKind, dirLoc);
- clauseEmitter.VisitClauseList(clauses);
-
auto op = builder.create<Op>(start, retTy, operands);
- // Apply the attributes derived from the clauses.
- clauseEmitter.applyAttributes(builder, op);
+ {
+ mlir::OpBuilder::InsertionGuard guardCase(builder);
+ // Sets insertion point before the 'op', since every new expression needs
to
+ // be before the operation.
+ builder.setInsertionPoint(op);
----------------
erichkeane wrote:
See here for the magic around getting the 'insertion' point right. We now only
view the clauses information 1x in the emitter (rather than collect data, then
emit data for attributes), but all of the ops they 'insert' need to happen
before the OpenACC operation.
https://github.com/llvm/llvm-project/pull/135851
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits