This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]