diff options
author | Jason Merrill <jason@redhat.com> | 2010-02-18 20:16:28 -0500 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2010-02-18 20:16:28 -0500 |
commit | 7c08df6c1e61400c9710775bccbae4fc5215fdad (patch) | |
tree | 3b16b1a11a5a930310d0eeac72bfd6caab234848 | |
parent | 8154a826809465bfd01c61db28cfeca0af00f3c5 (diff) | |
download | gcc-7c08df6c1e61400c9710775bccbae4fc5215fdad.zip gcc-7c08df6c1e61400c9710775bccbae4fc5215fdad.tar.gz gcc-7c08df6c1e61400c9710775bccbae4fc5215fdad.tar.bz2 |
re PR c++/42837 (FAIL: g++.dg/abi/packed1.C execution test)
PR c++/42837
* class.c (create_vtable_ptr): Set DECL_PACKED if type is packed.
From-SVN: r156885
-rw-r--r-- | gcc/cp/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/cp/class.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/abi/packed1.C | 2 |
4 files changed, 9 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 3140ecf..0f41c56 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,8 @@ 2010-02-18 Jason Merrill <jason@redhat.com> + PR c++/42837 + * class.c (create_vtable_ptr): Set DECL_PACKED if type is packed. + PR c++/43108 * typeck.c (cp_build_binary_op): Adapt mixed complex/non handling from C build_binary_op. diff --git a/gcc/cp/class.c b/gcc/cp/class.c index f88914d..f7e0a93 100644 --- a/gcc/cp/class.c +++ b/gcc/cp/class.c @@ -4554,6 +4554,8 @@ create_vtable_ptr (tree t, tree* virtuals_p) DECL_ARTIFICIAL (field) = 1; DECL_FIELD_CONTEXT (field) = t; DECL_FCONTEXT (field) = t; + if (TYPE_PACKED (t)) + DECL_PACKED (field) = 1; TYPE_VFIELD (t) = field; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index cef2de6..10f8fff 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2010-02-18 Jason Merrill <jason@redhat.com> + PR c++/42837 + * g++.dg/abi/packed1.C: Add expected warning. + PR c++/43108 * g++.dg/torture/dg-torture.exp: Run c-c++-common torture tests. * gcc.dg/torture/dg-torture.exp: Likewise. diff --git a/gcc/testsuite/g++.dg/abi/packed1.C b/gcc/testsuite/g++.dg/abi/packed1.C index 4e75972..a9dce94 100644 --- a/gcc/testsuite/g++.dg/abi/packed1.C +++ b/gcc/testsuite/g++.dg/abi/packed1.C @@ -4,7 +4,7 @@ extern "C" void abort (); -struct INNER { +struct INNER { // { dg-warning "inefficient.*vptr" "" { target ia64-*-* hppa*-*-* } } virtual int foo() const { return 1; } } __attribute__ ((packed)); |