------- Comment #2 from pluto at agmk dot net 2008-02-05 19:32 ------- for f()/g() it partially looks like missed transformation of `z!=0 => z` in case of ADDR_EXPR which trigs different diagnotic:
f(): c-common.c: c_common_truthvalue_conversion with ADDR_EXPR. g(): c-typeck.c: build_binary_op: case NE_EXPR, with op ADDR_EXPR. for h() the -tree-original shows an ugly cast in `if`: (void*)z!=0 is it an expected behaviour? -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32207