From 119103ca7bcd576fdf7b53b21dcb598b8915ad5a Mon Sep 17 00:00:00 2001 From: James Greenhalgh Date: Mon, 26 Nov 2012 17:48:13 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 9 +++++++++ gcc/config/aarch64/aarch64-builtins.c | 17 +++++++++++++++-- gcc/config/aarch64/aarch64-protos.h | 1 + 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 + + * 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 * 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 -- 2.7.4