Hi, this patch fixes alignment propagation that causes wrong code on solex and firefox. Patch is by Martin, I just added the obvous MINUS_EXPR fix (the offset would be wrong, but I see no reason for MINUX_ExPR appearing there with constant parameter), went ahead and commited the fix.
Tested on x86_64-linux. Honza Index: ChangeLog =================================================================== --- ChangeLog (revision 220825) +++ ChangeLog (working copy) @@ -1,3 +1,10 @@ +2015-02-19 Martin Jambor <mjma...@suse.cz> + Jan Hubicka <hubi...@ucw.cz> + + PR ipa/65028 + * ipa-cp.c (propagate_alignment_accross_jump_function): Fix propagation + across jump functions. + 2015-02-19 Uros Bizjak <ubiz...@gmail.com> * config/alpha/alpha.c (alpha_in_small_data_p): Reject common symbols. Index: ipa-cp.c =================================================================== --- ipa-cp.c (revision 220825) +++ ipa-cp.c (working copy) @@ -1438,8 +1438,7 @@ propagate_alignment_accross_jump_functio if (op != NOP_EXPR) { if (op != POINTER_PLUS_EXPR - && op != PLUS_EXPR - && op != MINUS_EXPR) + && op != PLUS_EXPR) goto prop_fail; tree operand = ipa_get_jf_pass_through_operand (jfunc); if (!tree_fits_shwi_p (operand)) @@ -1451,7 +1450,7 @@ propagate_alignment_accross_jump_functio else { src_idx = ipa_get_jf_ancestor_formal_id (jfunc); - offset = ipa_get_jf_ancestor_offset (jfunc); + offset = ipa_get_jf_ancestor_offset (jfunc) / BITS_PER_UNIT;; } src_lats = ipa_get_parm_lattices (caller_info, src_idx);