diff options
author | Cesar Philippidis <cesar@codesourcery.com> | 2018-01-19 06:21:08 -0800 |
---|---|---|
committer | Cesar Philippidis <cesar@gcc.gnu.org> | 2018-01-19 06:21:08 -0800 |
commit | 6c7c47081ac481c28f31c30e8845d0337556e8a2 (patch) | |
tree | 413cc10ea07f1fa612d6450dff0cacdf804a7ea4 /gcc | |
parent | b8d090dbdce90374353fbc57efdb7875e811671f (diff) | |
download | gcc-6c7c47081ac481c28f31c30e8845d0337556e8a2.zip gcc-6c7c47081ac481c28f31c30e8845d0337556e8a2.tar.gz gcc-6c7c47081ac481c28f31c30e8845d0337556e8a2.tar.bz2 |
[nvptx] Add support for CUDA 9
PR target/83790
gcc/
* config/nvptx/nvptx.c (output_init_frag): Don't use generic address
spaces for function labels.
gcc/testsuite/
* gcc.target/nvptx/indirect_call.c: New test.
From-SVN: r256891
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/nvptx/nvptx.c | 10 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/nvptx/indirect_call.c | 19 |
4 files changed, 38 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index de74456..7aa2919 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2018-01-19 Cesar Philippidis <cesar@codesourcery.com> + + PR target/83790 + * config/nvptx/nvptx.c (output_init_frag): Don't use generic address + spaces for function labels. + 2018-01-19 Martin Liska <mliska@suse.cz> * predict.def (PRED_LOOP_EXIT): Change from 85 to 89. diff --git a/gcc/config/nvptx/nvptx.c b/gcc/config/nvptx/nvptx.c index 86fc13f..4cb87c8 100644 --- a/gcc/config/nvptx/nvptx.c +++ b/gcc/config/nvptx/nvptx.c @@ -1899,9 +1899,15 @@ output_init_frag (rtx sym) if (sym) { - fprintf (asm_out_file, "generic("); + bool function = (SYMBOL_REF_DECL (sym) + && (TREE_CODE (SYMBOL_REF_DECL (sym)) == FUNCTION_DECL)); + if (!function) + fprintf (asm_out_file, "generic("); output_address (VOIDmode, sym); - fprintf (asm_out_file, val ? ") + " : ")"); + if (!function) + fprintf (asm_out_file, ")"); + if (val) + fprintf (asm_out_file, " + "); } if (!sym || val) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4618754..f446248 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-01-19 Cesar Philippidis <cesar@codesourcery.com> + + PR target/83790 + * gcc.target/nvptx/indirect_call.c: New test. + 2018-01-19 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> * g++.dg/torture/pr83619.C: Remove dg-message. diff --git a/gcc/testsuite/gcc.target/nvptx/indirect_call.c b/gcc/testsuite/gcc.target/nvptx/indirect_call.c new file mode 100644 index 0000000..39992a7 --- /dev/null +++ b/gcc/testsuite/gcc.target/nvptx/indirect_call.c @@ -0,0 +1,19 @@ +/* { dg-options "-O2 -msoft-stack" } */ +/* { dg-do run } */ + +int +f1 (int a) +{ + return a + 1; +} + +int (*f2)(int) = f1; + +int +main () +{ + if (f2 (100) != 101) + __builtin_abort(); + + return 0; +} |