[PATCH] D29014: [SelDag][MIR] Add FREEZE
Matt Arsenault via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Nov 14 21:49:44 PST 2019
arsenm added inline comments.
================
Comment at: llvm/include/llvm/Target/Target.td:1067
+ let hasNoSchedulingInfo = 1;
+ let isNotDuplicable = 1;
+}
----------------
aqjune wrote:
> arsenm wrote:
> > Why isNotDuplicable? I don't think this is the best maintained instruction property
> It is because different freeze defs can yield different values. For example, consider following transformation:
> ```
> %undef = IMPLICIT_DEF
> %x = FREEZE %undef
> use(%x)
> use(%x) // these two uses should see the same freezed value
> ->
> %undef = IMPLICIT_DEF
> %x = FREEZE %undef
> use(%x)
> %x' = FREEZE %undef
> use(%x') // It is possible that %x and %x' are assigned differently freezed values.
> ```
> This transformation is incorrect, because use()s after the transformation can see different values.
> To prevent this class of optimizations, isNotDuplicable is set to 1.
But these both are using the same undef vreg? The second freeze is still using the original undef, so this should be fine?
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D29014/new/
https://reviews.llvm.org/D29014
More information about the llvm-commits
mailing list