aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDouglas B Rupp <rupp@gnat.com>2004-04-29 15:28:42 +0000
committerDouglas Rupp <rupp@gcc.gnu.org>2004-04-29 15:28:42 +0000
commit8fd583973e51d76536f33d0d57120bf69e43f408 (patch)
tree7cc52a06db61f0e92a9c98a34aa14fcf0072b299 /gcc
parentd935a36e27c5a15e05cabdc6b6e9b6d68538a14f (diff)
downloadgcc-8fd583973e51d76536f33d0d57120bf69e43f408.zip
gcc-8fd583973e51d76536f33d0d57120bf69e43f408.tar.gz
gcc-8fd583973e51d76536f33d0d57120bf69e43f408.tar.bz2
gcc.c (DELETE_IF_ORDINARY): New macro default definition.
* gcc.c (DELETE_IF_ORDINARY): New macro default definition. (delete_if_ordinary): Use above macro. * config/alpha/xm-vms.h (DELETE_IF_ORDINARY): New macro VMS definition. Update copyright. * doc/hostconfig.texi (DELETE_IF_ORDINARY): Document new macro. * libiberty/mkstemps.c (mkstemps) [VMS]: Remove special open option. Update copyright. From-SVN: r81290
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/config/alpha/xm-vms.h14
-rw-r--r--gcc/doc/hostconfig.texi9
-rw-r--r--gcc/gcc.c16
4 files changed, 42 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9630090..68ee9a5 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2004-04-29 Douglas B Rupp <rupp@gnat.com>
+
+ * gcc.c (DELETE_IF_ORDINARY): New macro default definition.
+ (delete_if_ordinary): Use above macro.
+ * config/alpha/xm-vms.h (DELETE_IF_ORDINARY): New macro VMS definition.
+ Update copyright.
+ * doc/hostconfig.texi (DELETE_IF_ORDINARY): Document new macro.
+
2004-04-29 Richard Earnshaw <rearnsha@arm.com>
* c-decl.c (get_parm_info): Use the correct tag keywords when
diff --git a/gcc/config/alpha/xm-vms.h b/gcc/config/alpha/xm-vms.h
index bdac52e..cf18b2f 100644
--- a/gcc/config/alpha/xm-vms.h
+++ b/gcc/config/alpha/xm-vms.h
@@ -1,5 +1,5 @@
/* Configuration for GNU C-compiler for openVMS/Alpha.
- Copyright (C) 1996, 1997, 2001 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 2001, 2004 Free Software Foundation, Inc.
Contributed by Klaus Kaempf (kkaempf@progis.de).
This file is part of GCC.
@@ -43,3 +43,15 @@ Boston, MA 02111-1307, USA. */
#define HOST_OBJECT_SUFFIX ".obj"
#define DUMPFILE_FORMAT "_%02d_"
+
+#define DELETE_IF_ORDINARY(NAME,ST,VERBOSE_FLAG) \
+do \
+ { \
+ while (stat (NAME, &ST) >= 0 && S_ISREG (ST.st_mode)) \
+ if (unlink (NAME) < 0) \
+ { \
+ if (VERBOSE_FLAG) \
+ perror_with_name (NAME); \
+ break; \
+ } \
+ } while (0)
diff --git a/gcc/doc/hostconfig.texi b/gcc/doc/hostconfig.texi
index e5387e1..c97b41b 100644
--- a/gcc/doc/hostconfig.texi
+++ b/gcc/doc/hostconfig.texi
@@ -147,6 +147,15 @@ unique to each dump file kind, e.g. @samp{rtl}.
If you do not define this macro, GCC will use @samp{.%02d.}. You should
define this macro if using the default will create an invalid file name.
+
+@item DELETE_IF_ORDINARY
+Define this macro to be a C statement (sans semicolon) that performs
+host-dependent removal of ordinary temp files in the compilation driver.
+
+If you do not define this macro, GCC will use the default version. You
+should define this macro if the default version does not reliably remove
+the temp file as, for example, on VMS which allows multiple versions
+of a file.
@end ftable
@node Host Misc
diff --git a/gcc/gcc.c b/gcc/gcc.c
index 4e4f93b..4434e79 100644
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -2245,6 +2245,17 @@ record_temp_file (const char *filename, int always_delete, int fail_delete)
/* Delete all the temporary files whose names we previously recorded. */
+#ifndef DELETE_IF_ORDINARY
+#define DELETE_IF_ORDINARY(NAME,ST,VERBOSE_FLAG) \
+do \
+ { \
+ if (stat (NAME, &ST) >= 0 && S_ISREG (ST.st_mode)) \
+ if (unlink (NAME) < 0) \
+ if (VERBOSE_FLAG) \
+ perror_with_name (NAME); \
+ } while (0)
+#endif
+
static void
delete_if_ordinary (const char *name)
{
@@ -2261,10 +2272,7 @@ delete_if_ordinary (const char *name)
if (i == 'y' || i == 'Y')
#endif /* DEBUG */
- if (stat (name, &st) >= 0 && S_ISREG (st.st_mode))
- if (unlink (name) < 0)
- if (verbose_flag)
- perror_with_name (name);
+ DELETE_IF_ORDINARY (name, st, verbose_flag);
}
static void