mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-19 10:10:39 +08:00
rs6000.c (rs6000_init_builtins): Set TYPE_NAME of our distinct integral and vector types.
./ * config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of our distinct integral and vector types. testsuite/ * g++.dg/ext/altivec-17.C: New. From-SVN: r146092
This commit is contained in:
parent
f7ca1d041c
commit
5afaa917da
@ -1,3 +1,8 @@
|
||||
2009-04-15 Nathan Sidwell <nathan@codesourcery.com>
|
||||
|
||||
* config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of
|
||||
our distinct integral and vector types.
|
||||
|
||||
2009-04-15 Rafael Avila de Espindola <espindola@google.com>
|
||||
|
||||
* class.c (build_vtbl_ref_1): Remove call to assemble_external.
|
||||
|
@ -9374,6 +9374,8 @@ build_opaque_vector_type (tree node, int nunits)
|
||||
static void
|
||||
rs6000_init_builtins (void)
|
||||
{
|
||||
tree tdecl;
|
||||
|
||||
V2SI_type_node = build_vector_type (intSI_type_node, 2);
|
||||
V2SF_type_node = build_vector_type (float_type_node, 2);
|
||||
V4HI_type_node = build_vector_type (intHI_type_node, 4);
|
||||
@ -9411,60 +9413,75 @@ rs6000_init_builtins (void)
|
||||
float_type_internal_node = float_type_node;
|
||||
void_type_internal_node = void_type_node;
|
||||
|
||||
(*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
|
||||
get_identifier ("__bool char"),
|
||||
bool_char_type_node));
|
||||
(*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
|
||||
get_identifier ("__bool short"),
|
||||
bool_short_type_node));
|
||||
(*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
|
||||
get_identifier ("__bool int"),
|
||||
bool_int_type_node));
|
||||
(*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
|
||||
get_identifier ("__pixel"),
|
||||
pixel_type_node));
|
||||
tdecl = build_decl (TYPE_DECL, get_identifier ("__bool char"),
|
||||
bool_char_type_node);
|
||||
TYPE_NAME (bool_char_type_node) = tdecl;
|
||||
(*lang_hooks.decls.pushdecl) (tdecl);
|
||||
tdecl = build_decl (TYPE_DECL, get_identifier ("__bool short"),
|
||||
bool_short_type_node);
|
||||
TYPE_NAME (bool_short_type_node) = tdecl;
|
||||
(*lang_hooks.decls.pushdecl) (tdecl);
|
||||
tdecl = build_decl (TYPE_DECL, get_identifier ("__bool int"),
|
||||
bool_int_type_node);
|
||||
TYPE_NAME (bool_int_type_node) = tdecl;
|
||||
(*lang_hooks.decls.pushdecl) (tdecl);
|
||||
tdecl = build_decl (TYPE_DECL, get_identifier ("__pixel"),
|
||||
pixel_type_node);
|
||||
TYPE_NAME (pixel_type_node) = tdecl;
|
||||
(*lang_hooks.decls.pushdecl) (tdecl);
|
||||
|
||||
bool_V16QI_type_node = build_vector_type (bool_char_type_node, 16);
|
||||
bool_V8HI_type_node = build_vector_type (bool_short_type_node, 8);
|
||||
bool_V4SI_type_node = build_vector_type (bool_int_type_node, 4);
|
||||
pixel_V8HI_type_node = build_vector_type (pixel_type_node, 8);
|
||||
|
||||
(*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
|
||||
get_identifier ("__vector unsigned char"),
|
||||
unsigned_V16QI_type_node));
|
||||
(*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
|
||||
get_identifier ("__vector signed char"),
|
||||
V16QI_type_node));
|
||||
(*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
|
||||
get_identifier ("__vector __bool char"),
|
||||
bool_V16QI_type_node));
|
||||
tdecl = build_decl (TYPE_DECL, get_identifier ("__vector unsigned char"),
|
||||
unsigned_V16QI_type_node);
|
||||
TYPE_NAME (unsigned_V16QI_type_node) = tdecl;
|
||||
(*lang_hooks.decls.pushdecl) (tdecl);
|
||||
tdecl = build_decl (TYPE_DECL, get_identifier ("__vector signed char"),
|
||||
V16QI_type_node);
|
||||
TYPE_NAME (V16QI_type_node) = tdecl;
|
||||
(*lang_hooks.decls.pushdecl) (tdecl);
|
||||
tdecl = build_decl (TYPE_DECL, get_identifier ("__vector __bool char"),
|
||||
bool_V16QI_type_node);
|
||||
TYPE_NAME ( bool_V16QI_type_node) = tdecl;
|
||||
(*lang_hooks.decls.pushdecl) (tdecl);
|
||||
|
||||
(*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
|
||||
get_identifier ("__vector unsigned short"),
|
||||
unsigned_V8HI_type_node));
|
||||
(*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
|
||||
get_identifier ("__vector signed short"),
|
||||
V8HI_type_node));
|
||||
(*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
|
||||
get_identifier ("__vector __bool short"),
|
||||
bool_V8HI_type_node));
|
||||
tdecl = build_decl (TYPE_DECL, get_identifier ("__vector unsigned short"),
|
||||
unsigned_V8HI_type_node);
|
||||
TYPE_NAME (unsigned_V8HI_type_node) = tdecl;
|
||||
(*lang_hooks.decls.pushdecl) (tdecl);
|
||||
tdecl = build_decl (TYPE_DECL, get_identifier ("__vector signed short"),
|
||||
V8HI_type_node);
|
||||
TYPE_NAME (V8HI_type_node) = tdecl;
|
||||
(*lang_hooks.decls.pushdecl) (tdecl);
|
||||
tdecl = build_decl (TYPE_DECL, get_identifier ("__vector __bool short"),
|
||||
bool_V8HI_type_node);
|
||||
TYPE_NAME (bool_V8HI_type_node) = tdecl;
|
||||
(*lang_hooks.decls.pushdecl) (tdecl);
|
||||
|
||||
(*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
|
||||
get_identifier ("__vector unsigned int"),
|
||||
unsigned_V4SI_type_node));
|
||||
(*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
|
||||
get_identifier ("__vector signed int"),
|
||||
V4SI_type_node));
|
||||
(*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
|
||||
get_identifier ("__vector __bool int"),
|
||||
bool_V4SI_type_node));
|
||||
tdecl = build_decl (TYPE_DECL, get_identifier ("__vector unsigned int"),
|
||||
unsigned_V4SI_type_node);
|
||||
TYPE_NAME (unsigned_V4SI_type_node) = tdecl;
|
||||
(*lang_hooks.decls.pushdecl) (tdecl);
|
||||
tdecl = build_decl (TYPE_DECL, get_identifier ("__vector signed int"),
|
||||
V4SI_type_node);
|
||||
TYPE_NAME (V4SI_type_node) = tdecl;
|
||||
(*lang_hooks.decls.pushdecl) (tdecl);
|
||||
tdecl = build_decl (TYPE_DECL, get_identifier ("__vector __bool int"),
|
||||
bool_V4SI_type_node);
|
||||
TYPE_NAME (bool_V4SI_type_node) = tdecl;
|
||||
(*lang_hooks.decls.pushdecl) (tdecl);
|
||||
|
||||
(*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
|
||||
get_identifier ("__vector float"),
|
||||
V4SF_type_node));
|
||||
(*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
|
||||
get_identifier ("__vector __pixel"),
|
||||
pixel_V8HI_type_node));
|
||||
tdecl = build_decl (TYPE_DECL, get_identifier ("__vector float"),
|
||||
V4SF_type_node);
|
||||
TYPE_NAME (V4SF_type_node) = tdecl;
|
||||
(*lang_hooks.decls.pushdecl) (tdecl);
|
||||
tdecl = build_decl (TYPE_DECL, get_identifier ("__vector __pixel"),
|
||||
pixel_V8HI_type_node);
|
||||
TYPE_NAME (pixel_V8HI_type_node) = tdecl;
|
||||
(*lang_hooks.decls.pushdecl) (tdecl);
|
||||
|
||||
if (TARGET_PAIRED_FLOAT)
|
||||
paired_init_builtins ();
|
||||
|
@ -1,3 +1,7 @@
|
||||
2009-04-15 Nathan Sidwell <nathan@codesourcery.com>
|
||||
|
||||
* g++.dg/ext/altivec-17.C: New.
|
||||
|
||||
2009-04-15 Arnaud Charlet <charlet@adacore.com>
|
||||
|
||||
* gnat.dg/sync1.ads: Fix error now flagged by gnat.
|
||||
|
16
gcc/testsuite/g++.dg/ext/altivec-17.C
Normal file
16
gcc/testsuite/g++.dg/ext/altivec-17.C
Normal file
@ -0,0 +1,16 @@
|
||||
// { dg-do compile { target powerpc*-*-* } }
|
||||
// { dg-require-effective-target powerpc_altivec_ok }
|
||||
// { dg-options "-maltivec" }
|
||||
|
||||
// Make sure that bool vectors have distinct names to int vectors
|
||||
|
||||
#define vector__ __attribute__((altivec (vector__)))
|
||||
#define bool__ __attribute__((altivec(bool__)))
|
||||
|
||||
typedef vector__ unsigned int simd_type;
|
||||
typedef vector__ bool__ int bool_simd_type;
|
||||
|
||||
void Foo (bool_simd_type const &a)
|
||||
{
|
||||
simd_type const &v = a; // { dg-error "'const unsigned int __vector__&' from expression of type 'const __bool int __vector__'" }
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user