You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Currently aggressive TDCU only works correctly, if no local variable is assigned in the aggregate as well as the body of the ILFunction. See Test9 of the SROA test suite.
There are two options we already have discussed: original and copy are ILVariables
ensure that original.LoadCount == 1 && original.IsSingeDefinition && stloc copy(ldloc original) dominates all other uses of copy
or neither original nor copy is mutated (after initialization), so all uses see the same reference: original.IsSingleDefinition && copy.IsSingleDefinition && copy.StoreInstructions.Single().MatchLdLoc(original)
Find a way to make sure either condition holds before and after TDCU or find another applicable condition.
The text was updated successfully, but these errors were encountered:
dgrunwald
changed the title
Follow up on #1981
Follow up on #1981 - TDCU copy propagation correctness
Jun 14, 2020
Currently aggressive TDCU only works correctly, if no local variable is assigned in the aggregate as well as the body of the ILFunction. See
Test9
of the SROA test suite.There are two options we already have discussed:
original
andcopy
areILVariable
soriginal.LoadCount == 1 && original.IsSingeDefinition && stloc copy(ldloc original) dominates all other uses of copy
original.IsSingleDefinition && copy.IsSingleDefinition && copy.StoreInstructions.Single().MatchLdLoc(original)
Find a way to make sure either condition holds before and after TDCU or find another applicable condition.
The text was updated successfully, but these errors were encountered: