File tree Expand file tree Collapse file tree 1 file changed +12
-0
lines changed Expand file tree Collapse file tree 1 file changed +12
-0
lines changed Original file line number Diff line number Diff line change @@ -1408,6 +1408,18 @@ module Make<LocationSig Location, InputSig<Location> Input> {
1408
1408
not uncertainWriteDefinitionInput ( _, def )
1409
1409
}
1410
1410
1411
+ /** Holds if a read is not dominated by a definition. */
1412
+ query predicate notDominatedByDef ( Definition def , SourceVariable v , BasicBlock bb , int i ) {
1413
+ exists ( BasicBlock bbDef , int iDef | def .definesAt ( v , bbDef , iDef ) |
1414
+ SsaDefReachesNew:: ssaDefReachesReadWithinBlock ( v , def , bb , i ) and
1415
+ ( bb != bbDef or i < iDef )
1416
+ or
1417
+ ssaDefReachesRead ( v , def , bb , i ) and
1418
+ not SsaDefReachesNew:: ssaDefReachesReadWithinBlock ( v , def , bb , i ) and
1419
+ not def .definesAt ( v , getImmediateBasicBlockDominator * ( bb ) , _)
1420
+ )
1421
+ }
1422
+
1411
1423
/** Holds if the end of a basic block can be reached by multiple definitions. */
1412
1424
query predicate nonUniqueDefReachesEndOfBlock ( Definition def , SourceVariable v , BasicBlock bb ) {
1413
1425
ssaDefReachesEndOfBlock ( bb , def , v ) and
You can’t perform that action at this time.
0 commit comments