diff options
author | Nathan Sidwell <nathan@acm.org> | 2016-05-20 19:52:50 +0000 |
---|---|---|
committer | Nathan Sidwell <nathan@gcc.gnu.org> | 2016-05-20 19:52:50 +0000 |
commit | ae578943c00e669b6b18ce2588a29efcfb74ae19 (patch) | |
tree | fa0da02b164cdefd6cd94eb6b8a95b1b946db452 | |
parent | 15c671a79ca66df5b1de70dd1a0b78414fe003ef (diff) | |
download | gcc-ae578943c00e669b6b18ce2588a29efcfb74ae19.zip gcc-ae578943c00e669b6b18ce2588a29efcfb74ae19.tar.gz gcc-ae578943c00e669b6b18ce2588a29efcfb74ae19.tar.bz2 |
nptx.c (nvptx_option_override): Only set flag_toplevel_reorder, if not explicitly specified.
* config/nvptx/nptx.c (nvptx_option_override): Only set
flag_toplevel_reorder, if not explicitly specified. Set
flag_no_common, unless explicitly specified.
testsuite/
* gcc.target/nvptx/uninit-decl.c: Force common storage, add
non-common cases.
* gcc.dg/tree-ssa/ssa-store-ccp-2.c: Add -fcommon.
From-SVN: r236532
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/nvptx/nvptx.c | 15 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/tree-ssa/ssa-store-ccp-2.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/nvptx/uninit-decl.c | 18 |
4 files changed, 36 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 32813b4..3f65d05 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2016-05-20 Nathan Sidwell <nathan@acm.org> + + * config/nvptx/nptx.c (nvptx_option_override): Only set + flag_toplevel_reorder, if not explicitly specified. Set + flag_no_common, unless explicitly specified. + 2016-05-20 David Malcolm <dmalcolm@redhat.com> * calls.c (can_implement_as_sibling_call_p): Mark param diff --git a/gcc/config/nvptx/nvptx.c b/gcc/config/nvptx/nvptx.c index d4a8f29..1bd1871 100644 --- a/gcc/config/nvptx/nvptx.c +++ b/gcc/config/nvptx/nvptx.c @@ -155,8 +155,19 @@ static void nvptx_option_override (void) { init_machine_status = nvptx_init_machine_status; - /* Gives us a predictable order, which we need especially for variables. */ - flag_toplevel_reorder = 1; + + /* Set toplevel_reorder, unless explicitly disabled. We need + reordering so that we emit necessary assembler decls of + undeclared variables. */ + if (!global_options_set.x_flag_toplevel_reorder) + flag_toplevel_reorder = 1; + + /* Set flag_no_common, unless explicitly disabled. We fake common + using .weak, and that's not entirely accurate, so avoid it + unless forced. */ + if (!global_options_set.x_flag_no_common) + flag_no_common = 1; + /* Assumes that it will see only hard registers. */ flag_var_tracking = 0; diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-store-ccp-2.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-store-ccp-2.c index cdc0420..51fc1b3 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-store-ccp-2.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-store-ccp-2.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O2 -fdump-tree-optimized" } */ +/* { dg-options "-O2 -fdump-tree-optimized -fcommon" } */ const int conststaticvariable; diff --git a/gcc/testsuite/gcc.target/nvptx/uninit-decl.c b/gcc/testsuite/gcc.target/nvptx/uninit-decl.c index 65c44f5..115d703 100644 --- a/gcc/testsuite/gcc.target/nvptx/uninit-decl.c +++ b/gcc/testsuite/gcc.target/nvptx/uninit-decl.c @@ -1,7 +1,21 @@ /* { dg-do compile } */ -int __attribute__ ((used)) common; -static int __attribute__ ((used)) local; +int __attribute__ ((common)) common; +static int local; +extern int external_decl; +int external_defn; + +int foo () +{ + return common + local + external_decl + external_defn; +} + +void bar (int i) +{ + common = local = external_decl = external_defn = i; +} /* { dg-final { scan-assembler "\[\n\r\]\[\t \]*.weak .global\[^,\n\r\]*common" } } */ /* { dg-final { scan-assembler "\[\n\r\]\[\t \]*.global\[^,\n\r\]*local" } } */ +/* { dg-final { scan-assembler "\[\n\r\]\[\t \]*.extern .global\[^,\n\r\]*external_decl" } } */ +/* { dg-final { scan-assembler "\[\n\r\]\[\t \]*.visible .global\[^,\n\r\]*external_defn" } } */ |