mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2025-01-07 20:40:23 +00:00
Fix gnuv3_pass_by_reference to lookup copy c-tors with qualified args.
Before this, a copy constructor declared as in the following snippet was not being treated as a copy constructor. class A { public: A (A &); // OK. A (const A &); // Not being treated as a copy constructor because of the // 'const' qualifier. }; gdb/ChangeLog: PR c++/13403 PR c++/15154 * gnu-v3-abi.c (gnuv3_pass_by_reference): Lookup copy constructors with qualified args.
This commit is contained in:
parent
778811d5e7
commit
82c48ac732
@ -1,3 +1,10 @@
|
||||
2014-10-15 Siva Chandra Reddy <sivachandra@google.com>
|
||||
|
||||
PR c++/13403
|
||||
PR c++/15154
|
||||
* gnu-v3-abi.c (gnuv3_pass_by_reference): Lookup copy constructors
|
||||
with qualified args.
|
||||
|
||||
2014-10-14 Joel Brobecker <brobecker@adacore.com>
|
||||
|
||||
* ada-lang.c (ada_evaluate_subexp) <BINOP_ADD>: Add handling
|
||||
|
@ -1312,11 +1312,17 @@ gnuv3_pass_by_reference (struct type *type)
|
||||
|
||||
/* If this method takes two arguments, and the second argument is
|
||||
a reference to this class, then it is a copy constructor. */
|
||||
if (TYPE_NFIELDS (fieldtype) == 2
|
||||
&& TYPE_CODE (TYPE_FIELD_TYPE (fieldtype, 1)) == TYPE_CODE_REF
|
||||
&& check_typedef (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (fieldtype,
|
||||
1))) == type)
|
||||
return 1;
|
||||
if (TYPE_NFIELDS (fieldtype) == 2)
|
||||
{
|
||||
struct type *arg_type = TYPE_FIELD_TYPE (fieldtype, 1);
|
||||
struct type *arg_target_type;
|
||||
|
||||
arg_target_type = check_typedef (TYPE_TARGET_TYPE (arg_type));
|
||||
|
||||
if (TYPE_CODE (arg_type) == TYPE_CODE_REF
|
||||
&& class_types_same_p (arg_target_type, type))
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* Even if all the constructors and destructors were artificial, one
|
||||
|
Loading…
Reference in New Issue
Block a user