diff options
author | Andrew Pinski <apinski@cavium.com> | 2012-10-29 17:31:52 +0000 |
---|---|---|
committer | Andrew Pinski <pinskia@gcc.gnu.org> | 2012-10-29 10:31:52 -0700 |
commit | a5bc806c9577f24595b24082140d42ecfaf70fc1 (patch) | |
tree | 8917bcd87473ada1bf70b361360a5c51e6801eef /gcc | |
parent | b72bdd90373987cd591fc47f2b906e4c15fd1880 (diff) | |
download | gcc-a5bc806c9577f24595b24082140d42ecfaf70fc1.zip gcc-a5bc806c9577f24595b24082140d42ecfaf70fc1.tar.gz gcc-a5bc806c9577f24595b24082140d42ecfaf70fc1.tar.bz2 |
aarch64-protos.h (aarch64_load_tp): New proto.
2012-10-29 Andrew Pinski <apinski@cavium.com>
* config/aarch64/aarch64-protos.h (aarch64_load_tp): New proto.
* config/aarch64/aarch64.c (aarch64_load_tp): Export.
(aarch64_init_builtins): Don't add __builtin_thread_pointer builtin.
* config/aarch64/aarch64.h (aarch64_builtins): Delete
From-SVN: r192955
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 10 | ||||
-rw-r--r-- | gcc/config/aarch64/aarch64-protos.h | 1 | ||||
-rw-r--r-- | gcc/config/aarch64/aarch64.c | 15 | ||||
-rw-r--r-- | gcc/config/aarch64/aarch64.h | 1 | ||||
-rw-r--r-- | gcc/config/aarch64/aarch64.md | 11 |
5 files changed, 23 insertions, 15 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4f14673..4127b00 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2012-10-29 Andrew Pinski <apinski@cavium.com> + + * config/aarch64/aarch64-protos.h (aarch64_load_tp): New proto. + * config/aarch64/aarch64.c (aarch64_load_tp): Export. + (aarch64_init_builtins): Don't add __builtin_thread_pointer builtin. + * config/aarch64/aarch64.h (aarch64_builtins): Delete + +AARCH64_BUILTIN_THREAD_POINTER. + * config/aarch64/aarch64.md (get_thread_pointerdi): New pattern. + 2012-10-29 Marc Glisse <marc.glisse@inria.fr> PR middle-end/55027 diff --git a/gcc/config/aarch64/aarch64-protos.h b/gcc/config/aarch64/aarch64-protos.h index 765d192..ca4e306 100644 --- a/gcc/config/aarch64/aarch64-protos.h +++ b/gcc/config/aarch64/aarch64-protos.h @@ -254,6 +254,7 @@ bool aarch64_split_128bit_move_p (rtx, rtx); bool aarch64_legitimate_address_p (enum machine_mode, rtx, RTX_CODE, bool); enum machine_mode aarch64_select_cc_mode (RTX_CODE, rtx, rtx); rtx aarch64_gen_compare_reg (RTX_CODE, rtx, rtx); +rtx aarch64_load_tp (rtx); #endif /* RTX_CODE */ diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index 1bc0c8a..aaebdf6 100644 --- a/gcc/config/aarch64/aarch64.c +++ b/gcc/config/aarch64/aarch64.c @@ -102,7 +102,6 @@ static bool aarch64_vfp_is_call_or_return_candidate (enum machine_mode, bool *); static void aarch64_elf_asm_constructor (rtx, int) ATTRIBUTE_UNUSED; static void aarch64_elf_asm_destructor (rtx, int) ATTRIBUTE_UNUSED; -static rtx aarch64_load_tp (rtx); static void aarch64_override_options_after_change (void); static int aarch64_simd_valid_immediate (rtx, enum machine_mode, int, rtx *, int *, unsigned char *, int *, int *); @@ -4988,20 +4987,11 @@ aarch64_legitimate_constant_p (enum machine_mode mode, rtx x) static void aarch64_init_builtins (void) { - tree ftype, decl = NULL; - - ftype = build_function_type (ptr_type_node, void_list_node); - decl = add_builtin_function ("__builtin_thread_pointer", ftype, - AARCH64_BUILTIN_THREAD_POINTER, BUILT_IN_MD, - NULL, NULL_TREE); - TREE_NOTHROW (decl) = 1; - TREE_READONLY (decl) = 1; - if (TARGET_SIMD) init_aarch64_simd_builtins (); } -static rtx +rtx aarch64_load_tp (rtx target) { if (!target @@ -5026,9 +5016,6 @@ aarch64_expand_builtin (tree exp, tree fndecl = TREE_OPERAND (CALL_EXPR_FN (exp), 0); int fcode = DECL_FUNCTION_CODE (fndecl); - if (fcode == AARCH64_BUILTIN_THREAD_POINTER) - return aarch64_load_tp (target); - if (fcode >= AARCH64_SIMD_BUILTIN_BASE) return aarch64_simd_expand_builtin (fcode, exp, target); diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h index 3b8b033..122a7a5 100644 --- a/gcc/config/aarch64/aarch64.h +++ b/gcc/config/aarch64/aarch64.h @@ -794,7 +794,6 @@ do { \ enum aarch64_builtins { AARCH64_BUILTIN_MIN, - AARCH64_BUILTIN_THREAD_POINTER, AARCH64_SIMD_BUILTIN_BASE }; diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md index b803922..804d7e7 100644 --- a/gcc/config/aarch64/aarch64.md +++ b/gcc/config/aarch64/aarch64.md @@ -2923,6 +2923,17 @@ [(set_attr "length" "0")] ) +;; Named pattern for expanding thread pointer reference. +(define_expand "get_thread_pointerdi" + [(match_operand:DI 0 "register_operand" "=r")] + "" +{ + rtx tmp = aarch64_load_tp (operands[0]); + if (tmp != operands[0]) + emit_move_insn (operands[0], tmp); + DONE; +}) + ;; AdvSIMD Stuff (include "aarch64-simd.md") |