Why scf.forall op doesn't have RegionBranchOp interface?

Thanks for your kindly reply. @mehdi_amini @matthias-springer

It seems “value propagation” cannot disable unless we modify all pass that use RegionBranchOpInterface.

For example, scf.forall will failed in sparse dataflow analysis. interface method ‘getSuccessorRegions’ implementation is hard to choose:

If return opeand values in ‘tensor.parallel_insert’, this will get a fault analysis state. e.g. the analysis state indicates all element in tensor have same value.

If return empty operandRange , dead code analysis will get a empty predessor state (llvm-project/DeadCodeAnalysis.cpp at 85452b5f9b5aba5bdf0259b7f0d7400362f95535 · llvm/llvm-project · GitHub), sparse analysis(llvm-project/SparseAnalysis.cpp at 85452b5f9b5aba5bdf0259b7f0d7400362f95535 · llvm/llvm-project · GitHub) will assert fail.

I think value in RegionSuccessor should have a ‘partial’ or ‘full’ bool state to indicate interface user. Is there a better way?