@@ -477,7 +477,7 @@ static std::string getVarNameFromValue(mlir::Value v) {
477
477
if (auto allocaOp = dyn_cast<AllocaOp>(srcOp))
478
478
return allocaOp.getName ().str ();
479
479
if (auto getElemOp = dyn_cast<GetMemberOp>(srcOp)) {
480
- auto parent = dyn_cast<AllocaOp>( getElemOp.getAddr ().getDefiningOp () );
480
+ auto parent = getElemOp.getAddr ().getDefiningOp <cir::AllocaOp>( );
481
481
if (parent) {
482
482
llvm::SmallString<128 > finalName;
483
483
llvm::raw_svector_ostream Out (finalName);
@@ -759,9 +759,9 @@ void LifetimeCheckPass::checkReturn(ReturnOp retOp) {
759
759
760
760
// The return value is loaded from the return slot before
761
761
// returning.
762
- auto loadOp = dyn_cast<LoadOp>( retOp.getOperand (0 ).getDefiningOp () );
762
+ auto loadOp = retOp.getOperand (0 ).getDefiningOp <cir::LoadOp>( );
763
763
assert (loadOp && " expected cir.load" );
764
- if (!isa<AllocaOp>( loadOp.getAddr ().getDefiningOp () ))
764
+ if (!loadOp.getAddr ().getDefiningOp <cir::AllocaOp>( ))
765
765
return ;
766
766
767
767
// Keep track of interesting lambda.
@@ -1082,10 +1082,10 @@ void LifetimeCheckPass::checkCoroTaskStore(StoreOp storeOp) {
1082
1082
// Bind values that are coming from alloca's (like %arg0 above) to the
1083
1083
// pset of %task - this effectively leads to some invalidation of %task
1084
1084
// when %arg0 finishes its lifetime at the end of the enclosing cir.scope.
1085
- if (auto call = dyn_cast <cir::CallOp>(taskTmp. getDefiningOp () )) {
1085
+ if (auto call = taskTmp. getDefiningOp <cir::CallOp>()) {
1086
1086
bool potentialTaintedTask = false ;
1087
1087
for (auto arg : call.getArgOperands ()) {
1088
- auto alloca = dyn_cast <cir::AllocaOp>(arg. getDefiningOp () );
1088
+ auto alloca = arg. getDefiningOp <cir::AllocaOp>();
1089
1089
if (alloca && currScope->localValues .count (alloca)) {
1090
1090
getPmap ()[taskAddr].insert (State::getLocalValue (alloca));
1091
1091
potentialTaintedTask = true ;
@@ -1102,11 +1102,11 @@ void LifetimeCheckPass::checkCoroTaskStore(StoreOp storeOp) {
1102
1102
}
1103
1103
1104
1104
mlir::Value LifetimeCheckPass::getLambdaFromMemberAccess (mlir::Value addr) {
1105
- auto op = addr.getDefiningOp ();
1106
1105
// FIXME: we likely want to consider more indirections here...
1107
- if (!isa<cir::GetMemberOp>(op))
1106
+ auto op = addr.getDefiningOp <cir::GetMemberOp>();
1107
+ if (!op)
1108
1108
return nullptr ;
1109
- auto allocaOp = dyn_cast<cir::AllocaOp>( op->getOperand (0 ).getDefiningOp () );
1109
+ auto allocaOp = op->getOperand (0 ).getDefiningOp <cir::AllocaOp>( );
1110
1110
if (!allocaOp || !isLambdaType (allocaOp.getAllocaType ()))
1111
1111
return nullptr ;
1112
1112
return allocaOp;
@@ -1116,7 +1116,7 @@ void LifetimeCheckPass::checkLambdaCaptureStore(StoreOp storeOp) {
1116
1116
auto localByRefAddr = storeOp.getValue ();
1117
1117
auto lambdaCaptureAddr = storeOp.getAddr ();
1118
1118
1119
- if (!isa_and_nonnull <cir::AllocaOp>(localByRefAddr. getDefiningOp () ))
1119
+ if (!localByRefAddr. getDefiningOp <cir::AllocaOp>())
1120
1120
return ;
1121
1121
auto lambdaAddr = getLambdaFromMemberAccess (lambdaCaptureAddr);
1122
1122
if (!lambdaAddr)
@@ -1177,7 +1177,7 @@ void LifetimeCheckPass::updatePointsTo(mlir::Value addr, mlir::Value data,
1177
1177
mlir::Location loc) {
1178
1178
1179
1179
auto getArrayFromSubscript = [&](PtrStrideOp strideOp) -> mlir::Value {
1180
- auto castOp = dyn_cast<CastOp>( strideOp.getBase ().getDefiningOp () );
1180
+ auto castOp = strideOp.getBase ().getDefiningOp <cir::CastOp>( );
1181
1181
if (!castOp)
1182
1182
return {};
1183
1183
if (castOp.getKind () != cir::CastKind::array_to_ptrdecay)
@@ -1283,11 +1283,11 @@ void LifetimeCheckPass::checkStore(StoreOp storeOp) {
1283
1283
// Decompose store's to aggregates into multiple updates to individual fields.
1284
1284
if (aggregates.count (addr)) {
1285
1285
auto data = storeOp.getValue ();
1286
- auto dataSrcOp = data.getDefiningOp ();
1287
- // Only interested in updating and tracking fields, anything besides
1288
- // constants isn't really relevant.
1289
- if (dataSrcOp && isa<ConstantOp>(dataSrcOp))
1286
+ if (data.getDefiningOp <cir::ConstantOp>()) {
1287
+ // Only interested in updating and tracking fields, anything besides
1288
+ // constants isn't really relevant.
1290
1289
updatePointsTo (addr, data, data.getLoc ());
1290
+ }
1291
1291
return ;
1292
1292
}
1293
1293
@@ -1342,7 +1342,7 @@ void LifetimeCheckPass::emitInvalidHistory(mlir::InFlightDiagnostic &D,
1342
1342
case InvalidStyle::EndOfScope: {
1343
1343
if (tasks.count (histKey)) {
1344
1344
llvm::StringRef resource = " resource" ;
1345
- if (auto allocaOp = dyn_cast<AllocaOp>( info.val ->getDefiningOp () )) {
1345
+ if (auto allocaOp = info.val ->getDefiningOp <cir::AllocaOp>( )) {
1346
1346
if (isLambdaType (allocaOp.getAllocaType ()))
1347
1347
resource = " lambda" ;
1348
1348
}
@@ -1418,7 +1418,7 @@ void LifetimeCheckPass::checkPointerDeref(mlir::Value addr, mlir::Location loc,
1418
1418
D << " returned lambda captures local variable" ;
1419
1419
else if (derefStyle == DerefStyle::CallParam ||
1420
1420
derefStyle == DerefStyle::IndirectCallParam) {
1421
- bool isAgg = isa_and_nonnull< GetMemberOp>(addr. getDefiningOp () );
1421
+ bool isAgg = addr. getDefiningOp <cir:: GetMemberOp>();
1422
1422
D << " passing " ;
1423
1423
if (!isAgg)
1424
1424
D << " invalid pointer" ;
@@ -1463,7 +1463,7 @@ mlir::Value LifetimeCheckPass::getThisParamPointerCategory(CallOp callOp) {
1463
1463
auto thisptr = callOp.getArgOperand (0 );
1464
1464
if (ptrs.count (thisptr))
1465
1465
return thisptr;
1466
- if (auto loadOp = dyn_cast_or_null< LoadOp>(thisptr. getDefiningOp () )) {
1466
+ if (auto loadOp = thisptr. getDefiningOp <cir:: LoadOp>()) {
1467
1467
if (ptrs.count (loadOp.getAddr ()))
1468
1468
return loadOp.getAddr ();
1469
1469
}
@@ -1475,7 +1475,7 @@ mlir::Value LifetimeCheckPass::getThisParamOwnerCategory(CallOp callOp) {
1475
1475
auto thisptr = callOp.getArgOperand (0 );
1476
1476
if (owners.count (thisptr))
1477
1477
return thisptr;
1478
- if (auto loadOp = dyn_cast_or_null< LoadOp>(thisptr. getDefiningOp () )) {
1478
+ if (auto loadOp = thisptr. getDefiningOp <cir:: LoadOp>()) {
1479
1479
if (owners.count (loadOp.getAddr ()))
1480
1480
return loadOp.getAddr ();
1481
1481
}
@@ -1579,7 +1579,7 @@ void LifetimeCheckPass::checkCtor(CallOp callOp, cir::CXXCtorAttr ctor) {
1579
1579
1580
1580
// Not interested in block/function arguments or any indirect
1581
1581
// provided alloca address.
1582
- if (!dyn_cast_or_null< AllocaOp>(addr. getDefiningOp () ))
1582
+ if (!addr. getDefiningOp <cir:: AllocaOp>())
1583
1583
return ;
1584
1584
1585
1585
markPsetNull (addr, callOp.getLoc ());
0 commit comments