OSDN Git Service

* tree.c (append_random_chars): Generate the random
authorwehle <wehle@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 14 Sep 2001 17:56:47 +0000 (17:56 +0000)
committerwehle <wehle@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 14 Sep 2001 17:56:47 +0000 (17:56 +0000)
characters in a reproducable fashion.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@45606 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/tree.c

index 390310d..281a4ee 100644 (file)
@@ -1,3 +1,8 @@
+Fri Sep 14 13:54:50 EDT 2001  John Wehle  (john@feith.com)
+
+       * tree.c (append_random_chars): Generate the random
+       characters in a reproducable fashion.
+
 2001-09-14  Richard Henderson  <rth@redhat.com>
 
        * config/i386/i386.c (internal_label_prefix): New.
index d3db289..14d4807 100644 (file)
@@ -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;