aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/tree.c')
-rw-r--r--gcc/tree.c24
1 files changed, 13 insertions, 11 deletions
diff --git a/gcc/tree.c b/gcc/tree.c
index d3db289..14d4807 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -4533,19 +4533,21 @@ append_random_chars (template)
static unsigned HOST_WIDE_INT value;
unsigned HOST_WIDE_INT v;
-#ifdef HAVE_GETTIMEOFDAY
- struct timeval tv;
-#endif
+ if (! value)
+ {
+ struct stat st;
- template += strlen (template);
+ /* VALUE should be unique for each file and must
+ not change between compiles since this can cause
+ bootstrap comparison errors. */
-#ifdef HAVE_GETTIMEOFDAY
- /* Get some more or less random data. */
- gettimeofday (&tv, NULL);
- value += ((unsigned HOST_WIDE_INT) tv.tv_usec << 16) ^ tv.tv_sec ^ getpid ();
-#else
- value += getpid ();
-#endif
+ if (stat (main_input_filename, &st) < 0)
+ abort ();
+
+ value = st.st_dev ^ st.st_ino ^ st.st_mtime;
+ }
+
+ template += strlen (template);
v = value;