https://gcc.gnu.org/g:db69885eac8b90e5a61abdb4a31ab59ac65307bf
commit db69885eac8b90e5a61abdb4a31ab59ac65307bf Author: Thomas Schwinge <tho...@codesourcery.com> Date: Tue Jul 19 15:42:17 2022 +0200 driver: Forward '-lstdc++' to offloading compilation [PR101544] ..., so that users don't manually need to specify '-foffload-options=-lstdc++' in addition to '-lstdc++' (specified manually, or implicitly by the driver). Do like commit 4bcb46b3ade1796c5a57b294f5cca25f00671cac "driver: Forward '-lgfortran', '-lm' to offloading compilation". PR driver/101544 gcc/ * gcc.cc (driver_handle_option): Forward host '-lstdc++' to offloading compilation. * config/gcn/mkoffload.cc (main): Adjust. * config/nvptx/mkoffload.cc (main): Likewise. libgomp/ * testsuite/libgomp.c++/pr101544-1-O0.C: Remove '-foffload-options=-lstdc++'. * testsuite/libgomp.c++/pr101544-1.C: Likewise. * testsuite/libgomp.oacc-c++/pr101544-1.C: Likewise. (cherry picked from commit 3b36e96b575b493a21510c877b273608113108ed) Diff: --- gcc/ChangeLog.omp | 11 +++++++++++ gcc/config/gcn/mkoffload.cc | 3 ++- gcc/config/nvptx/mkoffload.cc | 3 ++- gcc/gcc.cc | 3 ++- libgomp/ChangeLog.omp | 13 ++++++++++++- libgomp/testsuite/libgomp.c++/pr101544-1-O0.C | 1 - libgomp/testsuite/libgomp.c++/pr101544-1.C | 1 - libgomp/testsuite/libgomp.oacc-c++/pr101544-1.C | 1 - 8 files changed, 29 insertions(+), 7 deletions(-) diff --git a/gcc/ChangeLog.omp b/gcc/ChangeLog.omp index d26fc33b9a09..7643b4610125 100644 --- a/gcc/ChangeLog.omp +++ b/gcc/ChangeLog.omp @@ -1,3 +1,14 @@ +2025-03-27 Thomas Schwinge <tschwi...@baylibre.com> + + Backported from trunk: + 2025-03-26 Thomas Schwinge <tho...@codesourcery.com> + + PR driver/101544 + * gcc.cc (driver_handle_option): Forward host '-lstdc++' to + offloading compilation. + * config/gcn/mkoffload.cc (main): Adjust. + * config/nvptx/mkoffload.cc (main): Likewise. + 2025-03-25 Thomas Schwinge <tschwi...@baylibre.com> Backported from trunk: diff --git a/gcc/config/gcn/mkoffload.cc b/gcc/config/gcn/mkoffload.cc index 810298a799bf..d80e15afe04f 100644 --- a/gcc/config/gcn/mkoffload.cc +++ b/gcc/config/gcn/mkoffload.cc @@ -1043,7 +1043,8 @@ main (int argc, char **argv) #undef STR /* Translate host into offloading libraries. */ else if (strcmp (argv[i], "-l_GCC_gfortran") == 0 - || strcmp (argv[i], "-l_GCC_m") == 0) + || strcmp (argv[i], "-l_GCC_m") == 0 + || strcmp (argv[i], "-l_GCC_stdc++") == 0) { /* Elide '_GCC_'. */ size_t i_dst = strlen ("-l"); diff --git a/gcc/config/nvptx/mkoffload.cc b/gcc/config/nvptx/mkoffload.cc index 19064deb622a..57ca3becdc7b 100644 --- a/gcc/config/nvptx/mkoffload.cc +++ b/gcc/config/nvptx/mkoffload.cc @@ -742,7 +742,8 @@ main (int argc, char **argv) dumppfx = argv[++i]; /* Translate host into offloading libraries. */ else if (strcmp (argv[i], "-l_GCC_gfortran") == 0 - || strcmp (argv[i], "-l_GCC_m") == 0) + || strcmp (argv[i], "-l_GCC_m") == 0 + || strcmp (argv[i], "-l_GCC_stdc++") == 0) { /* Elide '_GCC_'. */ size_t i_dst = strlen ("-l"); diff --git a/gcc/gcc.cc b/gcc/gcc.cc index 8690f15a8c9a..016f809a510f 100644 --- a/gcc/gcc.cc +++ b/gcc/gcc.cc @@ -4147,7 +4147,8 @@ forward_offload_option (size_t opt_index, const char *arg, bool validated) are injected by default in offloading compilation, and therefore not forwarded here. */ /* GCC libraries. */ - if (/* '-lgfortran' */ strcmp (arg, "gfortran") == 0 ) + if (/* '-lgfortran' */ strcmp (arg, "gfortran") == 0 + || /* '-lstdc++' */ strcmp (arg, "stdc++") == 0) save_switch (concat ("-foffload-options=-l_GCC_", arg, NULL), 0, NULL, validated, true); /* Other libraries. */ diff --git a/libgomp/ChangeLog.omp b/libgomp/ChangeLog.omp index 34f8f9f162f5..16090224caca 100644 --- a/libgomp/ChangeLog.omp +++ b/libgomp/ChangeLog.omp @@ -1,4 +1,15 @@ -2025-03-25 Thomas Schwinge <tho...@codesourcery.com> +2025-03-27 Thomas Schwinge <tschwi...@baylibre.com> + + Backported from trunk: + 2025-03-26 Thomas Schwinge <tho...@codesourcery.com> + + PR driver/101544 + * testsuite/libgomp.c++/pr101544-1-O0.C: Remove + '-foffload-options=-lstdc++'. + * testsuite/libgomp.c++/pr101544-1.C: Likewise. + * testsuite/libgomp.oacc-c++/pr101544-1.C: Likewise. + +2025-03-25 Thomas Schwinge <tschwi...@baylibre.com> Backported from trunk: 2025-03-24 Thomas Schwinge <tschwi...@baylibre.com> diff --git a/libgomp/testsuite/libgomp.c++/pr101544-1-O0.C b/libgomp/testsuite/libgomp.c++/pr101544-1-O0.C index 19a8cad23286..c8a73dcfa19f 100644 --- a/libgomp/testsuite/libgomp.c++/pr101544-1-O0.C +++ b/libgomp/testsuite/libgomp.c++/pr101544-1-O0.C @@ -1,4 +1,3 @@ -// { dg-additional-options -foffload-options=-lstdc++ } // { dg-additional-options -O0 } #include "pr101544-1.C" diff --git a/libgomp/testsuite/libgomp.c++/pr101544-1.C b/libgomp/testsuite/libgomp.c++/pr101544-1.C index 8ea70a242bc5..fcd3e970bd89 100644 --- a/libgomp/testsuite/libgomp.c++/pr101544-1.C +++ b/libgomp/testsuite/libgomp.c++/pr101544-1.C @@ -1,4 +1,3 @@ -// { dg-additional-options -foffload-options=-lstdc++ } // See also '../libgomp.oacc-c++/pr101544-1.C'. #ifndef ALWAYS_INLINE # define ALWAYS_INLINE diff --git a/libgomp/testsuite/libgomp.oacc-c++/pr101544-1.C b/libgomp/testsuite/libgomp.oacc-c++/pr101544-1.C index 004cd49353be..d4d28a611597 100644 --- a/libgomp/testsuite/libgomp.oacc-c++/pr101544-1.C +++ b/libgomp/testsuite/libgomp.oacc-c++/pr101544-1.C @@ -1,4 +1,3 @@ -// { dg-additional-options -foffload-options=-lstdc++ } // { dg-additional-options -fno-inline } for stable results regarding OpenACC 'routine'. // But actually, as none of the '#pragma acc routine' syntax is accepted, force inlining: #define ALWAYS_INLINE __attribute__((always_inline))