+2015-10-05 Thomas Schwinge <thomas@codesourcery.com>
+
+ PR other/65021
+ * config/i386/intelmic-mkoffload.c (mkoffload_atexit): Rename
+ function to...
+ (mkoffload_cleanup): ... this. Adjust all users.
+ (maybe_unlink): Look at save_temps and verbose flags instead of
+ debug flag.
+ (main): Parse "-save-temps" flag.
+ (generate_target_descr_file, generate_target_offloadend_file)
+ (generate_host_descr_file, prepare_target_image): Pass it on.
+ * config/nvptx/mkoffload.c (tool_cleanup): Implement.
+ (mkoffload_cleanup): New function.
+ (maybe_unlink): Look at save_temps and verbose flags instead of
+ debug flag.
+ (main): Instead of calling utils_cleanup, register atexit handler
+ for mkoffload_cleanup.
+ (main): Parse "-save-temps" flag.
+ (compile_native, main): Pass it on.
+ * lto-wrapper.c (compile_offload_image): Likewise.
+
2015-10-05 Trevor Saunders <tbsaunde+gcc@tbsaunde.org>
* gimple.h (gimple_op_ptr): Require a non const gimple *.
* config/i386/intelmic-mkoffload.c (main): Parse "-v" flag.
(generate_target_descr_file, generate_target_offloadend_file)
- (generate_host_descr_file, prepare_target_image, main): Pass it on.
+ (generate_host_descr_file, prepare_target_image): Pass it on.
* config/nvptx/mkoffload.c (main): Parse "-v" flag.
(compile_native, main): Pass it on.
* lto-wrapper.c (compile_offload_image): Likewise.
enum offload_abi offload_abi = OFFLOAD_ABI_UNSET;
/* Delete tempfiles and exit function. */
+
void
tool_cleanup (bool from_signal ATTRIBUTE_UNUSED)
{
}
static void
-mkoffload_atexit (void)
+mkoffload_cleanup (void)
{
tool_cleanup (false);
}
-/* Unlink FILE unless we are debugging. */
+/* Unlink FILE unless requested otherwise. */
+
void
maybe_unlink (const char *file)
{
- if (debug)
- notice ("[Leaving %s]\n", file);
- else
- unlink_if_ordinary (file);
+ if (!save_temps)
+ {
+ if (unlink_if_ordinary (file)
+ && errno != ENOENT)
+ fatal_error (input_location, "deleting file %s: %m", file);
+ }
+ else if (verbose)
+ fprintf (stderr, "[Leaving %s]\n", file);
}
/* Add or change the value of an environment variable, outputting the
struct obstack argv_obstack;
obstack_init (&argv_obstack);
obstack_ptr_grow (&argv_obstack, target_compiler);
+ if (save_temps)
+ obstack_ptr_grow (&argv_obstack, "-save-temps");
if (verbose)
obstack_ptr_grow (&argv_obstack, "-v");
obstack_ptr_grow (&argv_obstack, "-c");
struct obstack argv_obstack;
obstack_init (&argv_obstack);
obstack_ptr_grow (&argv_obstack, target_compiler);
+ if (save_temps)
+ obstack_ptr_grow (&argv_obstack, "-save-temps");
if (verbose)
obstack_ptr_grow (&argv_obstack, "-v");
obstack_ptr_grow (&argv_obstack, "-c");
struct obstack argv_obstack;
obstack_init (&argv_obstack);
obstack_ptr_grow (&argv_obstack, host_compiler);
+ if (save_temps)
+ obstack_ptr_grow (&argv_obstack, "-save-temps");
if (verbose)
obstack_ptr_grow (&argv_obstack, "-v");
obstack_ptr_grow (&argv_obstack, "-c");
struct obstack argv_obstack;
obstack_init (&argv_obstack);
obstack_ptr_grow (&argv_obstack, target_compiler);
+ if (save_temps)
+ obstack_ptr_grow (&argv_obstack, "-save-temps");
if (verbose)
obstack_ptr_grow (&argv_obstack, "-v");
obstack_ptr_grow (&argv_obstack, "-xlto");
gcc_init_libintl ();
diagnostic_initialize (global_dc, 0);
- if (atexit (mkoffload_atexit) != 0)
+ if (atexit (mkoffload_cleanup) != 0)
fatal_error (input_location, "atexit failed");
const char *host_compiler = getenv ("COLLECT_GCC");
"unrecognizable argument of option " STR);
}
#undef STR
+ else if (strcmp (argv[i], "-save-temps") == 0)
+ save_temps = true;
else if (strcmp (argv[i], "-v") == 0)
verbose = true;
}
/* Delete tempfiles. */
-/* Unlink a temporary file unless requested otherwise. */
+void
+tool_cleanup (bool from_signal ATTRIBUTE_UNUSED)
+{
+ if (ptx_cfile_name)
+ maybe_unlink (ptx_cfile_name);
+ if (ptx_name)
+ maybe_unlink (ptx_name);
+}
+
+static void
+mkoffload_cleanup (void)
+{
+ tool_cleanup (false);
+}
+
+/* Unlink FILE unless requested otherwise. */
void
maybe_unlink (const char *file)
{
- if (! debug)
+ if (!save_temps)
{
if (unlink_if_ordinary (file)
&& errno != ENOENT)
fatal_error (input_location, "deleting file %s: %m", file);
}
- else
+ else if (verbose)
fprintf (stderr, "[Leaving %s]\n", file);
}
-void
-tool_cleanup (bool)
-{
-}
-
/* Add or change the value of an environment variable, outputting the
change to standard error if in verbose mode. */
static void
struct obstack argv_obstack;
obstack_init (&argv_obstack);
obstack_ptr_grow (&argv_obstack, compiler);
+ if (save_temps)
+ obstack_ptr_grow (&argv_obstack, "-save-temps");
if (verbose)
obstack_ptr_grow (&argv_obstack, "-v");
switch (offload_abi)
progname = "mkoffload";
diagnostic_initialize (global_dc, 0);
+ if (atexit (mkoffload_cleanup) != 0)
+ fatal_error (input_location, "atexit failed");
+
char *collect_gcc = getenv ("COLLECT_GCC");
if (collect_gcc == NULL)
fatal_error (input_location, "COLLECT_GCC must be set.");
#undef STR
else if (strcmp (argv[i], "-fopenmp") == 0)
fopenmp = true;
+ else if (strcmp (argv[i], "-save-temps") == 0)
+ save_temps = true;
else if (strcmp (argv[i], "-v") == 0)
verbose = true;
}
struct obstack argv_obstack;
obstack_init (&argv_obstack);
obstack_ptr_grow (&argv_obstack, driver);
+ if (save_temps)
+ obstack_ptr_grow (&argv_obstack, "-save-temps");
if (verbose)
obstack_ptr_grow (&argv_obstack, "-v");
obstack_ptr_grow (&argv_obstack, "-xlto");
compile_native (ptx_cfile_name, outname, collect_gcc);
- utils_cleanup (false);
-
return 0;
}
struct obstack argv_obstack;
obstack_init (&argv_obstack);
obstack_ptr_grow (&argv_obstack, compiler);
+ if (save_temps)
+ obstack_ptr_grow (&argv_obstack, "-save-temps");
if (verbose)
obstack_ptr_grow (&argv_obstack, "-v");
obstack_ptr_grow (&argv_obstack, "-o");