gcc_bug_34625.diff.txt

(0 KB) Pobierz
2006-10-04  Richard Henderson  <rth@redhat.com>
	    Jakub Jelinek  <jakub@redhat.com>

	* tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
	address before wrapping in CONST.

Index: tree-ssa-address.c
===================================================================
--- tree-ssa-address.c	(revision 124014)
+++ tree-ssa-address.c	(working copy)
@@ -134,10 +134,15 @@
       act_elem = symbol;
       if (offset)
 	{
-	  act_elem = gen_rtx_CONST (Pmode,
-				    gen_rtx_PLUS (Pmode, act_elem, offset));
+	  act_elem = gen_rtx_PLUS (Pmode, act_elem, offset);
+
 	  if (offset_p)
-	    *offset_p = &XEXP (XEXP (act_elem, 0), 1);
+	    *offset_p = &XEXP (act_elem, 1);
+
+	  if (GET_CODE (symbol) == SYMBOL_REF
+	      || GET_CODE (symbol) == LABEL_REF
+	      || GET_CODE (symbol) == CONST)
+	    act_elem = gen_rtx_CONST (Pmode, act_elem);
 	}
 
       if (*addr)
Zgłoś jeśli naruszono regulamin