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.