diff options
author | James Greenhalgh <james.greenhalgh@arm.com> | 2012-11-26 17:48:13 +0000 |
---|---|---|
committer | James Greenhalgh <jgreenhalgh@gcc.gnu.org> | 2012-11-26 17:48:13 +0000 |
commit | 119103ca7bcd576fdf7b53b21dcb598b8915ad5a (patch) | |
tree | 55c9b60f06fbad4c24fc4b90ed75d34b827a5479 | |
parent | a27a5de96932f5568e8a4561dc82a1bd11814858 (diff) | |
download | gcc-119103ca7bcd576fdf7b53b21dcb598b8915ad5a.zip gcc-119103ca7bcd576fdf7b53b21dcb598b8915ad5a.tar.gz gcc-119103ca7bcd576fdf7b53b21dcb598b8915ad5a.tar.bz2 |
aarch64-builtins.c (aarch64_builtin_decls): New.
gcc/
* config/aarch64/aarch64-builtins.c (aarch64_builtin_decls): New.
(aarch64_init_simd_builtins): Store declaration after builtin
initialisation.
(aarch64_builtin_decl): New.
* config/aarch64/aarch64-protos.h (aarch64_builtin_decl): New.
* config/aarch64/aarch64.c (TARGET_BUILTIN_DECL): Define.
From-SVN: r193823
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/config/aarch64/aarch64-builtins.c | 17 | ||||
-rw-r--r-- | gcc/config/aarch64/aarch64-protos.h | 1 | ||||
-rw-r--r-- | gcc/config/aarch64/aarch64.c | 3 |
4 files changed, 28 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 80f9b03..5124079 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2012-11-26 James Greenhalgh <james.greenhalgh@arm.com> + + * config/aarch64/aarch64-builtins.c (aarch64_builtin_decls): New. + (aarch64_init_simd_builtins): Store declaration after builtin + initialisation. + (aarch64_builtin_decl): New. + * config/aarch64/aarch64-protos.h (aarch64_builtin_decl): New. + * config/aarch64/aarch64.c (TARGET_BUILTIN_DECL): Define. + 2012-11-26 Steven Bosscher <steven@gcc.gnu.org> * doc/invoke.texi: Remove -dv documentation. Fix up graph dump related diff --git a/gcc/config/aarch64/aarch64-builtins.c b/gcc/config/aarch64/aarch64-builtins.c index 0ce57d3..2cdda0f 100644 --- a/gcc/config/aarch64/aarch64-builtins.c +++ b/gcc/config/aarch64/aarch64-builtins.c @@ -304,6 +304,8 @@ enum aarch64_builtins #undef VAR10 #undef VAR11 +static GTY(()) tree aarch64_builtin_decls[AARCH64_BUILTIN_MAX]; + #define NUM_DREG_TYPES 6 #define NUM_QREG_TYPES 6 @@ -611,6 +613,7 @@ aarch64_init_simd_builtins (void) }; char namebuf[60]; tree ftype = NULL; + tree fndecl = NULL; int is_load = 0; int is_store = 0; @@ -951,8 +954,9 @@ aarch64_init_simd_builtins (void) snprintf (namebuf, sizeof (namebuf), "__builtin_aarch64_%s%s", d->name, modenames[d->mode]); - add_builtin_function (namebuf, ftype, fcode, BUILT_IN_MD, NULL, - NULL_TREE); + fndecl = add_builtin_function (namebuf, ftype, fcode, BUILT_IN_MD, + NULL, NULL_TREE); + aarch64_builtin_decls[fcode] = fndecl; } } @@ -963,6 +967,15 @@ aarch64_init_builtins (void) aarch64_init_simd_builtins (); } +tree +aarch64_builtin_decl (unsigned code, bool initialize_p ATTRIBUTE_UNUSED) +{ + if (code >= AARCH64_BUILTIN_MAX) + return error_mark_node; + + return aarch64_builtin_decls[code]; +} + typedef enum { SIMD_ARG_COPY_TO_REG, diff --git a/gcc/config/aarch64/aarch64-protos.h b/gcc/config/aarch64/aarch64-protos.h index b5a32b3..ab84257 100644 --- a/gcc/config/aarch64/aarch64-protos.h +++ b/gcc/config/aarch64/aarch64-protos.h @@ -234,5 +234,6 @@ rtx aarch64_expand_builtin (tree exp, rtx subtarget ATTRIBUTE_UNUSED, enum machine_mode mode ATTRIBUTE_UNUSED, int ignore ATTRIBUTE_UNUSED); +tree aarch64_builtin_decl (unsigned, bool ATTRIBUTE_UNUSED); #endif /* GCC_AARCH64_PROTOS_H */ diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index d4708bf..6241ba5 100644 --- a/gcc/config/aarch64/aarch64.c +++ b/gcc/config/aarch64/aarch64.c @@ -6736,6 +6736,9 @@ aarch64_c_mode_for_suffix (char suffix) #undef TARGET_CLASS_MAX_NREGS #define TARGET_CLASS_MAX_NREGS aarch64_class_max_nregs +#undef TARGET_BUILTIN_DECL +#define TARGET_BUILTIN_DECL aarch64_builtin_decl + #undef TARGET_EXPAND_BUILTIN #define TARGET_EXPAND_BUILTIN aarch64_expand_builtin |