On Sep 28, 2015, at 1:15 AM, Senthil Kumar Selvaraj 
<senthil_kumar.selva...@atmel.com> wrote:
>  The below patch skips gcc.dg/addr_equal-1.c if the target keeps null
>  pointer checks.
> 
>  The test fails for such targets (avr, in my case) because the address
>  comparison in the below code does not resolve to a constant, causing
>  builtin_constant_p to return false and fail the test.
> 
>  /* Variables and functions do not share same memory locations otherwise.  */
>  if (!__builtin_constant_p ((void *)undef_fn0 == (void *)&undef_var0))
>    abort ();
> 
>  For targets that delete null pointer checks, the equality comparison 
> expression
>  is optimized away to 0, as the code in match.pd knows they can only be
>  equal if they are both NULL, which cannot be true since
>  flag-delete-null-pointer-checks is on.
> 
>  For targets that keep null pointer checks, 0 is a valid address and the 
>       comparison expression is left as is, and that causes a later pass to 
>       fold the builtin_constant_p to a false value, resulting in the test 
> failure.
> 
>  If this is ok, could someone commit please? I don't have commit
>  access.

So, my preference would be for the target maintainer (or a 
keeps_null_pointer_checks person) to review, if less then trivial.  Seem fine 
to me, but they should get first crack at the review.

Reply via email to