This is the mail archive of the gcc-bugs@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]

[Bug tree-optimization/48031] [4.4/4.5 Regression] gcc.c-torture/compile/pr42956.c ICEs gcc on m68k-linux, ivopts related?


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48031

--- Comment #8 from Eric Botcazou <ebotcazou at gcc dot gnu.org> 2011-03-10 12:34:57 UTC ---
> It's mixing VLA unaware foldings into the mids of GIMPLE which is the
> root of the issue though.  The issue is latent on trunk.
> 
> Patch for the first (and safe) idea:
> 
> Index: gcc/fold-const.c
> ===================================================================
> --- gcc/fold-const.c    (revision 170818)
> +++ gcc/fold-const.c    (working copy)
> @@ -15554,7 +15560,8 @@ fold_indirect_ref_1 (location_t loc, tre
>         }
>        /* *(foo *)&fooarray => fooarray[0] */
>        else if (TREE_CODE (optype) == ARRAY_TYPE
> -              && type == TREE_TYPE (optype))
> +              && type == TREE_TYPE (optype)
> +              && TREE_CODE (TYPE_SIZE (type)) == INTEGER_CST)
>         {
>           tree type_domain = TYPE_DOMAIN (optype);
>           tree min_val = size_zero_node;
> @@ -15633,7 +15640,8 @@ fold_indirect_ref_1 (location_t loc, tre
> 
>    /* *(foo *)fooarrptr => (*fooarrptr)[0] */
>    if (TREE_CODE (TREE_TYPE (subtype)) == ARRAY_TYPE
> -      && type == TREE_TYPE (TREE_TYPE (subtype)))
> +      && type == TREE_TYPE (TREE_TYPE (subtype))
> +      && TREE_CODE (TYPE_SIZE (type)) == INTEGER_CST)
>      {
>        tree type_domain;
>        tree min_val = size_zero_node;
> 
> Eric, can you see any issues with that and Ada?

If this is limited to the in_gimple_form case, probably none.


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