diff options
author | Jason Merrill <jason@redhat.com> | 2014-02-27 11:20:59 -0500 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2014-02-27 11:20:59 -0500 |
commit | 7fce82f5899d4a5a46e52f355518c5bd7bfa4435 (patch) | |
tree | 5ab1ae9adade40feb806801b399194d1ee043ca2 | |
parent | 1ee6eb01a98518a9db1acc52f5bc0892ecab92a5 (diff) | |
download | gcc-7fce82f5899d4a5a46e52f355518c5bd7bfa4435.zip gcc-7fce82f5899d4a5a46e52f355518c5bd7bfa4435.tar.gz gcc-7fce82f5899d4a5a46e52f355518c5bd7bfa4435.tar.bz2 |
re PR c++/60353 (Firefox build failure #3 caused by r208157)
PR c++/60353
PR c++/55877
* decl2.c (tentative_decl_linkage): Don't mess with functions that
are not yet defined.
From-SVN: r208200
-rw-r--r-- | gcc/cp/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/cp/decl2.c | 10 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/other/anon6.C | 8 |
3 files changed, 19 insertions, 6 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 1f35d2a..de06bad 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +2014-02-27 Jason Merrill <jason@redhat.com> + + PR c++/60353 + PR c++/55877 + * decl2.c (tentative_decl_linkage): Don't mess with functions that + are not yet defined. + 2014-02-26 Jason Merrill <jason@redhat.com> PR c++/60347 diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index 1afe16e..dfc532d 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -2564,7 +2564,8 @@ tentative_decl_linkage (tree decl) be handled. */; else if (vague_linkage_p (decl)) { - if (TREE_CODE (decl) == FUNCTION_DECL) + if (TREE_CODE (decl) == FUNCTION_DECL + && decl_defined_p (decl)) { DECL_EXTERNAL (decl) = 1; DECL_NOT_REALLY_EXTERN (decl) = 1; @@ -2586,11 +2587,8 @@ tentative_decl_linkage (tree decl) DECL_INTERFACE_KNOWN (decl) = 1; } } - else - { - gcc_assert (TREE_CODE (decl) == VAR_DECL); - maybe_commonize_var (decl); - } + else if (TREE_CODE (decl) == VAR_DECL) + maybe_commonize_var (decl); } } diff --git a/gcc/testsuite/g++.dg/other/anon6.C b/gcc/testsuite/g++.dg/other/anon6.C new file mode 100644 index 0000000..2fd0942 --- /dev/null +++ b/gcc/testsuite/g++.dg/other/anon6.C @@ -0,0 +1,8 @@ +// PR c++/60353 + +struct A { + A(int); +}; +typedef struct { + A format; +} B; |