On 6/19/20 11:53 AM, Alexandre Oliva wrote:
Here's an incremental patch, on top of the one you kindly tested the
other day (thanks!), that attempts to introduce per-offload-target dump
name variation.
Could you possibly give it a spin with the offloading targets you've
got?
Done; nvptx compiled but for AMDGCN I got a compile error:
in one function 'argv_obstack' was lacking a 'cc_' prefix ('cc_argv_obstack'),
see attached patch (vs. mainline, not vs. either of your patches).
And there is an (unfixed) warning:
config/gcn/mkoffload.c:535:9: warning: unused variable 'dumpbase'
I additionally did run the test case manually → files.log for the
produced files.
Unfortunately, running the testsuite fails now with a tcl error:
ERROR: libgomp.oacc-c/../libgomp.oacc-c-c++-common/nvptx-merged-loop.c
-DACC_DEVICE_TYPE_nvidia=1 -DACC_MEM_SHARED=0 -foffload=nvptx-none -O2 : error executing
dg-final: unknown or ambiguous subcommand "set": must be args, body, class,
cmdcount, commands, complete, coroutine, default, errorstack, exists, frame, functions,
globals, hostname, level, library, loaded, locals, nameofexecutable, object, patchlevel,
procs, script, sharedlibextension, tclversion, or vars
Thanks,
Tobias
-----------------
Mentor Graphics (Deutschland) GmbH, Arnulfstraße 201, 80634 München / Germany
Registergericht München HRB 106955, Geschäftsführer: Thomas Heurung, Alexander
Walter
-rw-r--r-- 1 tburnus dem 1579 Jun 19 08:17 nvptx-merged-loop.i
-rw-r--r-- 1 tburnus dem 10273 Jun 19 08:17 nvptx-merged-loop.s
-rw-r--r-- 1 tburnus dem 6992 Jun 19 08:17 nvptx-merged-loop.o
-rw-r--r-- 1 tburnus dem 2 Jun 19 08:17 nvptx-merged-loop.res
-rw-r--r-- 1 tburnus dem 99 Jun 19 08:17 nvptx-merged-loop.lto_wrapper_args
-rw-r--r-- 1 tburnus dem 1443 Jun 19 08:17 nvptx-merged-loop.xnvptx-none.mkoffload.s
-rw-r--r-- 1 tburnus dem 1345 Jun 19 08:17 nvptx-merged-loop.xnvptx-none.mkoffload.o
-rw-r--r-- 1 tburnus dem 17060 Jun 19 08:17 nvptx-merged-loop.xnvptx-none.mkoffload.309r.mach
-rw-r--r-- 1 tburnus dem 1346 Jun 19 08:17 nvptx-merged-loop.xnvptx-none.mkoffload
-rw-r--r-- 1 tburnus dem 3002 Jun 19 08:17 nvptx-merged-loop.xnvptx-none.c
-rw-r--r-- 1 tburnus dem 3120 Jun 19 08:17 nvptx-merged-loop.xnvptx-none.i
-rw-r--r-- 1 tburnus dem 3227 Jun 19 08:17 nvptx-merged-loop.xnvptx-none.s
-rw-r--r-- 1 tburnus dem 4072 Jun 19 08:17 nvptx-merged-loop.xnvptx-none.o
-rwxr-xr-x 1 tburnus dem 17872 Jun 19 08:17 nvptx-merged-loop.exe
plus in /tmp:
-rw------- 1 tburnus dem 24 Jun 19 08:17 cctrysFw.ofldlist
-rw------- 1 tburnus dem 405 Jun 19 08:17 cclbqtZz
-rw------- 1 tburnus dem 290 Jun 19 08:17 ccKK2E3z
-rw------- 1 tburnus dem 22 Jun 19 08:17 ccEw89Sz
-rw------- 1 tburnus dem 44 Jun 19 08:17 ccFqM78R
-rw------- 1 tburnus dem 167 Jun 19 08:17 ccdiqRyS
-rw------- 1 tburnus dem 1648 Jun 19 08:17 ccjfEpIS.crtoffloadtable.o
And for AMDGCN:
-rw-r--r-- 1 tburnus dem 1517 Jun 19 08:25 nvptx-merged-loop.i
-rw-r--r-- 1 tburnus dem 10227 Jun 19 08:25 nvptx-merged-loop.s
-rw-r--r-- 1 tburnus dem 6944 Jun 19 08:25 nvptx-merged-loop.o
-rw-r--r-- 1 tburnus dem 2 Jun 19 08:25 nvptx-merged-loop.res
-rw-r--r-- 1 tburnus dem 99 Jun 19 08:25 nvptx-merged-loop.lto_wrapper_args
-rw-r--r-- 1 tburnus dem 10999 Jun 19 08:25 nvptx-merged-loop.xamdgcn-amdhsa.mkoffload.310r.mach
-rw-r--r-- 1 tburnus dem 2843 Jun 19 08:25 nvptx-merged-loop.xamdgcn-amdhsa.mkoffload.1.s
-rw-r--r-- 1 tburnus dem 2551 Jun 19 08:25 nvptx-merged-loop.xamdgcn-amdhsa.mkoffload.2.s
-rwxr-xr-x 1 tburnus dem 10248 Jun 19 08:25 nvptx-merged-loop.xamdgcn-amdhsa.mkoffload.hsaco
-rw-r--r-- 1 tburnus dem 43672 Jun 19 08:25 nvptx-merged-loop.xamdgcn-amdhsa.c
-rw-r--r-- 1 tburnus dem 67626 Jun 19 08:25 nvptx-merged-loop.xamdgcn-amdhsa.i
-rw-r--r-- 1 tburnus dem 97925 Jun 19 08:25 nvptx-merged-loop.xamdgcn-amdhsa.s
drwxr-xr-x 7 tburnus dem 12288 Jun 19 08:25 .
-rw-r--r-- 1 tburnus dem 13144 Jun 19 08:25 nvptx-merged-loop.xamdgcn-amdhsa.o
-rwxr-xr-x 1 tburnus dem 28152 Jun 19 08:25 nvptx-merged-loop.exe
diff --git a/gcc/config/gcn/mkoffload.c b/gcc/config/gcn/mkoffload.c
index 4a99d70..818e98c 100644
--- a/gcc/config/gcn/mkoffload.c
+++ b/gcc/config/gcn/mkoffload.c
@@ -41,6 +41,7 @@ static const char *gcn_s1_name;
static const char *gcn_s2_name;
static const char *gcn_o_name;
static const char *gcn_cfile_name;
+static const char *gcn_dumpbase;
enum offload_abi offload_abi = OFFLOAD_ABI_UNSET;
@@ -496,6 +497,12 @@ compile_native (const char *infile, const char *outfile, const char *compiler)
obstack_ptr_grow (&argv_obstack, "-save-temps");
if (verbose)
obstack_ptr_grow (&argv_obstack, "-v");
+ obstack_ptr_grow (&argv_obstack, "-dumpdir");
+ obstack_ptr_grow (&argv_obstack, "");
+ obstack_ptr_grow (&argv_obstack, "-dumpbase");
+ obstack_ptr_grow (&argv_obstack, gcn_dumpbase);
+ obstack_ptr_grow (&argv_obstack, "-dumpbase-ext");
+ obstack_ptr_grow (&argv_obstack, ".c");
switch (offload_abi)
{
case OFFLOAD_ABI_LP64:
@@ -525,6 +532,7 @@ main (int argc, char **argv)
FILE *out = stdout;
FILE *cfile = stdout;
const char *outname = 0;
+ char *dumpbase;
progname = "mkoffload";
diagnostic_initialize (global_dc, 0);
@@ -611,6 +619,9 @@ main (int argc, char **argv)
save_temps = true;
else if (strcmp (argv[i], "-v") == 0)
verbose = true;
+ else if (strcmp (argv[i], "-dumpbase") == 0
+ && i + 1 < argc)
+ dumppfx = argv[++i];
}
if (!(fopenacc ^ fopenmp))
fatal_error (input_location, "either -fopenacc or -fopenmp must be set");
@@ -628,11 +639,6 @@ main (int argc, char **argv)
gcc_unreachable ();
}
- gcn_s1_name = make_temp_file (".mkoffload.1.s");
- gcn_s2_name = make_temp_file (".mkoffload.2.s");
- gcn_o_name = make_temp_file (".mkoffload.hsaco");
- gcn_cfile_name = make_temp_file (".c");
-
/* Build arguments for compiler pass. */
struct obstack cc_argv_obstack;
obstack_init (&cc_argv_obstack);
@@ -656,6 +662,35 @@ main (int argc, char **argv)
obstack_ptr_grow (&cc_argv_obstack, argv[ix]);
}
+ if (!dumppfx)
+ dumppfx = outname;
+
+ const char *mko_dumpbase = concat (dumppfx, ".mkoffload", NULL);
+ const char *hsaco_dumpbase = concat (dumppfx, ".mkoffload.hsaco", NULL);
+ gcn_dumpbase = concat (dumppfx, ".c", NULL);
+
+ if (save_temps)
+ {
+ gcn_s1_name = concat (mko_dumpbase, ".1.s", NULL);
+ gcn_s2_name = concat (mko_dumpbase, ".2.s", NULL);
+ gcn_o_name = hsaco_dumpbase;
+ gcn_cfile_name = gcn_dumpbase;
+ }
+ else
+ {
+ gcn_s1_name = make_temp_file (".mkoffload.1.s");
+ gcn_s2_name = make_temp_file (".mkoffload.2.s");
+ gcn_o_name = make_temp_file (".mkoffload.hsaco");
+ gcn_cfile_name = make_temp_file (".c");
+ }
+
+ obstack_ptr_grow (&cc_argv_obstack, "-dumpdir");
+ obstack_ptr_grow (&cc_argv_obstack, "");
+ obstack_ptr_grow (&cc_argv_obstack, "-dumpbase");
+ obstack_ptr_grow (&cc_argv_obstack, mko_dumpbase);
+ obstack_ptr_grow (&cc_argv_obstack, "-dumpbase-ext");
+ obstack_ptr_grow (&cc_argv_obstack, "");
+
obstack_ptr_grow (&cc_argv_obstack, "-o");
obstack_ptr_grow (&cc_argv_obstack, gcn_s1_name);
obstack_ptr_grow (&cc_argv_obstack, NULL);
@@ -674,6 +709,13 @@ main (int argc, char **argv)
|| strncmp (argv[i], "-march", 6) == 0)
obstack_ptr_grow (&ld_argv_obstack, argv[i]);
+ obstack_ptr_grow (&cc_argv_obstack, "-dumpdir");
+ obstack_ptr_grow (&cc_argv_obstack, "");
+ obstack_ptr_grow (&cc_argv_obstack, "-dumpbase");
+ obstack_ptr_grow (&cc_argv_obstack, hsaco_dumpbase);
+ obstack_ptr_grow (&cc_argv_obstack, "-dumpbase-ext");
+ obstack_ptr_grow (&cc_argv_obstack, "");
+
obstack_ptr_grow (&ld_argv_obstack, "-o");
obstack_ptr_grow (&ld_argv_obstack, gcn_o_name);
obstack_ptr_grow (&ld_argv_obstack, NULL);