http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18908
--- Comment #15 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-07-19 08:33:23 UTC --- On x86_64 we have f3: .LFB2: .cfi_startproc xorb $1, (%rdi) andb $1, (%rdi) ret already, thus only a truncation to bitfield precision is left. As we expand ~*p as *p ^ 1 folding on the tree level isn't strictly necessary so this is a missed opt on RTL or expand.