re PR pch/13689 (GGC PCH breaks aliasing)
authorGeoffrey Keating <geoffk@apple.com>
Sat, 17 Jan 2004 09:31:30 +0000 (09:31 +0000)
committerGeoffrey Keating <geoffk@gcc.gnu.org>
Sat, 17 Jan 2004 09:31:30 +0000 (09:31 +0000)
PR pch/13689
* alias.c (new_alias_set): Mark last_alias_set for PCH.
(get_varargs_alias_set): Rename 'set' to 'varargs_set' and mark it
for PCH.
(get_frame_alias_set): Likewise, except rename it to 'frame_set'.
* config/rs6000/rs6000.c (rs6000_sr_alias_set): Mark for PCH.
(get_TOC_alias_set): Mark 'set' for PCH.

From-SVN: r76031

gcc/ChangeLog
gcc/alias.c
gcc/config/rs6000/rs6000.c

index b039e860ee2f7d7b4bc99a305c7c1e0d5b764169..e8abc331be36554ee28a0c9bae3a2aca0aeab198 100644 (file)
@@ -1,3 +1,12 @@
+2004-01-17  Geoffrey Keating  <geoffk@apple.com>
+
+       * alias.c (new_alias_set): Mark last_alias_set for PCH.
+       (get_varargs_alias_set): Rename 'set' to 'varargs_set' and mark it
+       for PCH.
+       (get_frame_alias_set): Likewise, except rename it to 'frame_set'.
+       * config/rs6000/rs6000.c (rs6000_sr_alias_set): Mark for PCH.
+       (get_TOC_alias_set): Mark 'set' for PCH.
+
 2004-01-16  Geoffrey Keating  <geoffk@apple.com>
 
        * cfgrtl.c (try_redirect_by_replacing_jump): Optimize tablejumps
index a56feae11707c1bae9c4af2d80702c77c25b2758..02554a9a1ac577a3e78fc3a0ee5b05ed35df5330 100644 (file)
@@ -592,11 +592,11 @@ get_alias_set (tree t)
 
 /* Return a brand-new alias set.  */
 
+static GTY(()) HOST_WIDE_INT last_alias_set;
+
 HOST_WIDE_INT
 new_alias_set (void)
 {
-  static HOST_WIDE_INT last_alias_set;
-
   if (flag_strict_aliasing)
     {
       if (!alias_sets)
@@ -724,29 +724,29 @@ record_component_aliases (tree type)
 /* Allocate an alias set for use in storing and reading from the varargs
    spill area.  */
 
+static GTY(()) HOST_WIDE_INT varargs_set = -1;
+
 HOST_WIDE_INT
 get_varargs_alias_set (void)
 {
-  static HOST_WIDE_INT set = -1;
-
-  if (set == -1)
-    set = new_alias_set ();
+  if (varargs_set == -1)
+    varargs_set = new_alias_set ();
 
-  return set;
+  return varargs_set;
 }
 
 /* Likewise, but used for the fixed portions of the frame, e.g., register
    save areas.  */
 
+static GTY(()) HOST_WIDE_INT frame_set = -1;
+
 HOST_WIDE_INT
 get_frame_alias_set (void)
 {
-  static HOST_WIDE_INT set = -1;
+  if (frame_set == -1)
+    frame_set = new_alias_set ();
 
-  if (set == -1)
-    set = new_alias_set ();
-
-  return set;
+  return frame_set;
 }
 
 /* Inside SRC, the source of a SET, find a base address.  */
index 9a399b16f06803d27466bd2084f4959d46858ebb..183cf21ab7e90704b59105bb7f7767f8b885b031 100644 (file)
@@ -230,7 +230,7 @@ int toc_initialized;
 char toc_label_name[10];
 
 /* Alias set for saves and restores from the rs6000 stack.  */
-static int rs6000_sr_alias_set;
+static GTY(()) int rs6000_sr_alias_set;
 
 /* Call distance, overridden by -mlongcall and #pragma longcall(1).
    The only place that looks at this is rs6000_set_default_type_attributes;
@@ -11106,13 +11106,14 @@ rs6000_emit_eh_reg_restore (rtx source, rtx scratch)
     emit_move_insn (gen_rtx_REG (Pmode, LINK_REGISTER_REGNUM), operands[0]);
 }
 
+static GTY(()) int set = -1;
+
 int   
 get_TOC_alias_set (void)
 {
-    static int set = -1;
-    if (set == -1)
-      set = new_alias_set ();
-    return set;
+  if (set == -1)
+    set = new_alias_set ();
+  return set;
 }   
 
 /* This returns nonzero if the current function uses the TOC.  This is