From patchwork Fri Jan 18 10:25:14 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [AArch64, AArch64-4.7] Map scalar types in arm_neon.h to standard types. Date: Fri, 18 Jan 2013 00:25:14 -0000 From: Tejas Belagod X-Patchwork-Id: 213557 Message-Id: <50F9230A.40208@arm.com> To: "gcc-patches@gcc.gnu.org" Cc: Marcus Shawcroft Hi, The attached patch fixes one of arm_neon.h's issues with C++. All scalar types x1_t are mapped to internal __builtin_aarch64_simd_ 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 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 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