diff options
author | Claudiu Zissulescu <claziss@synopsys.com> | 2017-12-18 16:26:35 +0100 |
---|---|---|
committer | Claudiu Zissulescu <claziss@gcc.gnu.org> | 2017-12-18 16:26:35 +0100 |
commit | 2bd36ebab737f4bd3f5d306b269ffdff22eace4f (patch) | |
tree | 3e47e4584d2c2b27eb49acb0453840881ef15123 /gcc | |
parent | 4aeba1b7659603e49b8edfc0d64aa7790d2ef3fe (diff) | |
download | gcc-2bd36ebab737f4bd3f5d306b269ffdff22eace4f.zip gcc-2bd36ebab737f4bd3f5d306b269ffdff22eace4f.tar.gz gcc-2bd36ebab737f4bd3f5d306b269ffdff22eace4f.tar.bz2 |
[ARC] Update legitimate constant hook.
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.
From-SVN: r255778
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/arc/arc.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/arc/tls-1.c | 26 |
4 files changed, 35 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 128374c..84046ff 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2017-12-18 Claudiu Zissulescu <claziss@synopsys.com> + + * config/arc/arc.c (arc_legitimate_constant_p): Always check all + constants. + 2017-12-18 Andreas Krebbel <krebbel@linux.vnet.ibm.com> PR target/83420 diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c index d1d0d72..29c2a0f 100644 --- a/gcc/config/arc/arc.c +++ b/gcc/config/arc/arc.c @@ -5999,12 +5999,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/ChangeLog b/gcc/testsuite/ChangeLog index afcdd20..844fc96 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2017-12-18 Claudiu Zissulescu <claziss@synopsys.com> + + * gcc.target/arc/tls-1.c: New test. + 2017-12-18 Richard Biener <rguenther@suse.de> PR tree-optimization/81877 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" } } */ |