From patchwork Mon Oct 5 10:04:23 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Thomas Schwinge X-Patchwork-Id: 526270 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 542FE140187 for ; Mon, 5 Oct 2015 21:04:59 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b=U8BuR4c0; dkim-atps=neutral DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:cc:subject:in-reply-to:references:date:message-id :mime-version:content-type; q=dns; s=default; b=G+5xBmc5gyt0Ek4F RVk1WDl91FQsfGepZwGJlZ0B1272JNQQv1PyCv7CECAcLgAM2OsqCpGtkoW26ydH LA2u6+2REPlXMup+Hu7vntYBjDYkBJLPEZKCmqCjYion1bbb8P7Jqeq3bzdaHcp6 SORBjgt9T6qfRJXC+9mDoAS5uyw= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:cc:subject:in-reply-to:references:date:message-id :mime-version:content-type; s=default; bh=+dxso+NaNSu6mWw4W6SWKK 0b6vw=; b=U8BuR4c0dkSuOSH1br3dJfmlJoVlTVK9s6nBDIBh4Uy77zoDP/AgXA 1APTvQmfOzIi1circKt85FUBW6S4ws67FIlRxWj2qSdM33sQOXhVUhL3sfYmuiQy xlhzGqFy/MLWG5cCRWC2dRSgyM4lOb705i3hsdk0p5NfHBSKZmIX0= Received: (qmail 84229 invoked by alias); 5 Oct 2015 10:04:52 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 84175 invoked by uid 89); 5 Oct 2015 10:04:51 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.3 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=ham version=3.3.2 X-HELO: relay1.mentorg.com Received: from relay1.mentorg.com (HELO relay1.mentorg.com) (192.94.38.131) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 05 Oct 2015 10:04:48 +0000 Received: from nat-ies.mentorg.com ([192.94.31.2] helo=SVR-IES-FEM-01.mgc.mentorg.com) by relay1.mentorg.com with esmtp id 1Zj2dQ-000522-Bl from Thomas_Schwinge@mentor.com ; Mon, 05 Oct 2015 03:04:44 -0700 Received: from feldtkeller.schwinge.homeip.net (137.202.0.76) by SVR-IES-FEM-01.mgc.mentorg.com (137.202.0.104) with Microsoft SMTP Server id 14.3.224.2; Mon, 5 Oct 2015 11:04:43 +0100 From: Thomas Schwinge To: Bernd Schmidt , Richard Biener , Jakub Jelinek , GCC Patches CC: Nathan Sidwell , Ilya Verbin Subject: [PR other/65021] mkoffloads -save-temps handling, and cleanup cleanup (was: lto wrapper verboseness) In-Reply-To: <87d1wzsvdt.fsf@kepler.schwinge.homeip.net> References: <55B95C2F.8020606@acm.org> <87k2rbue8g.fsf@kepler.schwinge.homeip.net> <56091529.5080008@redhat.com> <87d1wzsvdt.fsf@kepler.schwinge.homeip.net> User-Agent: Notmuch/0.9-125-g4686d11 (http://notmuchmail.org) Emacs/24.5.1 (i586-pc-linux-gnu) Date: Mon, 5 Oct 2015 12:04:23 +0200 Message-ID: <877fn1r5qw.fsf@kepler.schwinge.homeip.net> MIME-Version: 1.0 Hi! In a similar vein to the earlier patch to "Pass on the verbose flag "-v" to/in the mkoffloads", here is a patch to make the mkoffloads handle "-save-temps", and this patch also happens to address , "nvptx mkoffload doesn't clean up its temporary files". OK for trunk? commit 693388578c8b71ed0dd7ee07a4153442e92e17de Author: Thomas Schwinge Date: Mon Oct 5 11:36:51 2015 +0200 [PR other/65021] mkoffloads -save-temps handling, and cleanup cleanup gcc/ 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. --- gcc/ChangeLog | 2 +- gcc/config/i386/intelmic-mkoffload.c | 30 ++++++++++++++++++++++------- gcc/config/nvptx/mkoffload.c | 37 ++++++++++++++++++++++++++---------- gcc/lto-wrapper.c | 2 ++ 4 files changed, 53 insertions(+), 18 deletions(-) Grüße, Thomas diff --git gcc/ChangeLog gcc/ChangeLog index 0d740a2..708ac08 100644 --- gcc/ChangeLog +++ gcc/ChangeLog @@ -464,7 +464,7 @@ * 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. diff --git gcc/config/i386/intelmic-mkoffload.c gcc/config/i386/intelmic-mkoffload.c index 14f3fb3..828b415 100644 --- gcc/config/i386/intelmic-mkoffload.c +++ gcc/config/i386/intelmic-mkoffload.c @@ -45,6 +45,7 @@ const char *temp_files[MAX_NUM_TEMPS]; enum offload_abi offload_abi = OFFLOAD_ABI_UNSET; /* Delete tempfiles and exit function. */ + void tool_cleanup (bool from_signal ATTRIBUTE_UNUSED) { @@ -53,19 +54,24 @@ 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 @@ -281,6 +287,8 @@ generate_target_descr_file (const char *target_compiler) 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"); @@ -321,6 +329,8 @@ generate_target_offloadend_file (const char *target_compiler) 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"); @@ -386,6 +396,8 @@ generate_host_descr_file (const char *host_compiler) 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"); @@ -434,6 +446,8 @@ prepare_target_image (const char *target_compiler, int argc, char **argv) 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"); @@ -536,7 +550,7 @@ main (int argc, char **argv) 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"); @@ -568,6 +582,8 @@ main (int argc, char **argv) "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; } diff --git gcc/config/nvptx/mkoffload.c gcc/config/nvptx/mkoffload.c index ff538e2..ba5a138 100644 --- gcc/config/nvptx/mkoffload.c +++ gcc/config/nvptx/mkoffload.c @@ -58,26 +58,36 @@ enum offload_abi offload_abi = OFFLOAD_ABI_UNSET; /* 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 @@ -353,6 +363,8 @@ compile_native (const char *infile, const char *outfile, const char *compiler) 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) @@ -387,6 +399,9 @@ main (int argc, char **argv) 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."); @@ -461,6 +476,8 @@ main (int argc, char **argv) #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; } @@ -468,6 +485,8 @@ main (int argc, char **argv) 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"); @@ -532,7 +551,5 @@ main (int argc, char **argv) compile_native (ptx_cfile_name, outname, collect_gcc); - utils_cleanup (false); - return 0; } diff --git gcc/lto-wrapper.c gcc/lto-wrapper.c index f932758..20e67ed 100644 --- gcc/lto-wrapper.c +++ gcc/lto-wrapper.c @@ -685,6 +685,8 @@ compile_offload_image (const char *target, const char *compiler_path, 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");