@@ -429,18 +429,24 @@ struct MarkFunctionMemoryEffectsPass
429429 argEffectInfo.enzymexlaEffects );
430430
431431 if (isPointerType (funcOp.getArgument (i))) {
432- if (argEffectInfo.readOnly ) {
432+ llvm::dbgs () << " argEffectInfo.readOnly " << argEffectInfo.readOnly
433+ << " argEffectInfo.writeOnly " << argEffectInfo.writeOnly
434+ << " argEffectInfo.readNone " << argEffectInfo.readNone
435+ << " \n " ;
436+ if (argEffectInfo.readOnly && !argEffectInfo.readNone ) {
437+ assert (!argEffectInfo.writeOnly && " readOnly and writeOnly?" );
433438 funcOp.setArgAttr (i, LLVM::LLVMDialect::getReadonlyAttrName (),
434439 builder.getUnitAttr ());
435440 }
436- if (argEffectInfo.writeOnly ) {
441+ if (argEffectInfo.writeOnly && !argEffectInfo.readNone ) {
442+ assert (!argEffectInfo.readOnly && " writeOnly and readOnly?" );
437443 funcOp.setArgAttr (i, LLVM::LLVMDialect::getWriteOnlyAttrName (),
438444 builder.getUnitAttr ());
439445 }
440- // if (argEffectInfo.readNone) {
441- // funcOp.setArgAttr(i, LLVM::LLVMDialect::getReadnoneAttrName(),
442- // builder.getUnitAttr());
443- // }
446+ if (argEffectInfo.readNone ) {
447+ funcOp.setArgAttr (i, LLVM::LLVMDialect::getReadnoneAttrName (),
448+ builder.getUnitAttr ());
449+ }
444450 if (!argEffects[i][3 ]) {
445451 funcOp.setArgAttr (i, LLVM::LLVMDialect::getNoFreeAttrName (),
446452 builder.getUnitAttr ());
0 commit comments