2014-07-31 Bingfeng Mei <bmei@broadcom.com>
authormeibf <meibf@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 31 Jul 2014 08:50:50 +0000 (08:50 +0000)
committermeibf <meibf@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 31 Jul 2014 08:50:50 +0000 (08:50 +0000)
PR lto/61868
* toplev.c (init_random_seed): Move piece of code never called to
set_random_seed.
(set_random_seed): see above.

* gcc.dg/pr61868.c: New test.

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

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr61868.c [new file with mode: 0644]
gcc/toplev.c

index 78cea9f..0ee4580 100644 (file)
@@ -1,3 +1,10 @@
+2014-07-31  Bingfeng Mei <bmei@broadcom.com>
+
+       PR lto/61868
+       * toplev.c (init_random_seed): Move piece of code never called to
+       set_random_seed.
+       (set_random_seed): see above.
+
 2014-07-31  Tom de Vries  <tom@codesourcery.com>
 
        * tree-ssa-loop.c (pass_tree_loop_init::execute): Remove dead code.
index 629e89e..82ec9ef 100644 (file)
@@ -1,3 +1,8 @@
+2014-07-31  Bingfeng Mei  <bmei@broadcom.com>
+
+       PR lto/61868
+       * gcc.dg/pr61868.c: New test.
+
 2014-07-30  Paolo Carlini  <paolo.carlini@oracle.com>
 
        PR c++/57397
diff --git a/gcc/testsuite/gcc.dg/pr61868.c b/gcc/testsuite/gcc.dg/pr61868.c
new file mode 100644 (file)
index 0000000..a2872a9
--- /dev/null
@@ -0,0 +1,9 @@
+/* { dg-do compile } */
+/* { dg-options "-flto -frandom-seed=0x12345" }  */
+extern int foo (int);
+int main ()
+{
+  foo (100);
+  return 0;
+}
+/* { dg-final { scan-assembler "\.gnu\.lto.*.12345" } } */
index c2d4232..98ea058 100644 (file)
@@ -282,16 +282,7 @@ init_local_tick (void)
 static void
 init_random_seed (void)
 {
-  if (flag_random_seed)
-    {
-      char *endp;
-
-      /* When the driver passed in a hex number don't crc it again */
-      random_seed = strtoul (flag_random_seed, &endp, 0);
-      if (!(endp > flag_random_seed && *endp == 0))
-        random_seed = crc32_string (0, flag_random_seed);
-    }
-  else if (!random_seed)
+  if (!random_seed)
     random_seed = local_tick ^ getpid ();  /* Old racey fallback method */
 }
 
@@ -314,6 +305,15 @@ set_random_seed (const char *val)
 {
   const char *old = flag_random_seed;
   flag_random_seed = val;
+  if (flag_random_seed)
+    {
+      char *endp;
+
+      /* When the driver passed in a hex number don't crc it again */
+      random_seed = strtoul (flag_random_seed, &endp, 0);
+      if (!(endp > flag_random_seed && *endp == 0))
+        random_seed = crc32_string (0, flag_random_seed);
+    }
   return old;
 }