aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Bonzini <bonzini@gnu.org>2004-05-05 07:42:52 +0000
committerPaolo Bonzini <bonzini@gcc.gnu.org>2004-05-05 07:42:52 +0000
commit7c62e9932f2d31fe01bfcc230a5ee3ad1057471a (patch)
treeac88fa0fe966e3e707f60b718815fa34858b830c
parentce7f07bdc1822254a518dd6ec63cdb4c30ab8bb6 (diff)
downloadgcc-7c62e9932f2d31fe01bfcc230a5ee3ad1057471a.zip
gcc-7c62e9932f2d31fe01bfcc230a5ee3ad1057471a.tar.gz
gcc-7c62e9932f2d31fe01bfcc230a5ee3ad1057471a.tar.bz2
rs6000.c (build_opaque_vector_type): New function.
2004-05-05 Paolo Bonzini <bonzini@gnu.org> * config/rs6000/rs6000.c (build_opaque_vector_type): New function. (rs6000_init_builtins): Use it. From-SVN: r81509
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/config/rs6000/rs6000.c13
2 files changed, 17 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7063898..7dced81 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2004-05-05 Paolo Bonzini <bonzini@gnu.org>
+
+ * config/rs6000/rs6000.c (build_opaque_vector_type):
+ New function.
+ (rs6000_init_builtins): Use it.
+
2004-05-04 Bernard Giroud <bgiroud2@free.fr>
* gcc/gcc/vmsdbgout.c (vms_func_node, vms_func_ref): New.
@@ -22,9 +28,6 @@
* cp/call.c (standard_conversion): Likewise.
* cp/typeck.c (comptypes): Recurse on vector types.
(convert_for_assignment): Use vector_types_convertible_p.
- * config/rs6000/rs6000.c (build_opaque_vector_type):
- New function.
- (rs6000_init_builtins): Use it.
2004-05-04 Chris Demetriou <cgd@broadcom.com>
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index b188132..654891c 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -381,6 +381,7 @@ static void rs6000_init_libfuncs (void);
static void enable_mask_for_builtins (struct builtin_description *, int,
enum rs6000_builtins,
enum rs6000_builtins);
+static tree build_opaque_vector_type (tree, int);
static void spe_init_builtins (void);
static rtx spe_expand_builtin (tree, rtx, bool *);
static rtx spe_expand_predicate_builtin (enum insn_code, tree, rtx);
@@ -6659,6 +6660,14 @@ rs6000_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED,
return NULL_RTX;
}
+static tree
+build_opaque_vector_type (tree node, int nunits)
+{
+ node = copy_node (node);
+ TYPE_MAIN_VARIANT (node) = node;
+ return build_vector_type (node, nunits);
+}
+
static void
rs6000_init_builtins (void)
{
@@ -6674,8 +6683,8 @@ rs6000_init_builtins (void)
unsigned_V8HI_type_node = build_vector_type (unsigned_intHI_type_node, 8);
unsigned_V4SI_type_node = build_vector_type (unsigned_intSI_type_node, 4);
- opaque_V2SI_type_node = copy_node (V2SI_type_node);
- opaque_V2SF_type_node = copy_node (V2SF_type_node);
+ opaque_V2SF_type_node = build_opaque_vector_type (float_type_node, 2);
+ opaque_V2SI_type_node = build_opaque_vector_type (intSI_type_node, 2);
opaque_p_V2SI_type_node = build_pointer_type (opaque_V2SI_type_node);
/* The 'vector bool ...' types must be kept distinct from 'vector unsigned ...'