diff mbox series

[06/10,ARC] Update legitimate constant hook.

Message ID 1511780999-27757-7-git-send-email-claziss@synopsys.com
State New
Headers show
Series Critical fixes | expand

Commit Message

Claudiu Zissulescu Nov. 27, 2017, 11:09 a.m. UTC
From: Claudiu Zissulescu <claziss@gmail.com>

Make sure we check the constants in all cases.

gcc/
2017-10-14  Claudiu Zissulescu  <claziss@synopsys.com>

	* config/arc/arc.c (arc_legitimate_constant_p): Always check all
	constants.

testsuite/
2017-10-14  Claudiu Zissulescu  <claziss@synopsys.com>

	* gcc.target/arc/tls-1.c: New test.
---
 gcc/config/arc/arc.c                 |  6 ------
 gcc/testsuite/gcc.target/arc/tls-1.c | 26 ++++++++++++++++++++++++++
 2 files changed, 26 insertions(+), 6 deletions(-)
 create mode 100644 gcc/testsuite/gcc.target/arc/tls-1.c

Comments

Andrew Burgess Dec. 7, 2017, 11:30 p.m. UTC | #1
* Claudiu Zissulescu <Claudiu.Zissulescu@synopsys.com> [2017-11-27 12:09:55 +0100]:

> From: Claudiu Zissulescu <claziss@gmail.com>
> 
> Make sure we check the constants in all cases.
> 
> gcc/
> 2017-10-14  Claudiu Zissulescu  <claziss@synopsys.com>
> 
> 	* config/arc/arc.c (arc_legitimate_constant_p): Always check all
> 	constants.
> 
> testsuite/
> 2017-10-14  Claudiu Zissulescu  <claziss@synopsys.com>
> 
> 	* gcc.target/arc/tls-1.c: New test.

Looks good.

Thanks,
Andrew


> ---
>  gcc/config/arc/arc.c                 |  6 ------
>  gcc/testsuite/gcc.target/arc/tls-1.c | 26 ++++++++++++++++++++++++++
>  2 files changed, 26 insertions(+), 6 deletions(-)
>  create mode 100644 gcc/testsuite/gcc.target/arc/tls-1.c
> 
> diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c
> index 4d7a282..42ea921 100644
> --- a/gcc/config/arc/arc.c
> +++ b/gcc/config/arc/arc.c
> @@ -6185,12 +6185,6 @@ arc_return_addr_rtx (int count, ATTRIBUTE_UNUSED rtx frame)
>  bool
>  arc_legitimate_constant_p (machine_mode mode, rtx x)
>  {
> -  if (GET_CODE (x) == SYMBOL_REF && SYMBOL_REF_TLS_MODEL (x))
> -    return false;
> -
> -  if (!flag_pic && mode != Pmode)
> -    return true;
> -
>    switch (GET_CODE (x))
>      {
>      case CONST:
> diff --git a/gcc/testsuite/gcc.target/arc/tls-1.c b/gcc/testsuite/gcc.target/arc/tls-1.c
> new file mode 100644
> index 0000000..3f7a6d4
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/arc/tls-1.c
> @@ -0,0 +1,26 @@
> +/* { dg-do compile } */
> +/* { dg-require-effective-target tls } */
> +/* { dg-options "-O3 -std=gnu99" } */
> +
> +/* Check if addressing the `pos` member of struct is done via tls
> +   mechanism.  */
> +
> +struct callchain_cursor {
> +  int last;
> +  long long pos;
> +} __thread a;
> +void fn1(struct callchain_cursor *p1)
> +{
> +  p1->pos++;
> +}
> +
> +extern void fn3 (void);
> +
> +void fn2(void) {
> +  struct callchain_cursor *b = &a;
> +  while (1) {
> +    fn3();
> +    fn1(b);
> +  }
> +}
> +/* { dg-final { scan-assembler "r25,@a@tpoff" } } */
> -- 
> 1.9.1
>
diff mbox series

Patch

diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c
index 4d7a282..42ea921 100644
--- a/gcc/config/arc/arc.c
+++ b/gcc/config/arc/arc.c
@@ -6185,12 +6185,6 @@  arc_return_addr_rtx (int count, ATTRIBUTE_UNUSED rtx frame)
 bool
 arc_legitimate_constant_p (machine_mode mode, rtx x)
 {
-  if (GET_CODE (x) == SYMBOL_REF && SYMBOL_REF_TLS_MODEL (x))
-    return false;
-
-  if (!flag_pic && mode != Pmode)
-    return true;
-
   switch (GET_CODE (x))
     {
     case CONST:
diff --git a/gcc/testsuite/gcc.target/arc/tls-1.c b/gcc/testsuite/gcc.target/arc/tls-1.c
new file mode 100644
index 0000000..3f7a6d4
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arc/tls-1.c
@@ -0,0 +1,26 @@ 
+/* { dg-do compile } */
+/* { dg-require-effective-target tls } */
+/* { dg-options "-O3 -std=gnu99" } */
+
+/* Check if addressing the `pos` member of struct is done via tls
+   mechanism.  */
+
+struct callchain_cursor {
+  int last;
+  long long pos;
+} __thread a;
+void fn1(struct callchain_cursor *p1)
+{
+  p1->pos++;
+}
+
+extern void fn3 (void);
+
+void fn2(void) {
+  struct callchain_cursor *b = &a;
+  while (1) {
+    fn3();
+    fn1(b);
+  }
+}
+/* { dg-final { scan-assembler "r25,@a@tpoff" } } */