diff options
author | Bingfeng Mei <bmei@broadcom.com> | 2014-07-31 08:50:50 +0000 |
---|---|---|
committer | Bingfeng Mei <meibf@gcc.gnu.org> | 2014-07-31 08:50:50 +0000 |
commit | a793528482910aca0f7c840ee5bdd5e722b0528a (patch) | |
tree | 54733b3b92816303feb98e0f57cab1c0f45bbda0 | |
parent | 3e455386cf84b081dcb00df4a27e2755cb504169 (diff) | |
download | gcc-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/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr61868.c | 9 | ||||
-rw-r--r-- | gcc/toplev.c | 20 |
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; } |