Hello! The fix for PR64037 [1] introduced severe problems, including bootstrap failure on alphaev6-linux-gnu. Non-bootstrapped testsuite results [2] can be compared with bootstrapped gcc with a revert [3]. As discussed in the PR, the problem was in a missed SI-DI zero_extend.
[1] https://gcc.gnu.org/ml/gcc-patches/2014-11/msg03405.html [2] https://gcc.gnu.org/ml/gcc-testresults/2014-12/msg01068.html [3] https://gcc.gnu.org/ml/gcc-testresults/2014-12/msg01069.html The patch fixes the regression by reverting the above patch. 2014-12-09 Uros Bizjak <ubiz...@gmail.com> PR bootstrap/64213 Revert: 2014-11-28 H.J. Lu <hongjiu...@intel.com> PR rtl-optimization/64037 * combine.c (setup_incoming_promotions): Pass the argument before any promotions happen to promote_function_mode. * configure.tgt (x86_64): Tune -m32 multilib to generic. testsuite/ChangeLog: 2014-12-09 Uros Bizjak <ubiz...@gmail.com> PR bootstrap/64213 Revert: 2014-11-28 H.J. Lu <hongjiu...@intel.com> PR rtl-optimization/64037 * g++.dg/pr64037.C: New test. Patch was bootstrapped and regression tested on alphaev68-linux-gnu. Approved by Richi in the PR audit trail, will be committed to mainline SVN, 4.9 and 4.8 branch. Uros.
Index: combine.c =================================================================== --- combine.c (revision 218160) +++ combine.c (revision 218161) @@ -1561,8 +1561,8 @@ setup_incoming_promotions (rtx_insn *first) uns3 = TYPE_UNSIGNED (DECL_ARG_TYPE (arg)); /* The mode and signedness of the argument as it is actually passed, - after any TARGET_PROMOTE_FUNCTION_ARGS-driven ABI promotions. */ - mode3 = promote_function_mode (DECL_ARG_TYPE (arg), mode2, &uns3, + see assign_parm_setup_reg in function.c. */ + mode3 = promote_function_mode (TREE_TYPE (arg), mode1, &uns1, TREE_TYPE (cfun->decl), 0); /* The mode of the register in which the argument is being passed. */