aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/method.c
diff options
context:
space:
mode:
authorDodji Seketeli <dodji@redhat.com>2010-03-20 08:55:32 +0000
committerDodji Seketeli <dodji@gcc.gnu.org>2010-03-20 09:55:32 +0100
commit39bac0102c930a6d38486f5716793d531dc90302 (patch)
tree2cbb1e98a70db4f750198b5cede54daf5d4f5bcc /gcc/cp/method.c
parent4dd9ee924baa6c168c7c25d07e364d39729f4e8c (diff)
downloadgcc-39bac0102c930a6d38486f5716793d531dc90302.zip
gcc-39bac0102c930a6d38486f5716793d531dc90302.tar.gz
gcc-39bac0102c930a6d38486f5716793d531dc90302.tar.bz2
re PR c++/43375 (ICE during compiling SSE code)
Fix for PR c++/43375 gcc/cp/ChangeLog: PR c++/43375 * method.c (make_alias_for): Avoid crashing when DECL_LANG_SPECIFIC is NULL. * decl2.c (vague_linkage_p): Likewise. gcc/testsuite/g++.dg/ChangeLog: PR c++/43375 * g++.dg/abi/mangle42.C: New test. From-SVN: r157590
Diffstat (limited to 'gcc/cp/method.c')
-rw-r--r--gcc/cp/method.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/gcc/cp/method.c b/gcc/cp/method.c
index a93ad06..5ed98bc 100644
--- a/gcc/cp/method.c
+++ b/gcc/cp/method.c
@@ -221,12 +221,15 @@ make_alias_for (tree target, tree newid)
TREE_THIS_VOLATILE (alias) = TREE_THIS_VOLATILE (target);
TREE_PUBLIC (alias) = 0;
DECL_INTERFACE_KNOWN (alias) = 1;
- DECL_NOT_REALLY_EXTERN (alias) = 1;
+ if (DECL_LANG_SPECIFIC (alias))
+ {
+ DECL_NOT_REALLY_EXTERN (alias) = 1;
+ DECL_USE_TEMPLATE (alias) = 0;
+ DECL_TEMPLATE_INFO (alias) = NULL;
+ }
DECL_EXTERNAL (alias) = 0;
DECL_ARTIFICIAL (alias) = 1;
- DECL_USE_TEMPLATE (alias) = 0;
DECL_TEMPLATE_INSTANTIATED (alias) = 0;
- DECL_TEMPLATE_INFO (alias) = NULL;
if (TREE_CODE (alias) == FUNCTION_DECL)
{
DECL_SAVED_FUNCTION_DATA (alias) = NULL;