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
* Relax the type check
The type check is too conservative: it prevents partial
definitions from being used in propagation:
```
LCL_FLD V00/1 [X] = { ... }; // Pushed on the stack as a def.
USE LCL_VAR V01 // Has the same VN as V00/1, but the type
// check prevented it from being replaced.
```
This new version is conservative too, but will do for now
as we don't propagate on (most) partial uses.
Another reason for this change is that in my upcoming refactoring
of copy propagation (that will bring another 0.5% in TP gains), we
will no longer have the "defNode" available.
* Do not propagate shadowed "this"
Ordinarily, shadowed parameters would not be used for
propagation anyway, because of the liveness check, but
"this" bypasses that checks, and so was used, which is
presumably not what we want.
Regardless of that, it is also not profitable to propagate
"this" in such a situation as it extends its live range
and makes the RA unhappy.
* NO_SHADOW_COPY -> BAD_VAR_NUM
0 commit comments