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] Fix memrefs_conflict_p fallout (PR bootstrap/43767)


On Fri, Apr 16, 2010 at 11:04 PM, Jakub Jelinek <jakub@redhat.com> wrote:
> Hi!
>
> On Fri, Apr 16, 2010 at 07:39:23AM -0700, H.J. Lu wrote:
>> On Fri, Apr 16, 2010 at 12:18 AM, Jakub Jelinek <jakub@redhat.com> wrote:
>> This caused:
>>
>> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43767
>
> CSELIB_VAL_PTR might be NULL on some VALUEs during scheduling.
> Fixed thusly, bootstrapped/regtested on x86_64-linux and i686-linux
> and bootstrapped on ia64-linux. ?Ok for trunk?

Ok.

Thanks,
Richard.

> 2010-04-16 ?Jakub Jelinek ?<jakub@redhat.com>
>
> ? ? ? ?PR bootstrap/43767
> ? ? ? ?* alias.c (memrefs_conflict_p): Don't crash if CSELIB_VAL_PTR is NULL.
>
> --- gcc/alias.c.jj ? ? ?2010-04-16 12:58:35.000000000 -0400
> +++ gcc/alias.c 2010-04-16 13:36:56.000000000 -0400
> @@ -1792,10 +1792,11 @@ memrefs_conflict_p (int xsize, rtx x, in
> ? ? {
> ? ? ? if (REG_P (y))
> ? ? ? ?{
> - ? ? ? ? struct elt_loc_list *l;
> - ? ? ? ? for (l = CSELIB_VAL_PTR (x)->locs; l; l = l->next)
> - ? ? ? ? ? if (REG_P (l->loc) && rtx_equal_for_memref_p (l->loc, y))
> - ? ? ? ? ? ? break;
> + ? ? ? ? struct elt_loc_list *l = NULL;
> + ? ? ? ? if (CSELIB_VAL_PTR (x))
> + ? ? ? ? ? for (l = CSELIB_VAL_PTR (x)->locs; l; l = l->next)
> + ? ? ? ? ? ? if (REG_P (l->loc) && rtx_equal_for_memref_p (l->loc, y))
> + ? ? ? ? ? ? ? break;
> ? ? ? ? ?if (l)
> ? ? ? ? ? ?x = y;
> ? ? ? ? ?else
> @@ -1809,10 +1810,11 @@ memrefs_conflict_p (int xsize, rtx x, in
> ? ? {
> ? ? ? if (REG_P (x))
> ? ? ? ?{
> - ? ? ? ? struct elt_loc_list *l;
> - ? ? ? ? for (l = CSELIB_VAL_PTR (y)->locs; l; l = l->next)
> - ? ? ? ? ? if (REG_P (l->loc) && rtx_equal_for_memref_p (l->loc, x))
> - ? ? ? ? ? ? break;
> + ? ? ? ? struct elt_loc_list *l = NULL;
> + ? ? ? ? if (CSELIB_VAL_PTR (y))
> + ? ? ? ? ? for (l = CSELIB_VAL_PTR (y)->locs; l; l = l->next)
> + ? ? ? ? ? ? if (REG_P (l->loc) && rtx_equal_for_memref_p (l->loc, x))
> + ? ? ? ? ? ? ? break;
> ? ? ? ? ?if (l)
> ? ? ? ? ? ?y = x;
> ? ? ? ? ?else
>
> ? ? ? ?Jakub
>


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