aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMartin Liska <marxin@gcc.gnu.org>2015-03-19 17:35:52 +0000
committerMartin Liska <marxin@gcc.gnu.org>2015-03-19 17:35:52 +0000
commite68287df88d7afcf7f25049f45de9ae614912157 (patch)
tree8e1dc19a95064f435093c7338fbedb158000e6e5 /gcc
parent5cdd35db59ff0a28e8d62001e9042080e2323d3f (diff)
downloadgcc-e68287df88d7afcf7f25049f45de9ae614912157.zip
gcc-e68287df88d7afcf7f25049f45de9ae614912157.tar.gz
gcc-e68287df88d7afcf7f25049f45de9ae614912157.tar.bz2
re PR ipa/65465 (Internal compiler error: in build2_stIat)
Fix for PR ipa/65465. PR ipa/65465 * cgraphunit.c (cgraph_node::create_wrapper): Correctly reset all fields of cgraph_thunk_info. * g++.dg/ipa/pr65465.C: New test. From-SVN: r221518
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/cgraphunit.c3
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/g++.dg/ipa/pr65465.C10
4 files changed, 22 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d5e191a..8652701 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2015-03-19 Martin Liska <mliska@suse.cz>
+
+ PR ipa/65465
+ * cgraphunit.c (cgraph_node::create_wrapper): Correctly reset
+ all fields of cgraph_thunk_info.
+
2015-03-19 Ilya Enkovich <ilya.enkovich@intel.com>
* ipa-chkp.c (chkp_maybe_create_clone): Don't try to
diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c
index e640907..8ac92e1 100644
--- a/gcc/cgraphunit.c
+++ b/gcc/cgraphunit.c
@@ -2484,8 +2484,9 @@ cgraph_node::create_wrapper (cgraph_node *target)
/* Turn alias into thunk and expand it into GIMPLE representation. */
definition = true;
+
+ memset (&thunk, 0, sizeof (cgraph_thunk_info));
thunk.thunk_p = true;
- thunk.this_adjusting = false;
create_edge (target, NULL, count, CGRAPH_FREQ_BASE);
tree arguments = DECL_ARGUMENTS (decl);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index b625d85..92835db 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2015-03-19 Jakub Jelinek <jakub@redhat.com>
+
+ * g++.dg/ipa/pr65465.C: New test.
+
2015-03-19 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/52659
diff --git a/gcc/testsuite/g++.dg/ipa/pr65465.C b/gcc/testsuite/g++.dg/ipa/pr65465.C
new file mode 100644
index 0000000..436d88f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ipa/pr65465.C
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+struct A {};
+struct B { virtual A foo () const; };
+struct C { A foo () const; };
+struct D : virtual B { A foo () const {} };
+struct F : D { virtual int bar () const; };
+int F::bar () const { return 0; }
+A C::foo () const { return A (); }