From 550f100c572c857db7f7cae4339143b195de6b5a Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Wed, 29 Sep 2004 02:23:49 -0400 Subject: [PATCH] re PR middle-end/17525 (ICE in emit_move_insn (non-BLKmode arg)) PR middle-end/17525 * class.c (build_base_field): Set TYPE_MODE. From-SVN: r88270 --- gcc/cp/ChangeLog | 5 +++++ gcc/cp/class.c | 1 + gcc/testsuite/g++.dg/init/synth1.C | 17 +++++++++++++++++ 3 files changed, 23 insertions(+) create mode 100644 gcc/testsuite/g++.dg/init/synth1.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 9eed9186f84..5444a09ba63 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2004-09-28 Jason Merrill + + PR middle-end/17525 + * class.c (build_base_field): Set TYPE_MODE. + 2004-09-28 Roger Sayle PR driver/17537 diff --git a/gcc/cp/class.c b/gcc/cp/class.c index deff5731167..b3d5d969f33 100644 --- a/gcc/cp/class.c +++ b/gcc/cp/class.c @@ -3563,6 +3563,7 @@ build_base_field (record_layout_info rli, tree binfo, DECL_SIZE_UNIT (decl) = CLASSTYPE_SIZE_UNIT (basetype); DECL_ALIGN (decl) = CLASSTYPE_ALIGN (basetype); DECL_USER_ALIGN (decl) = CLASSTYPE_USER_ALIGN (basetype); + DECL_MODE (decl) = TYPE_MODE (basetype); DECL_IGNORED_P (decl) = 1; DECL_FIELD_IS_BASE (decl) = 1; diff --git a/gcc/testsuite/g++.dg/init/synth1.C b/gcc/testsuite/g++.dg/init/synth1.C new file mode 100644 index 00000000000..6c00bc0228e --- /dev/null +++ b/gcc/testsuite/g++.dg/init/synth1.C @@ -0,0 +1,17 @@ +// PR middle-end/17525 + +struct A +{ + ~A(); + int a; +}; + +struct B : public A +{ + virtual ~B(); +}; + +void run (B& b, B& b1) +{ + b1 = b; +}