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][C] Fix PR52549


On Thu, 12 Apr 2012, Richard Guenther wrote:

> 
> This fixes PR52549 - we are running into an overzealous assert
> that wants to make sure we don't have PLUS_EXPR on pointers.
> But that code does not really check this and falls foul of
> the conversion removal code right before it that transforms
> (void *)(a + b) to a + b.
> 
> Fixed as follows.
> 
> Bootstrap and regtest pending on x86_64-unknown-linux-gnu.

Done.

> Ok?

Actually I changed my mind and consider it obvious.

Richard.

> 2012-04-12  Richard Guenther  <rguenther@suse.de>
> 
> 	PR c/52549
> 	* c-typeck.c (pointer_diff): Remove bogus assert.
> 
> 	* gcc.dg/pr52549.c: New testcase.
> 
> Index: gcc/c-typeck.c
> ===================================================================
> --- gcc/c-typeck.c	(revision 186373)
> +++ gcc/c-typeck.c	(working copy)
> @@ -3446,8 +3446,6 @@ pointer_diff (location_t loc, tree op0,
>    else
>      con1 = op1;
>  
> -  gcc_assert (TREE_CODE (con0) != PLUS_EXPR
> -	      && TREE_CODE (con1) != PLUS_EXPR);
>    if (TREE_CODE (con0) == POINTER_PLUS_EXPR)
>      {
>        lit0 = TREE_OPERAND (con0, 1);
> Index: gcc/testsuite/gcc.dg/pr52549.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/pr52549.c	(revision 0)
> +++ gcc/testsuite/gcc.dg/pr52549.c	(revision 0)
> @@ -0,0 +1,6 @@
> +/* { dg-do compile } */
> +
> +_mark (long obj, int i, char *a)
> +{
> +  (char *)&(((long *)(obj)) [i]) - a;
> +}
> 


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