summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authormmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>2005-10-03 17:21:40 +0000
committermmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>2005-10-03 17:21:40 +0000
commit2c3e097e166474b86d5f1020b300a2a1681f5500 (patch)
treefea276bce4881692ca7bc5a18c1dab22b21c6519 /gcc
parentd7441b0dfad1f42a4343dd48dd759eee73044703 (diff)
downloadgcc-2c3e097e166474b86d5f1020b300a2a1681f5500.tar.gz
PR c++/17775
* repo.c: Include flags.h. (finish_repo): Add -frandom-seed to the arguments. PR c++/17775 * g++.dg/template/repo4.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@104898 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/repo.c12
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/template/repo4.C16
4 files changed, 38 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 0680b678cb2..6ccc3f97125 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2005-10-03 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/17775
+ * repo.c: Include flags.h.
+ (finish_repo): Add -frandom-seed to the arguments.
+
2005-10-02 Mark Mitchell <mark@codesourcery.com>
PR c++/22621
diff --git a/gcc/cp/repo.c b/gcc/cp/repo.c
index b3d327d4b00..eee3b87f8d3 100644
--- a/gcc/cp/repo.c
+++ b/gcc/cp/repo.c
@@ -36,6 +36,7 @@ Boston, MA 02110-1301, USA. */
#include "obstack.h"
#include "toplev.h"
#include "diagnostic.h"
+#include "flags.h"
static char *extract_string (char **);
static const char *get_base_filename (const char *);
@@ -239,7 +240,16 @@ finish_repo (void)
fprintf (repo_file, "D %s\n", dir);
args = getenv ("COLLECT_GCC_OPTIONS");
if (args)
- fprintf (repo_file, "A %s\n", args);
+ {
+ fprintf (repo_file, "A %s", args);
+ /* If -frandom-seed is not among the ARGS, then add the value
+ that we chose. That will ensure that the names of types from
+ anonymous namespaces will get the same mangling when this
+ file is recompiled. */
+ if (!strstr (args, "'-frandom-seed="))
+ fprintf (repo_file, " '-frandom-seed=%s'", flag_random_seed);
+ fprintf (repo_file, "\n");
+ }
for (t = pending_repo; t; t = TREE_CHAIN (t))
{
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index ea8a2a7dd5a..ecb578e1146 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2005-10-03 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/17775
+ * g++.dg/template/repo4.C: New test.
+
2005-10-03 Francois-Xavier Coudert <coudert@clipper.ens.fr>
PR libfortran/19308
diff --git a/gcc/testsuite/g++.dg/template/repo4.C b/gcc/testsuite/g++.dg/template/repo4.C
new file mode 100644
index 00000000000..bd07f9580f9
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/repo4.C
@@ -0,0 +1,16 @@
+// PR c++/17775
+// { dg-options "-frepo" }
+// { dg-final { cleanup-repo-files } }
+
+namespace {
+ struct Foo {};
+}
+
+template <typename Tp>
+void foo(Tp) {}
+
+int
+main()
+{
+ foo(Foo());
+}