diff mbox

[3/6] Thread pointer built-in functions, arm

Message ID 503C7DCE.9050405@codesourcery.com
State New
Headers show

Commit Message

Chung-Lin Tang Aug. 28, 2012, 8:14 a.m. UTC
On 12/7/12 5:47 PM, Ramana Radhakrishnan wrote:
> On 12 July 2012 07:52, Chung-Lin Tang <cltang@codesourcery.com> wrote:
>> ARM parts, no further notes.
>>
> 
> ARM parts are ok, modulo approval for generic parts  and no
> regressions with testing on arm-linux-gnueabi.

ARM parts updated to use MD patterns.

Thanks,
Chung-Lin

        * config/arm/arm.md (get_thread_pointersi): New pattern.
        * config/arm/arm-protos.h (arm_load_tp): Add extern declaration.
        * config/arm/arm.c (arm_load_tp): Remove static.
        (arm_builtins): Remove ARM_BUILTIN_THREAD_POINTER.
        (arm_init_tls_builtins): Remove function.
        (arm_init_builtins): Remove call to arm_init_tls_builtins().
        (arm_expand_builtin): Remove ARM_BUILTIN_THREAD_POINTER case.

Comments

Chung-Lin Tang Sept. 10, 2012, 6:34 a.m. UTC | #1
On 2012/8/28 下午 04:14, Chung-Lin Tang wrote:
> On 12/7/12 5:47 PM, Ramana Radhakrishnan wrote:
>> On 12 July 2012 07:52, Chung-Lin Tang <cltang@codesourcery.com> wrote:
>>> ARM parts, no further notes.
>>>
>>
>> ARM parts are ok, modulo approval for generic parts  and no
>> regressions with testing on arm-linux-gnueabi.
> 
> ARM parts updated to use MD patterns.
> 
> Thanks,
> Chung-Lin
> 
>         * config/arm/arm.md (get_thread_pointersi): New pattern.
>         * config/arm/arm-protos.h (arm_load_tp): Add extern declaration.
>         * config/arm/arm.c (arm_load_tp): Remove static.
>         (arm_builtins): Remove ARM_BUILTIN_THREAD_POINTER.
>         (arm_init_tls_builtins): Remove function.
>         (arm_init_builtins): Remove call to arm_init_tls_builtins().
>         (arm_expand_builtin): Remove ARM_BUILTIN_THREAD_POINTER case.

Ping.
Ramana Radhakrishnan Oct. 10, 2012, 3:01 p.m. UTC | #2
On 09/10/12 07:34, Chung-Lin Tang wrote:
> On 2012/8/28 下午 04:14, Chung-Lin Tang wrote:
>> On 12/7/12 5:47 PM, Ramana Radhakrishnan wrote:
>>> On 12 July 2012 07:52, Chung-Lin Tang <cltang@codesourcery.com> wrote:
>>>> ARM parts, no further notes.
>>>>
>>>
>>> ARM parts are ok, modulo approval for generic parts  and no
>>> regressions with testing on arm-linux-gnueabi.
>>
>> ARM parts updated to use MD patterns.


This is Ok. Sorry I'd been away on vacation and couldn't review this 
earlier.

regards,
Ramana
diff mbox

Patch

Index: config/arm/arm.c
===================================================================
--- config/arm/arm.c	(revision 190742)
+++ config/arm/arm.c	(working copy)
@@ -6275,7 +6275,7 @@  get_tls_get_addr (void)
   return tls_get_addr_libfunc;
 }
 
-static rtx
+rtx
 arm_load_tp (rtx target)
 {
   if (!target)
@@ -19095,8 +19095,6 @@  enum arm_builtins
 
   ARM_BUILTIN_WMERGE,
 
-  ARM_BUILTIN_THREAD_POINTER,
-
   ARM_BUILTIN_NEON_BASE,
 
   ARM_BUILTIN_MAX = ARM_BUILTIN_NEON_BASE + ARRAY_SIZE (neon_builtin_data)
@@ -20136,20 +20134,6 @@  arm_init_iwmmxt_builtins (void)
 }
 
 static void
-arm_init_tls_builtins (void)
-{
-  tree ftype, decl;
-
-  ftype = build_function_type (ptr_type_node, void_list_node);
-  decl = add_builtin_function ("__builtin_thread_pointer", ftype,
-			       ARM_BUILTIN_THREAD_POINTER, BUILT_IN_MD,
-			       NULL, NULL_TREE);
-  TREE_NOTHROW (decl) = 1;
-  TREE_READONLY (decl) = 1;
-  arm_builtin_decls[ARM_BUILTIN_THREAD_POINTER] = decl;
-}
-
-static void
 arm_init_fp16_builtins (void)
 {
   tree fp16_type = make_node (REAL_TYPE);
@@ -20161,8 +20145,6 @@  arm_init_fp16_builtins (void)
 static void
 arm_init_builtins (void)
 {
-  arm_init_tls_builtins ();
-
   if (TARGET_REALLY_IWMMXT)
     arm_init_iwmmxt_builtins ();
 
@@ -21265,9 +21247,6 @@  arm_expand_builtin (tree exp,
 	}
       return arm_expand_binop_builtin (icode, exp, target);
 
-    case ARM_BUILTIN_THREAD_POINTER:
-      return arm_load_tp (target);
-
     default:
       break;
     }
Index: config/arm/arm-protos.h
===================================================================
--- config/arm/arm-protos.h	(revision 190742)
+++ config/arm/arm-protos.h	(working copy)
@@ -163,6 +163,7 @@  extern int arm_attr_length_push_multi(rtx, rtx);
 extern void arm_expand_compare_and_swap (rtx op[]);
 extern void arm_split_compare_and_swap (rtx op[]);
 extern void arm_split_atomic_op (enum rtx_code, rtx, rtx, rtx, rtx, rtx, rtx);
+extern rtx arm_load_tp (rtx);
 
 #if defined TREE_CODE
 extern void arm_init_cumulative_args (CUMULATIVE_ARGS *, tree, rtx, tree);
Index: config/arm/arm.md
===================================================================
--- config/arm/arm.md	(revision 190742)
+++ config/arm/arm.md	(working copy)
@@ -11473,6 +11473,15 @@ 
   "
 )
 
+(define_expand "get_thread_pointersi"
+  [(match_operand:SI 0 "s_register_operand" "=r")]
+ ""
+ "
+ {
+   arm_load_tp (operands[0]);
+   DONE;
+ }")
+
 ;; Load the load/store multiple patterns
 (include "ldmstm.md")