https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114774

--- Comment #3 from Jan Hubicka <hubicka at ucw dot cz> ---
> Yes, DSE walking doesn't "branch" but goes to some length handling some 
> trivial
> branches only.  Mainly to avoid compile-time issues.  It needs larger
> re-structuring to fix that, but in principle it shouldn't be difficult. 

Looking into it, instead of having simple outer loop it needs to
maintain worklist of defs to proceed each annotated with live bitmap,
rigt?

With Maritn we noticed it while looking into push_back codegen. In case
aggregate is passed to a function call but does not escape, we now SRA
it removing all uses and corresponding clobbers, but we do not remove the
stores (Martin was expecting DSE to do it). As a result the store stays
around which causes partial memory stall (storing in pieces, loading as
a whole). It seems easy to remove this specific store during SRA, but it
seems improving DSE here would be desirable.

Reply via email to