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]
Other format: [Raw text]

Re: [patch] PR21639 fix


On Thu, 2005-05-26 at 15:01 +0300, Dorit Naishlos wrote:
> 
> 
> 
> The "scalar_evolution_info" hash-table gets corrupted during pass
> 'lower_vector_ssa'. What happens is that during vectorization analysis new
> entries in the hash-table are created, but the call to ggc_collect in the
> subsequent pass 'lower_vector_ssa' frees up this data. Later on
> complete-loop-unroll ICEs when using the data in the hash-table. This
> happens because:
> 
> >there are several places in loop opts that are not GGC-safe (in
> >particular the tree nodes refered from loop structures are not
> >seen by garbage collector, and I think there are some other instances).
> >
> >So at the moment, you cannot run ggc_collect inside loop opts.
> 
> (as pointed out by Zdenek in
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21639).
> 
> The simplest thing to do until loop optimizations are made GGC-safe is to
> remove the call to ggc_collect from pass_lower_vector.
> 
> This patch also fixes an ICE (segmentation fault) in SPEC's gap and mesa.
> 
> Bootstrapped and tested on powerpc-apple-darwin.
> 
> ok to install?
> 
> thanks,
> dorit
> 
> Changelog:
> 
>       * tree-complex.c (pass_lower_vector_s): Remove TODO_ggc_collect.
I'm not particularly happy about it since there's no reason why the
loop optimizer can't operate in a GC safe manner.  However, I will go
ahead and approve this patch as long as a PR is opened to track the
fact that the loop optimizers are not GC safe.

jeff



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