aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBingfeng Mei <bmei@broadcom.com>2014-07-31 08:50:50 +0000
committerBingfeng Mei <meibf@gcc.gnu.org>2014-07-31 08:50:50 +0000
commita793528482910aca0f7c840ee5bdd5e722b0528a (patch)
tree54733b3b92816303feb98e0f57cab1c0f45bbda0
parent3e455386cf84b081dcb00df4a27e2755cb504169 (diff)
downloadgcc-a793528482910aca0f7c840ee5bdd5e722b0528a.zip
gcc-a793528482910aca0f7c840ee5bdd5e722b0528a.tar.gz
gcc-a793528482910aca0f7c840ee5bdd5e722b0528a.tar.bz2
re PR lto/61868 (-frandom-seed always results in random_seed of 0)
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. * gcc.dg/pr61868.c: New test. From-SVN: r213321
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr61868.c9
-rw-r--r--gcc/toplev.c20
4 files changed, 31 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 78cea9f..0ee4580 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 629e89e..82ec9ef 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
index 0000000..a2872a9
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr61868.c
@@ -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" } } */
diff --git a/gcc/toplev.c b/gcc/toplev.c
index c2d4232..98ea058 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -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;
}