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.