The asm comparison showed a problem with my r204593 change, which dropped a "val.mask &" in the second hunk below.
Seeing that the problem was in ccp made me look at the whole file again. I noticed that we'd changed the VARYING mask value from -1 to 1, which didn't look intentional. Tested on x86_64-linux-gnu. OK to install? Thanks, Richard Index: gcc/tree-ssa-ccp.c =================================================================== --- gcc/tree-ssa-ccp.c 2014-04-23 19:13:20.488547331 +0100 +++ gcc/tree-ssa-ccp.c 2014-04-23 19:30:07.025416946 +0100 @@ -607,7 +607,7 @@ get_value_for_expr (tree expr, bool for_ else { val.lattice_val = VARYING; - val.mask = 1; + val.mask = -1; val.value = NULL_TREE; } return val; @@ -1848,7 +1848,7 @@ evaluate_stmt (gimple stmt) if (nonzero_bits == 0) val.mask = 0; else - val.mask = extend_mask (nonzero_bits); + val.mask = val.mask & extend_mask (nonzero_bits); } } }