This is the mail archive of the gcc-help@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: Possible bug in gcc/expr.c - expand_expr_real_1()?


Sam <samueldotj@gmail.com> writes:

> ICE was found when a large project was compiled with gcc 4.6.3(with
> optimization enabled). It is working fine with gcc 4.5.3.
>
> From the stack trace it looked like a simple bug so I fix it and with
> the following patch gcc-4.6.3 works fine. However I am not sure
> whether this patch is correct or I am just suppressing the root cause
> by this fix.
> Can some gcc guru look at this and confirm whether it is a really a bug?
>
> diff -rupN gcc-4.6.3/gcc/expr.c gcc-4.6.3.new1/gcc/expr.c
> --- gcc-4.6.3/gcc/expr.c        2012-02-09 09:28:22.000000000 -0800
> +++ gcc-4.6.3.new1/gcc/expr.c   2012-06-20 22:53:10.613748645 -0700
> @@ -9182,6 +9182,7 @@ expand_expr_real_1 (tree exp, rtx target
>         orig_op0 = op0
>           = expand_expr (tem,
>                          (TREE_CODE (TREE_TYPE (tem)) == UNION_TYPE
> +              && TYPE_SIZE (TREE_TYPE (tem))
>                           && (TREE_CODE (TYPE_SIZE (TREE_TYPE (tem)))
>                               != INTEGER_CST)
>                           && modifier != EXPAND_STACK_PARM

An ICE is always a compiler bug but this does not look like the complete
fix.  A UNION_TYPE should not have a NULL TYPE_SIZE.

Ian


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