http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55975
--- Comment #20 from Jakub Jelinek <jakub at gcc dot gnu.org> 2013-01-18 13:52:02 UTC --- Ah yes, it can't be | SHADOW_OFFSET then, but has to be + SHADOW_OFFSET. + is what gcc emits (the reason for that was primarily that it resulted in better code on x86_64/i686). So perhaps for targets where SHADOW_OFFSET is non-zero and below (or equal to) 12.5% of maximum user address space, we are free to use either | or +, but for other targets (for now ppc64) it must use +?