From: Thomas Schwinge Date: Fri, 2 Mar 2018 08:40:04 +0000 (+0100) Subject: [nvptx] Add support for CUDA 9 X-Git-Tag: releases/gcc-6.5.0~492 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=05ee440e2052158c474261e8be29aacb77f5b34a;p=thirdparty%2Fgcc.git [nvptx] Add support for CUDA 9 Backport trunk r256891: gcc/ 2018-01-19 Cesar Philippidis PR target/83790 * config/nvptx/nvptx.c (output_init_frag): Don't use generic address spaces for function labels. gcc/testsuite/ 2018-01-19 Cesar Philippidis PR target/83790 * gcc.target/nvptx/indirect_call.c: New test. From-SVN: r258127 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index cebcf8500bd1..23296f274122 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2017-03-02 Thomas Schwinge + + Backport from trunk r256891: + 2018-01-19 Cesar Philippidis + + PR target/83790 + * config/nvptx/nvptx.c (output_init_frag): Don't use generic address + spaces for function labels. + 2018-02-21 Sudakshina Das Backport from trunk diff --git a/gcc/config/nvptx/nvptx.c b/gcc/config/nvptx/nvptx.c index 2262005ae7a0..16e80421f690 100644 --- a/gcc/config/nvptx/nvptx.c +++ b/gcc/config/nvptx/nvptx.c @@ -1483,9 +1483,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 b1abb943e576..e2c0b7a61351 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2017-03-02 Thomas Schwinge + + Backport from trunk r256891: + 2018-01-19 Cesar Philippidis + + PR target/83790 + * gcc.target/nvptx/indirect_call.c: New test. + 2018-02-28 Alan Modra * lib/prune.exp (prune_gcc_output): Match lower case "in function" 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 000000000000..5ac939e214c0 --- /dev/null +++ b/gcc/testsuite/gcc.target/nvptx/indirect_call.c @@ -0,0 +1,19 @@ +/* { dg-options "-O2" } */ +/* { dg-do run } */ + +int +f1 (int a) +{ + return a + 1; +} + +int (*f2)(int) = f1; + +int +main () +{ + if (f2 (100) != 101) + __builtin_abort(); + + return 0; +}