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);

Reply via email to