summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2000-06-03 00:33:00 +0000
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2000-06-03 00:33:00 +0000
commitd43e810fddb28560857e63da3eb9fc1e945117b1 (patch)
treebd27084a3b6068f80bd96842322bfbe8eb1a62db
parentd637c34ba35e4846e60062e0b9c0cf5fc652f040 (diff)
downloadgcc-d43e810fddb28560857e63da3eb9fc1e945117b1.tar.gz
gcc/
* alias.c (lang_get_alias_set): Remove. (get_alias_set): Call it directly, not indirectly. * c-common.c (lang_get_alias_set): Rename from c_get_alias_set. * c-common.h (c_get_alias_set): Don't declare. * c-decl.c (init_decl_processing): Don't set lang_get_alias_set. * expr.h (lang_get_alias_set): Declare as function, not pointer. gcc/ch/ * lang.c (lang_get_alias_set): New. gcc/cp/ * decl.c (init_decl_processing): Don't set lang_get_alias_set. gcc/f/ * com.c (lang_get_alias_set): New. gcc/java/ * lang.c (lang_get_alias_set): New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@34368 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/alias.c14
-rw-r--r--gcc/c-common.c2
-rw-r--r--gcc/c-common.h1
-rw-r--r--gcc/c-decl.c2
-rw-r--r--gcc/ch/ChangeLog4
-rw-r--r--gcc/ch/lang.c13
-rw-r--r--gcc/cp/ChangeLog4
-rw-r--r--gcc/cp/decl.c2
-rw-r--r--gcc/expr.h2
-rw-r--r--gcc/f/ChangeLog4
-rw-r--r--gcc/f/com.c15
-rw-r--r--gcc/java/ChangeLog4
-rw-r--r--gcc/java/lang.c10
14 files changed, 69 insertions, 17 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8857e6c8259..3b27cead806 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,12 @@
+2000-06-02 Richard Henderson <rth@cygnus.com>
+
+ * alias.c (lang_get_alias_set): Remove.
+ (get_alias_set): Call it directly, not indirectly.
+ * c-common.c (lang_get_alias_set): Rename from c_get_alias_set.
+ * c-common.h (c_get_alias_set): Don't declare.
+ * c-decl.c (init_decl_processing): Don't set lang_get_alias_set.
+ * expr.h (lang_get_alias_set): Declare as function, not pointer.
+
2000-06-02 Bruce Korb <bkorb@gnu.org>
* fixinc/server.c(sig_handler): resume closing server on SIGPIPE
diff --git a/gcc/alias.c b/gcc/alias.c
index 4541d519858..d1804181bed 100644
--- a/gcc/alias.c
+++ b/gcc/alias.c
@@ -81,10 +81,6 @@ typedef struct alias_set_entry
splay_tree children;
} *alias_set_entry;
-/* The language-specific function for alias analysis. If NULL, the
- language does not do any special alias analysis. */
-HOST_WIDE_INT (*lang_get_alias_set) PARAMS ((tree));
-
static int rtx_equal_for_memref_p PARAMS ((rtx, rtx));
static rtx find_symbolic_term PARAMS ((rtx));
static rtx get_addr PARAMS ((rtx));
@@ -369,8 +365,7 @@ get_alias_set (t)
/* Now give the language a chance to do something but record what we
gave it this time. */
orig_t = t;
- if (lang_get_alias_set != 0
- && (set = (*lang_get_alias_set) (t)) != -1)
+ if ((set = lang_get_alias_set (t)) != -1)
return set;
/* If this is a reference, go inside it and use the underlying
@@ -395,8 +390,8 @@ get_alias_set (t)
}
/* Give the language another chance to do something special. */
- if (orig_t != t && lang_get_alias_set != 0
- && (set = (*lang_get_alias_set) (t)) != -1)
+ if (orig_t != t
+ && (set = lang_get_alias_set (t)) != -1)
return set;
/* Now all we care about is the type. */
@@ -410,8 +405,7 @@ get_alias_set (t)
return TYPE_ALIAS_SET (t);
/* See if the language has special handling for this type. */
- if (lang_get_alias_set != 0
- && (set = (*lang_get_alias_set) (t)) != -1)
+ if ((set = lang_get_alias_set (t)) != -1)
;
/* There are no objects of FUNCTION_TYPE, so there's no point in
using up an alias set for them. (There are, of course, pointers
diff --git a/gcc/c-common.c b/gcc/c-common.c
index 979c380e941..d9c50bd9e4f 100644
--- a/gcc/c-common.c
+++ b/gcc/c-common.c
@@ -3265,7 +3265,7 @@ c_apply_type_quals_to_decl (type_quals, decl)
or a type. Return -1 if we don't do anything special. */
HOST_WIDE_INT
-c_get_alias_set (t)
+lang_get_alias_set (t)
tree t;
{
tree u;
diff --git a/gcc/c-common.h b/gcc/c-common.h
index 30f58f850ab..d0427241062 100644
--- a/gcc/c-common.h
+++ b/gcc/c-common.h
@@ -97,7 +97,6 @@ extern void decl_attributes PARAMS ((tree, tree, tree));
extern void init_function_format_info PARAMS ((void));
extern void check_function_format PARAMS ((tree, tree, tree));
extern void c_apply_type_quals_to_decl PARAMS ((int, tree));
-extern HOST_WIDE_INT c_get_alias_set PARAMS ((tree));
/* Print an error message for invalid operands to arith operation CODE.
NOP_EXPR is used as a special case (see truthvalue_conversion). */
extern void binary_op_error PARAMS ((enum tree_code));
diff --git a/gcc/c-decl.c b/gcc/c-decl.c
index 08bc9792500..31494e67317 100644
--- a/gcc/c-decl.c
+++ b/gcc/c-decl.c
@@ -2896,8 +2896,6 @@ init_decl_processing ()
tree array_domain_type;
tree t;
- lang_get_alias_set = c_get_alias_set;
-
current_function_decl = NULL;
named_labels = NULL;
current_binding_level = NULL_BINDING_LEVEL;
diff --git a/gcc/ch/ChangeLog b/gcc/ch/ChangeLog
index 30c39a24058..3b346e1fccc 100644
--- a/gcc/ch/ChangeLog
+++ b/gcc/ch/ChangeLog
@@ -1,3 +1,7 @@
+2000-06-02 Richard Henderson <rth@cygnus.com>
+
+ * lang.c (lang_get_alias_set): New.
+
Sat May 27 11:24:26 2000 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* lang.c (deep_const_expr): Use first_rtl_op.
diff --git a/gcc/ch/lang.c b/gcc/ch/lang.c
index 985eea7bffc..7b62c16b4f2 100644
--- a/gcc/ch/lang.c
+++ b/gcc/ch/lang.c
@@ -283,6 +283,19 @@ incomplete_type_error (value, type)
error ("internal error - use of undefined type");
}
+/* Return the typed-based alias set for T, which may be an expression
+ or a type. Return -1 if we don't do anything special. */
+
+HOST_WIDE_INT
+lang_get_alias_set (t)
+ tree t;
+{
+ /* ??? Need to figure out what the rules are. Certainly we'd need
+ to handle union-like things, and probably variant records.
+ Until then, turn off type-based aliasing completely. */
+ return 0;
+}
+
void
lang_init ()
{
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index ebc064d0800..9a5c6c7a8f1 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,7 @@
+2000-06-02 Richard Henderson <rth@cygnus.com>
+
+ * decl.c (init_decl_processing): Don't set lang_get_alias_set.
+
2000-06-02 Jason Merrill <jason@casey.soma.redhat.com>
* decl.c (store_return_init): Call put_var_into_stack.
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index 1cd6f438d4e..d5097f2e134 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -6252,8 +6252,6 @@ init_decl_processing ()
int wchar_type_size;
tree array_domain_type;
- lang_get_alias_set = c_get_alias_set;
-
/* Check to see that the user did not specify an invalid combination
of command-line options. */
if (flag_new_abi && !flag_vtable_thunks)
diff --git a/gcc/expr.h b/gcc/expr.h
index ca82ab1fe49..852b6c0efe6 100644
--- a/gcc/expr.h
+++ b/gcc/expr.h
@@ -922,7 +922,7 @@ extern void record_alias_subset PARAMS ((HOST_WIDE_INT,
HOST_WIDE_INT));
#ifdef TREE_CODE
extern HOST_WIDE_INT get_alias_set PARAMS ((tree));
-extern HOST_WIDE_INT (*lang_get_alias_set) PARAMS ((tree));
+extern HOST_WIDE_INT lang_get_alias_set PARAMS ((tree));
#endif
extern HOST_WIDE_INT new_alias_set PARAMS ((void));
diff --git a/gcc/f/ChangeLog b/gcc/f/ChangeLog
index fb83e73efd5..a37deecc884 100644
--- a/gcc/f/ChangeLog
+++ b/gcc/f/ChangeLog
@@ -1,3 +1,7 @@
+2000-06-02 Richard Henderson <rth@cygnus.com>
+
+ * com.c (lang_get_alias_set): New.
+
2000-05-28 Toon Moene <toon@moene.indiv.nluug.nl>
* bugs.texi: Note that debugging information for
diff --git a/gcc/f/com.c b/gcc/f/com.c
index c533330f215..5f08ef0bb6f 100644
--- a/gcc/f/com.c
+++ b/gcc/f/com.c
@@ -14870,6 +14870,21 @@ lang_identify ()
return "f77";
}
+/* Return the typed-based alias set for T, which may be an expression
+ or a type. Return -1 if we don't do anything special. */
+
+HOST_WIDE_INT
+lang_get_alias_set (t)
+ tree t;
+{
+ /* We do not wish to use alias-set based aliasing at all. Used in the
+ extreme (every object with its own set, with equivalences recorded)
+ it might be helpful, but there are problems when it comes to inlining.
+ We get on ok with flag_argument_noalias, and alias-set aliasing does
+ currently limit how stack slots can be reused, which is a lose. */
+ return 0;
+}
+
void
lang_init_options ()
{
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index de192e2f0f2..aefe16da3b2 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,7 @@
+2000-06-02 Richard Henderson <rth@cygnus.com>
+
+ * lang.c (lang_get_alias_set): New.
+
2000-05-31 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (resolve_field_access): Complete the DECL_INITIAL tree
diff --git a/gcc/java/lang.c b/gcc/java/lang.c
index 2a1d142ed38..765a3be7a5a 100644
--- a/gcc/java/lang.c
+++ b/gcc/java/lang.c
@@ -646,3 +646,13 @@ lang_print_xnode (file, node, indent)
int indent __attribute ((__unused__));
{
}
+
+/* Return the typed-based alias set for T, which may be an expression
+ or a type. Return -1 if we don't do anything special. */
+
+HOST_WIDE_INT
+lang_get_alias_set (t)
+ tree t;
+{
+ return -1;
+}