Hi,
The attached patch fixes one of arm_neon.h's issues with C++. All scalar types
<type>x1_t are mapped to internal __builtin_aarch64_simd_<type> types. This
creates duplicate function name symbols when one attempts overloading a standard
type and one of these builtin types that are of the same size. For example,
int8x1_t when overloaded with signed char creates a duplicate function name
symbol. This patch increases the strictness and maps scalar types <type>x1_t to
standard types. This means overloading is not possible, but that will not make a
difference as we can now define it this way and needless to say it was broken
till now anyway.
Tested for aarch64-none-elf. OK for trunk and aarch64-4.7-branch?
Thanks,
Tejas Belagod
ARM.
Changelog:
2013-01-18 Tejas Belagod <tejas.bela...@arm.com>
gcc/
* config/aarch64/arm_neon.h: Map scalar types to standard types.
diff --git a/gcc/config/aarch64/arm_neon.h b/gcc/config/aarch64/arm_neon.h
index 5a72029..50e0a7b 100644
--- a/gcc/config/aarch64/arm_neon.h
+++ b/gcc/config/aarch64/arm_neon.h
@@ -35,11 +35,11 @@ typedef __builtin_aarch64_simd_hi int16x4_t
__attribute__ ((__vector_size__ (8)));
typedef __builtin_aarch64_simd_si int32x2_t
__attribute__ ((__vector_size__ (8)));
-typedef __builtin_aarch64_simd_di int64x1_t;
-typedef __builtin_aarch64_simd_si int32x1_t;
-typedef __builtin_aarch64_simd_hi int16x1_t;
-typedef __builtin_aarch64_simd_qi int8x1_t;
-typedef __builtin_aarch64_simd_df float64x1_t;
+typedef int64_t int64x1_t;
+typedef int32_t int32x1_t;
+typedef int16_t int16x1_t;
+typedef int8_t int8x1_t;
+typedef double float64x1_t;
typedef __builtin_aarch64_simd_sf float32x2_t
__attribute__ ((__vector_size__ (8)));
typedef __builtin_aarch64_simd_poly8 poly8x8_t
@@ -52,10 +52,10 @@ typedef __builtin_aarch64_simd_uhi uint16x4_t
__attribute__ ((__vector_size__ (8)));
typedef __builtin_aarch64_simd_usi uint32x2_t
__attribute__ ((__vector_size__ (8)));
-typedef __builtin_aarch64_simd_udi uint64x1_t;
-typedef __builtin_aarch64_simd_usi uint32x1_t;
-typedef __builtin_aarch64_simd_uhi uint16x1_t;
-typedef __builtin_aarch64_simd_uqi uint8x1_t;
+typedef uint64_t uint64x1_t;
+typedef uint32_t uint32x1_t;
+typedef uint16_t uint16x1_t;
+typedef uint8_t uint8x1_t;
typedef __builtin_aarch64_simd_qi int8x16_t
__attribute__ ((__vector_size__ (16)));
typedef __builtin_aarch64_simd_hi int16x8_t