diff options
author | Nathan Sidwell <nathan@gcc.gnu.org> | 2016-06-01 13:41:19 +0000 |
---|---|---|
committer | Nathan Sidwell <nathan@gcc.gnu.org> | 2016-06-01 13:41:19 +0000 |
commit | 721547cd0dd19a03a9e9405cfdbd6d0870eaaf68 (patch) | |
tree | 0270e63a4aa754558715246d21d96aae3d490878 | |
parent | fa2c9034583b7fe6300e547dc67792e4eb440f48 (diff) | |
download | gcc-721547cd0dd19a03a9e9405cfdbd6d0870eaaf68.zip gcc-721547cd0dd19a03a9e9405cfdbd6d0870eaaf68.tar.gz gcc-721547cd0dd19a03a9e9405cfdbd6d0870eaaf68.tar.bz2 |
nvptx.c (nvptx_assemble_undefined_decl): Reject undefined weak.
* config/nvptx/nvptx.c (nvptx_assemble_undefined_decl): Reject
undefined weak.
testsuite/
* c-c++-common/torture/pr57945.c: Add expected PTX error.
* gcc.target/nvptx/weak.c: New.
From-SVN: r236990
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/config/nvptx/nvptx.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/c-c++-common/torture/pr57945.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/nvptx/weak.c | 9 |
5 files changed, 29 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8ab3fc6..5d10b0e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2016-06-01 Nathan Sidwell <nathan@acm.org> + + * config/nvptx/nvptx.c (nvptx_assemble_undefined_decl): Reject + undefined weak. + 2016-06-01 Richard Biener <rguenther@suse.de> PR tree-optimization/71261 @@ -109,7 +114,8 @@ 2016-05-31 Oleg Endo <olegendo@gcc.gnu.org> * config/sh/constraints.md (b): Remove constraint. - * config/sh/predicates.md (arith_reg_operand): Remove TARGET_REGISTER_P. + * config/sh/predicates.md (arith_reg_operand): Remove + TARGET_REGISTER_P. * config/sh/sh-modes.def (PDI): Remove. * config/sh/sh.c (sh_target_reg_class, sh_optimize_target_register_callee_saved): Remove functions. diff --git a/gcc/config/nvptx/nvptx.c b/gcc/config/nvptx/nvptx.c index 1bd1871..6c78699 100644 --- a/gcc/config/nvptx/nvptx.c +++ b/gcc/config/nvptx/nvptx.c @@ -1777,6 +1777,12 @@ nvptx_assemble_undefined_decl (FILE *file, const char *name, const_tree decl) if (DECL_IN_CONSTANT_POOL (decl)) return; + /* We support weak defintions, and hence have the right + ASM_WEAKEN_DECL definition. Diagnose the problem here. */ + if (DECL_WEAK (decl)) + error_at (DECL_SOURCE_LOCATION (decl), + "PTX does not support weak declarations" + " (only weak definitions)"); write_var_marker (file, false, TREE_PUBLIC (decl), name); fprintf (file, "\t.extern "); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ba28ae8..b903f402 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2016-06-01 Nathan Sidwell <nathan@acm.org> + + * c-c++-common/torture/pr57945.c: Add expected PTX error. + * gcc.target/nvptx/weak.c: New. + 2016-06-01 Richard Biener <rguenther@suse.de> PR tree-optimization/71261 diff --git a/gcc/testsuite/c-c++-common/torture/pr57945.c b/gcc/testsuite/c-c++-common/torture/pr57945.c index 0803e8f..5a5977f 100644 --- a/gcc/testsuite/c-c++-common/torture/pr57945.c +++ b/gcc/testsuite/c-c++-common/torture/pr57945.c @@ -9,3 +9,5 @@ foo (void) { return &i ? i : 0; } + +/* { dg-error "PTX does not support weak declarations" "" { target nvptx-*-* } 5 } */ diff --git a/gcc/testsuite/gcc.target/nvptx/weak.c b/gcc/testsuite/gcc.target/nvptx/weak.c new file mode 100644 index 0000000..a756b95 --- /dev/null +++ b/gcc/testsuite/gcc.target/nvptx/weak.c @@ -0,0 +1,9 @@ + +extern int __attribute__((weak)) decl; /* { dg-error "weak declarations" } */ +int __attribute__((weak)) defn; + +int Foo () +{ + return decl + defn; +} + |