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