SOURCES: gcc-pr20928.patch (NEW) - critical fix / ICE: unrecogniza...

pluto pluto at pld-linux.org
Wed Oct 19 11:25:23 CEST 2005


Author: pluto                        Date: Wed Oct 19 09:25:23 2005 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- critical fix / ICE: unrecognizable insns with -fPIC -O1.

---- Files affected:
SOURCES:
   gcc-pr20928.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: SOURCES/gcc-pr20928.patch
diff -u /dev/null SOURCES/gcc-pr20928.patch:1.1
--- /dev/null	Wed Oct 19 11:25:23 2005
+++ SOURCES/gcc-pr20928.patch	Wed Oct 19 11:25:17 2005
@@ -0,0 +1,30 @@
+--- gcc-4.1-20051019T0822UTC/gcc/expr.c.orig	2005-10-17 18:06:59.000000000 +0000
++++ gcc-4.1-20051019T0822UTC/gcc/expr.c	2005-10-19 09:12:34.710605624 +0000
+@@ -3153,7 +3153,9 @@
+ 
+       y_cst = y;
+ 
+-      if (!LEGITIMATE_CONSTANT_P (y))
++      if ((!flag_pic && !LEGITIMATE_CONSTANT_P (y)) 
++          || (flag_pic && !LEGITIMATE_PIC_OPERAND_P (y))) 
++
+ 	{
+ 	  y = force_const_mem (mode, y);
+ 
+--- gcc-4.1-20051019T0822UTC/gcc/config/i386/i386.c.orig	2005-10-19 08:35:54.000000000 +0000
++++ gcc-4.1-20051019T0822UTC/gcc/config/i386/i386.c	2005-10-19 09:19:14.648805776 +0000
+@@ -6087,7 +6087,13 @@
+ 					     base == reg ? NULL_RTX : reg);
+ 
+ 	      if (GET_CODE (new) == CONST_INT)
+-		new = plus_constant (base, INTVAL (new));
++                {
++                  if (legitimate_pic_address_disp_p (new))
++                    new = plus_constant (base, INTVAL (new));
++                  else
++                    new = gen_rtx_PLUS (Pmode, base,
++                                        copy_to_mode_reg (Pmode, new));
++                }
+ 	      else
+ 		{
+ 		  if (GET_CODE (new) == PLUS && CONSTANT_P (XEXP (new, 1)))
================================================================



More information about the pld-cvs-commit mailing list