aboutsummaryrefslogtreecommitdiff
path: root/gcc/lto-wrapper.c
diff options
context:
space:
mode:
authorAlexandre Oliva <oliva@adacore.com>2020-06-23 06:31:18 -0300
committerAlexandre Oliva <oliva@gnu.org>2020-06-23 06:31:18 -0300
commitefc16503ca10bc0e934e0bace5777500e4dc757a (patch)
treeb4309bd1f6e06861ead3a3301c2f52c38a7bd8b9 /gcc/lto-wrapper.c
parentc98fc4eb3afeda6ad8220d0d79bc1247a92c7c65 (diff)
downloadgcc-efc16503ca10bc0e934e0bace5777500e4dc757a.zip
gcc-efc16503ca10bc0e934e0bace5777500e4dc757a.tar.gz
gcc-efc16503ca10bc0e934e0bace5777500e4dc757a.tar.bz2
handle dumpbase in offloading, adjust testsuite
Pass dumpbase on to mkoffloads and their offload-target compiler runs, using different suffixes for different offloading targets. Obey -save-temps in naming temporary files while at that. Adjust the testsuite offload dump scanning machinery to look for dump files named under the new conventions, iterating internally over all configured offload targets, or recognizing libgomp's testsuite's own iteration. for gcc/ChangeLog * collect-utils.h (dumppfx): New. * collect-utils.c (dumppfx): Likewise. * lto-wrapper.c (run_gcc): Set global dumppfx. (compile_offload_image): Pass a -dumpbase on to mkoffload. * config/nvptx/mkoffload.c (ptx_dumpbase): New. (main): Handle incoming -dumpbase. Set ptx_dumpbase. Obey save_temps. (compile_native): Pass -dumpbase et al to compiler. * config/gcn/mkoffload.c (gcn_dumpbase): New. (main): Handle incoming -dumpbase. Set gcn_dumpbase. Obey save_temps. Pass -dumpbase et al to offload target compiler. (compile_native): Pass -dumpbase et al to compiler. for gcc/testsuite/ChangeLog * lib/scanoffload.exp: New. * lib/scanoffloadrtl.exp: Load it. Replace ".o" with "" globally, and use scanoffload's scoff wrapper to fill it in. * lib/scanoffloadtree.exp: Likewise. for libgomp/ChangeLog * testsuite/lib/libgomp.exp: Load gcc lib scanoffload.exp. * testsuite/lib/libgomp-dg.exp: Drop now-obsolete -save-temps.
Diffstat (limited to 'gcc/lto-wrapper.c')
-rw-r--r--gcc/lto-wrapper.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/gcc/lto-wrapper.c b/gcc/lto-wrapper.c
index 8fbca7c..939a83a 100644
--- a/gcc/lto-wrapper.c
+++ b/gcc/lto-wrapper.c
@@ -830,6 +830,7 @@ compile_offload_image (const char *target, const char *compiler_path,
unsigned int linker_opt_count)
{
char *filename = NULL;
+ char *dumpbase;
char **argv;
char *suffix
= XALLOCAVEC (char, sizeof ("/accel//mkoffload") + strlen (target));
@@ -853,8 +854,13 @@ compile_offload_image (const char *target, const char *compiler_path,
"could not find %s in %s (consider using %<-B%>)",
suffix + 1, compiler_path);
+ dumpbase = concat (dumppfx, "x", target, NULL);
+
/* Generate temporary output file name. */
- filename = make_temp_file (".target.o");
+ if (save_temps)
+ filename = concat (dumpbase, ".o", NULL);
+ else
+ filename = make_temp_file (".target.o");
struct obstack argv_obstack;
obstack_init (&argv_obstack);
@@ -875,6 +881,9 @@ compile_offload_image (const char *target, const char *compiler_path,
compiler_opt_count);
append_diag_options (&argv_obstack, linker_opts, linker_opt_count);
+ obstack_ptr_grow (&argv_obstack, "-dumpbase");
+ obstack_ptr_grow (&argv_obstack, dumpbase);
+
/* Append options specified by -foffload last. In case of conflicting
options we expect offload compiler to choose the latest. */
append_offload_options (&argv_obstack, target, compiler_opts,
@@ -1298,7 +1307,7 @@ run_gcc (unsigned argc, char *argv[])
bool linker_output_rel = false;
bool skip_debug = false;
unsigned n_debugobj;
- const char *dumppfx = NULL, *incoming_dumppfx = NULL;
+ const char *incoming_dumppfx = dumppfx = NULL;
static char current_dir[] = { '.', DIR_SEPARATOR, '\0' };
/* Get the driver and options. */