+2014-10-24 Siva Chandra Reddy <sivachandra@google.com>
+
+ * gnu-v3-abi.c (gnuv3_pass_by_reference): Call TYPE_TARGET_TYPE
+ on the arg type of a constructor only if it is of reference type.
+
2014-10-23 Sandra Loosemore <sandra@codesourcery.com>
* nios2-tdep.c (nios2_analyze_prologue): Use new instruction field
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)
+ {
+ struct type *arg_target_type;
- if (TYPE_CODE (arg_type) == TYPE_CODE_REF
- && class_types_same_p (arg_target_type, type))
- return 1;
+ arg_target_type = check_typedef (TYPE_TARGET_TYPE (arg_type));
+ if (class_types_same_p (arg_target_type, type))
+ return 1;
+ }
}
}
+2014-10-24 Siva Chandra Reddy <sivachandra@google.com>
+
+ * gdb.cp/non-trivial-retval.cc: Add a test case.
+ * gdb.cp/non-trivial-retval.exp: Add a test.
+
2014-10-20 Yao Qi <yao@codesourcery.com>
* gdb.python/py-objfile-script-gdb.py.in: Rename it to ...
return b;
}
+class B1
+{
+public:
+ B1 () {}
+ /* This class exists to test that GDB does not trip on other
+ constructors (not copy constructors) which take one
+ argument. Hence, put this decl before the copy-ctor decl.
+ If it is put after copy-ctor decl, then the decision to mark
+ this class as non-trivial will already be made and GDB will
+ not look at this constructor. */
+ B1 (int i);
+ B1 (const B1 &obj);
+
+ int b1;
+};
+
+B1::B1 (const B1 &obj)
+{
+ b1 = obj.b1;
+}
+
+B1::B1 (int i) : b1 (i) { }
+
+B1
+f22 (int i1, int i2)
+{
+ B1 b1;
+
+ b1.b1 = i1 + i2;
+
+ return b1;
+}
+
class C
{
public:
gdb_test "p f1 (i1, i2)" ".* = {a = 123}" "p f1 (i1, i2)"
gdb_test "p f2 (i1, i2)" ".* = {b = 123}" "p f2 (i1, i2)"
+gdb_test "p f22 (i1, i2)" ".* = {b1 = 123}" "p f22 (i1, i2)"
gdb_test "p f3 (i1, i2)" ".* = {.* c = 123}" "p f3 (i1, i2)"
gdb_test "p f4 (i1, i2)" ".* = {.* e = 123}" "p f4 (i1, i2)"