This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: crossjumping speedups
Richard Henderson wrote:
>
> (try_crossjump_to_edge): Hoist repeated indirection into
> local variables.
Thank you thank you thank you... This little bit
> ! while (e1->src->succ->succ_next)
> ! remove_edge (e1->src->succ);
would deref a free'd e1 sometimes, such as when compiling subvsi3
targeting powerpc, but it would only crash on Darwin hosts, because
free() on Linux only steps on the first 8 bytes of a freed block,
while Darwin's free() steps on 12 of them (and guess what the offset
of .src is...)
Sadly, the Darwin build now gets a segfault in libcall_dead_p,
so we're not done with fixing flow.c yet...
Stan