aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeoffrey Keating <geoffk@apple.com>2004-01-17 09:31:30 +0000
committerGeoffrey Keating <geoffk@gcc.gnu.org>2004-01-17 09:31:30 +0000
commitf103e34d1dbc090a6bdb744bc1d7a568695ba491 (patch)
treeb625381801a0df010d5793b058692ce3e8e4c49b
parent19833df131fca53366980de52e90e0923920aa31 (diff)
downloadgcc-f103e34d1dbc090a6bdb744bc1d7a568695ba491.zip
gcc-f103e34d1dbc090a6bdb744bc1d7a568695ba491.tar.gz
gcc-f103e34d1dbc090a6bdb744bc1d7a568695ba491.tar.bz2
re PR pch/13689 (GGC PCH breaks aliasing)
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
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/alias.c24
-rw-r--r--gcc/config/rs6000/rs6000.c11
3 files changed, 27 insertions, 17 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b039e86..e8abc33 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/alias.c b/gcc/alias.c
index a56feae..02554a9 100644
--- a/gcc/alias.c
+++ b/gcc/alias.c
@@ -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. */
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 9a399b1..183cf21 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -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