This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

fix var_tracking bootstrap problems


Seen on at least ia64 and mips.

Strength reduction uses make_tree, make_tree I recently updated to
not use RTL_EXPRs, but anonymous VAR_DECLs.  It didn't occur to me
at the time that SET_DECL_RTL has side effects other that setting
the decl's rtl.

I hadn't seen this on x86 because we don't pass parameters in 
registers there.  :-/

Anyway, this fixes the ia64 stage1 abort, so I'm checking it in.


r~


        * expmed.c (make_tree): Don't use SET_DECL_RTL.

Index: expmed.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/expmed.c,v
retrieving revision 1.175
diff -u -r1.175 expmed.c
--- expmed.c	2 Jul 2004 01:15:23 -0000	1.175
+++ expmed.c	2 Jul 2004 17:30:52 -0000
@@ -4432,7 +4432,9 @@
       if (POINTER_TYPE_P (type))
 	x = convert_memory_address (TYPE_MODE (type), x);
 
-      SET_DECL_RTL (t, x);
+      /* Note that we do *not* use SET_DECL_RTL here, because we do not
+	 want set_decl_rtl to go adjusting REG_ATTRS for this temporary.  */
+      t->decl.rtl = x;
 
       return t;
     }


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]