For some reasons it passed bootstrap locally...

> -----Original Message-----
> From: Jakub Jelinek [mailto:ja...@redhat.com]
> Sent: Tuesday, October 21, 2014 12:15 PM
> To: Zamyatin, Igor; Jeff Law
> Cc: GCC Patches (gcc-patches@gcc.gnu.org)
> Subject: Re: [PATCH, PR63307] Fix generation of new declarations in random
> order
> 
> On Thu, Oct 16, 2014 at 11:06:34AM -0600, Jeff Law wrote:
> > >>We really prefer fully specified sorts.   For a qsort callback, this
> > >>doesn't look fully specified.
> > >>
> > >>
> > >>With that fixed, this should be OK.
> > >>
> > >>jeff
> > >
> > >Thanks for the review. Here is the updated version.
> > >Is it ok?
> > Yes, this is good for the trunk.
> 
> This broke bootstrap everywhere unfortunately, has it been tested at all?
> 
> I already wrote during the initial comment that BLOCKs aren't decls and you
> can't push them into the vectors, they can't be sorted easily
> (BLOCK_NUMBER isn't assigned at that point e.g. and the comparison
> function looks at DECL_UID unconditionally anyway).
> 
> I've bootstrapped/regtested on i686-linux the following quick fix,
> bootstrapped on x86_64-linux too, in the middle of regtesting there.
> If it succeeds, I'll commit as obvious, so that people can continue working on
> the trunk.
> 
> 2014-10-21  Jakub Jelinek  <ja...@redhat.com>
> 
>       * cilk.c (fill_decls_vec): Only put decls into vector v.
>       (compare_decls): Fix up formatting.
> 
> --- gcc/c-family/cilk.c.jj    2014-10-20 19:24:54.000000000 +0200
> +++ gcc/c-family/cilk.c       2014-10-21 08:46:24.727790990 +0200
> @@ -347,9 +347,12 @@ fill_decls_vec (tree const &key0, tree *
>    tree t1 = key0;
>    struct cilk_decls dp;
> 
> -  dp.key = t1;
> -  dp.val = val0;
> -  v->safe_push (dp);
> +  if (DECL_P (t1))
> +    {
> +      dp.key = t1;
> +      dp.val = val0;
> +      v->safe_push (dp);
> +    }
>    return true;
>  }
> 
> @@ -400,8 +403,8 @@ create_parm_list (struct wrapper_data *w  static int
> compare_decls (const void *a, const void *b)  {
> -  const struct cilk_decls* t1 = (const struct cilk_decls*) a;
> -  const struct cilk_decls* t2 = (const struct cilk_decls*) b;
> +  const struct cilk_decls *t1 = (const struct cilk_decls *) a;  const
> + struct cilk_decls *t2 = (const struct cilk_decls *) b;
> 
>    if (DECL_UID (t1->key) > DECL_UID (t2->key))
>      return 1;
> 
> 
>       Jakub

Reply via email to