[Bug rtl-optimization/14261] ICE due to if-conversion

krebbel1 at de dot ibm dot com gcc-bugzilla@gcc.gnu.org
Wed May 3 08:25:00 GMT 2006



------- Comment #4 from krebbel1 at de dot ibm dot com  2006-05-03 08:25 -------
The similar problem occurs on s390x:
http://gcc.gnu.org/ml/gcc-patches/2006-03/msg01795.html

The problem (for ia64 and s390x) is fixed on mainline by:
http://gcc.gnu.org/ml/gcc-patches/2006-04/msg00697.html

which unfortunately revealed a problem with paradoxical subregs on big endian
machines which is fixed by:
http://gcc.gnu.org/ml/gcc-patches/2006-04/msg00951.html

(I've added the PR numbers to the changelog entries afterwards, so the patches
aren't mentioned here automatically.)

For gcc 4.1 I've proposed the following trivial patch, in case the others are
considered to risky for gcc 4.1:

Index: gcc/ifcvt.c
===================================================================
*** gcc/ifcvt.c.orig    2006-03-31 17:03:27.000000000 +0200
--- gcc/ifcvt.c 2006-03-31 17:04:04.000000000 +0200
*************** noce_process_if_block (struct ce_if_bloc
*** 2231,2236 ****
--- 2231,2238 ----
      {
        if (no_new_pseudos || GET_MODE (x) == BLKmode)
        return FALSE;
+       if (GET_CODE (x) == ZERO_EXTRACT)
+       return FALSE;
        x = gen_reg_rtx (GET_MODE (GET_CODE (x) == STRICT_LOW_PART
                                 ? XEXP (x, 0) : x));
      }


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14261



More information about the Gcc-bugs mailing list