aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2015-01-29 11:09:56 -0500
committerJason Merrill <jason@gcc.gnu.org>2015-01-29 11:09:56 -0500
commite1ef8aa9395fab0c4a01b565b74f40937eef9ba5 (patch)
tree7e74147290505d09febf9fb06950da8031bac967 /gcc/cp
parent52d285303c8fb614b39a0c0366ef7decd4bea198 (diff)
downloadgcc-e1ef8aa9395fab0c4a01b565b74f40937eef9ba5.zip
gcc-e1ef8aa9395fab0c4a01b565b74f40937eef9ba5.tar.gz
gcc-e1ef8aa9395fab0c4a01b565b74f40937eef9ba5.tar.bz2
re PR c++/64521 (ICE with -frepo)
PR c++/64521 * repo.c (repo_emit_p): It's OK for a clone to be extern at this point. From-SVN: r220251
Diffstat (limited to 'gcc/cp')
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/repo.c6
2 files changed, 11 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 743fda3..fb3e2dc 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2015-01-29 Jason Merrill <jason@redhat.com>
+
+ PR c++/64521
+ * repo.c (repo_emit_p): It's OK for a clone to be extern at this
+ point.
+
2015-01-27 Caroline Tice <cmtice@google.com>
Committing VTV Cywin/Ming patch for Patrick Wollgast
diff --git a/gcc/cp/repo.c b/gcc/cp/repo.c
index 604d667..f417e4b 100644
--- a/gcc/cp/repo.c
+++ b/gcc/cp/repo.c
@@ -302,7 +302,11 @@ repo_emit_p (tree decl)
int ret = 0;
gcc_assert (TREE_PUBLIC (decl));
gcc_assert (VAR_OR_FUNCTION_DECL_P (decl));
- gcc_assert (!DECL_REALLY_EXTERN (decl));
+ gcc_assert (!DECL_REALLY_EXTERN (decl)
+ /* A clone might not have its linkage flags updated yet
+ because we call import_export_decl before
+ maybe_clone_body. */
+ || DECL_ABSTRACT_ORIGIN (decl));
/* When not using the repository, emit everything. */
if (!flag_use_repository)