From: Siva Chandra Date: Tue, 9 Sep 2014 13:50:26 +0000 (-0700) Subject: Fix gnuv3_pass_by_reference to treat dynamic classes as non-trivial. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ebb8ece2ef50ba3f86e8b4ab7a22a4c7734d114b;p=binutils-gdb.git Fix gnuv3_pass_by_reference to treat dynamic classes as non-trivial. gdb/ChangeLog: * gnu-v3-abi.c (gnuv3_pass_by_reference): Treat dynamic classes as non-trivial. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index c33f6ccfa99..c4f0437606c 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2014-10-15 Siva Chandra Reddy + + * gnu-v3-abi.c (gnuv3_pass_by_reference): Treat dynamic classes + as non-trivial. + 2014-10-15 Siva Chandra Reddy PR c++/13403 diff --git a/gdb/gnu-v3-abi.c b/gdb/gnu-v3-abi.c index 558ec06ccfa..a6c6f9fd9c8 100644 --- a/gdb/gnu-v3-abi.c +++ b/gdb/gnu-v3-abi.c @@ -1281,6 +1281,11 @@ gnuv3_pass_by_reference (struct type *type) && TYPE_CODE (type) != TYPE_CODE_UNION) return 0; + /* A dynamic class has a non-trivial copy constructor. + See c++98 section 12.8 Copying class objects [class.copy]. */ + if (gnuv3_dynamic_class (type)) + return 1; + for (fieldnum = 0; fieldnum < TYPE_NFN_FIELDS (type); fieldnum++) for (fieldelem = 0; fieldelem < TYPE_FN_FIELDLIST_LENGTH (type, fieldnum); fieldelem++)