aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAldy Hernandez <aldyh@redhat.com>2003-04-07 20:09:14 +0000
committerAldy Hernandez <aldyh@gcc.gnu.org>2003-04-07 20:09:14 +0000
commit2abe3e28f3a30e4c8b26be31f7c1941cc79d4dfa (patch)
tree489b77bf3926022e08e1dc728283d10bc53d8a75
parent9a318d3046dac48e1b3ecc33cfa7ba09193ca3cc (diff)
downloadgcc-2abe3e28f3a30e4c8b26be31f7c1941cc79d4dfa.zip
gcc-2abe3e28f3a30e4c8b26be31f7c1941cc79d4dfa.tar.gz
gcc-2abe3e28f3a30e4c8b26be31f7c1941cc79d4dfa.tar.bz2
rs6000.c (rs6000_common_init_builtins): Rename all V2SI_type_node to opaque_V2SI_type_node.
2003-04-07 Aldy Hernandez <aldyh@redhat.com> * config/rs6000/rs6000.c (rs6000_common_init_builtins): Rename all V2SI_type_node to opaque_V2SI_type_node. Rename all V2SF_type_node to opaque_V2SF_type_node. (rs6000_init_builtins): Define opaque_V2SI_type_node and opaque_V2SF_type_node. (is_ev64_opaque_type): The types opaque_V2SI_type_node and opaque_V2SF_type_node are opaque types. From-SVN: r65340
-rw-r--r--gcc/ChangeLog10
-rw-r--r--gcc/config/rs6000/rs6000.c63
2 files changed, 50 insertions, 23 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c3b10b2..3e6259b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,13 @@
+2003-04-07 Aldy Hernandez <aldyh@redhat.com>
+
+ * config/rs6000/rs6000.c (rs6000_common_init_builtins): Rename all
+ V2SI_type_node to opaque_V2SI_type_node. Rename all
+ V2SF_type_node to opaque_V2SF_type_node.
+ (rs6000_init_builtins): Define opaque_V2SI_type_node and
+ opaque_V2SF_type_node.
+ (is_ev64_opaque_type): The types opaque_V2SI_type_node and
+ opaque_V2SF_type_node are opaque types.
+
2003-04-07 J"orn Rennecke <joern.rennecke@superh.com>
* gcse.c (replace_store_insn): Use single_set.
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index af179b1..0209240 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -147,6 +147,12 @@ const char *rs6000_debug_name;
int rs6000_debug_stack; /* debug stack applications */
int rs6000_debug_arg; /* debug argument handling */
+/* A copy of V2SI_type_node to be used as an opaque type. */
+static GTY(()) tree opaque_V2SI_type_node;
+
+/* Same, but for V2SF. */
+static GTY(()) tree opaque_V2SF_type_node;
+
const char *rs6000_traceback_name;
static enum {
traceback_default = 0,
@@ -5431,7 +5437,11 @@ static void
rs6000_init_builtins ()
{
if (TARGET_SPE)
- spe_init_builtins ();
+ {
+ opaque_V2SI_type_node = copy_node (V2SI_type_node);
+ opaque_V2SF_type_node = copy_node (V2SF_type_node);
+ spe_init_builtins ();
+ }
if (TARGET_ALTIVEC)
altivec_init_builtins ();
if (TARGET_ALTIVEC || TARGET_SPE)
@@ -5910,43 +5920,48 @@ rs6000_common_init_builtins ()
= build_function_type_list (V4SF_type_node, V4SF_type_node, NULL_TREE);
tree v2si_ftype_v2si_v2si
- = build_function_type_list (V2SI_type_node,
- V2SI_type_node, V2SI_type_node, NULL_TREE);
+ = build_function_type_list (opaque_V2SI_type_node,
+ opaque_V2SI_type_node,
+ opaque_V2SI_type_node, NULL_TREE);
tree v2sf_ftype_v2sf_v2sf
- = build_function_type_list (V2SF_type_node,
- V2SF_type_node, V2SF_type_node, NULL_TREE);
+ = build_function_type_list (opaque_V2SF_type_node,
+ opaque_V2SF_type_node,
+ opaque_V2SF_type_node, NULL_TREE);
tree v2si_ftype_int_int
- = build_function_type_list (V2SI_type_node,
+ = build_function_type_list (opaque_V2SI_type_node,
integer_type_node, integer_type_node,
NULL_TREE);
tree v2si_ftype_v2si
- = build_function_type_list (V2SI_type_node, V2SI_type_node, NULL_TREE);
+ = build_function_type_list (opaque_V2SI_type_node,
+ opaque_V2SI_type_node, NULL_TREE);
tree v2sf_ftype_v2sf
- = build_function_type_list (V2SF_type_node,
- V2SF_type_node, NULL_TREE);
+ = build_function_type_list (opaque_V2SF_type_node,
+ opaque_V2SF_type_node, NULL_TREE);
tree v2sf_ftype_v2si
- = build_function_type_list (V2SF_type_node,
- V2SI_type_node, NULL_TREE);
+ = build_function_type_list (opaque_V2SF_type_node,
+ opaque_V2SI_type_node, NULL_TREE);
tree v2si_ftype_v2sf
- = build_function_type_list (V2SI_type_node,
- V2SF_type_node, NULL_TREE);
+ = build_function_type_list (opaque_V2SI_type_node,
+ opaque_V2SF_type_node, NULL_TREE);
tree v2si_ftype_v2si_char
- = build_function_type_list (V2SI_type_node,
- V2SI_type_node, char_type_node, NULL_TREE);
+ = build_function_type_list (opaque_V2SI_type_node,
+ opaque_V2SI_type_node,
+ char_type_node, NULL_TREE);
tree v2si_ftype_int_char
- = build_function_type_list (V2SI_type_node,
+ = build_function_type_list (opaque_V2SI_type_node,
integer_type_node, char_type_node, NULL_TREE);
tree v2si_ftype_char
- = build_function_type_list (V2SI_type_node, char_type_node, NULL_TREE);
+ = build_function_type_list (opaque_V2SI_type_node,
+ char_type_node, NULL_TREE);
tree int_ftype_int_int
= build_function_type_list (integer_type_node,
@@ -13933,12 +13948,14 @@ is_ev64_opaque_type (type)
tree type;
{
return (TARGET_SPE
- && TREE_CODE (type) == VECTOR_TYPE
- && TYPE_NAME (type)
- && TREE_CODE (TYPE_NAME (type)) == TYPE_DECL
- && DECL_NAME (TYPE_NAME (type))
- && strcmp (IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (type))),
- "__ev64_opaque__") == 0);
+ && (type == opaque_V2SI_type_node
+ || type == opaque_V2SF_type_node
+ || (TREE_CODE (type) == VECTOR_TYPE
+ && TYPE_NAME (type)
+ && TREE_CODE (TYPE_NAME (type)) == TYPE_DECL
+ && DECL_NAME (TYPE_NAME (type))
+ && strcmp (IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (type))),
+ "__ev64_opaque__") == 0)));
}
static rtx