diff mbox

[rtl-optimization] : Fix PR64213 by reverting fix for PR64037

Message ID CAFULd4a5DSfoMYg8CsFkX3QRbMdm6A9mwYQOECbUPHMwwd-5Wg@mail.gmail.com
State New
Headers show

Commit Message

Uros Bizjak Dec. 9, 2014, 2:31 p.m. UTC
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  <ubizjak@gmail.com>

    PR bootstrap/64213
    Revert:
    2014-11-28  H.J. Lu  <hongjiu.lu@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  <ubizjak@gmail.com>

    PR bootstrap/64213
    Revert:
    2014-11-28  H.J. Lu  <hongjiu.lu@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.
diff mbox

Patch

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.  */