SDCC : mcs51/gbz80/z80/avr/ds390/pic16/pic14/TININative/xa51/ds400/hc08
2.6.1 #4478 (Nov 23 2006) (MINGW32)
When compiling the attached snippet for mcs51 (using plainly "sdcc.exe testbug.c"), both *px translates to
i.e. *x, which may not be true.
In this short test program, I am unable to insert some code modifying px before "if", to demonstrate that the "if" is not redundant, without "spoiling the error", but I have a long-long program where this really happens.