From efc16503ca10bc0e934e0bace5777500e4dc757a Mon Sep 17 00:00:00 2001 From: Alexandre Oliva Date: Tue, 23 Jun 2020 06:31:18 -0300 Subject: 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. --- gcc/lto-wrapper.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'gcc/lto-wrapper.c') 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. */ -- cgit v1.1