commit d82bdca987581dbca6946b0f09e19bae495e79a3
Author: Jiong Wang <jiong.wang@arm.com>
Date: Mon May 18 17:17:38 2015 +0100
support GD
@@ -4263,9 +4263,19 @@
(clobber (reg:DI LR_REGNUM))
]
""
- "adrp\\tx0, %A1\;add\\tx0, x0, %L1\;bl\\t%2\;nop"
+ {
+ if (aarch64_cmodel_var == AARCH64_CMODEL_TINY)
+ return "adr\tx0, %A1;bl\t%2;nop";
+ else if (aarch64_cmodel_var == AARCH64_CMODEL_SMALL)
+ return "adrp\tx0, %A1;add\tx0, x0, %L1;bl\t%2;nop";
+ else
+ /* TBD: Large model to be supported. */
+ gcc_unreachable ();
+ }
[(set_attr "type" "call")
- (set_attr "length" "16")])
+ (set (attr "length")
+ (if_then_else (match_test "aarch64_cmodel_var == AARCH64_CMODEL_TINY")
+ (const_int 12) (const_int 16)))])
(define_insn "tlsie_small_<mode>"
[(set (match_operand:PTR 0 "register_operand" "=r")
new file mode 100644
@@ -0,0 +1,9 @@
+/* { dg-do run } */
+/* { dg-require-effective-target tls_native } */
+/* { dg-options "-O2 -ftls-model=global-dynamic -fPIC -mtls-dialect=trad --save-temps" } */
+
+#include "tls.c"
+
+/* { dg-final { scan-assembler-times "adrp\tx\[0-9\]+, :tlsgd:" 2 } } */
+/* { dg-final { scan-assembler-times "bl\t__tls_get_addr" 2 } } */
+/* { dg-final { cleanup-saved-temps } } */
new file mode 100644
@@ -0,0 +1,9 @@
+/* { dg-do run } */
+/* { dg-require-effective-target tls_native } */
+/* { dg-options "-O2 -ftls-model=global-dynamic -fPIC -mtls-dialect=trad -mcmodel=tiny --save-temps" } */
+
+#include "tls.c"
+
+/* { dg-final { scan-assembler-times "adr\tx\[0-9\]+, :tlsgd:" 2 } } */
+/* { dg-final { scan-assembler-times "bl\t__tls_get_addr" 2 } } */
+/* { dg-final { cleanup-saved-temps } } */