Commit 1edfb384 by Eric Botcazou Committed by Eric Botcazou

c-ada-spec.c (is_tagged_type): Test for TYPE_METHODS on main variant.

	* c-ada-spec.c (is_tagged_type): Test for TYPE_METHODS on main variant.
	(has_nontrivial_methods): Likewise.

From-SVN: r223905
parent 255a48d6
2015-05-31 Eric Botcazou <ebotcazou@adacore.com>
* c-ada-spec.c (is_tagged_type): Test for TYPE_METHODS on main variant.
(has_nontrivial_methods): Likewise.
2015-05-25 Marek Polacek <polacek@redhat.com>
* c-ubsan.c (ubsan_instrument_shift): Use type0.
......
......@@ -960,6 +960,9 @@ is_tagged_type (const_tree type)
if (!type || !RECORD_OR_UNION_TYPE_P (type))
return false;
/* TYPE_METHODS is only set on the main variant. */
type = TYPE_MAIN_VARIANT (type);
for (tmp = TYPE_METHODS (type); tmp; tmp = TREE_CHAIN (tmp))
if (TREE_CODE (tmp) == FUNCTION_DECL && DECL_VINDEX (tmp))
return true;
......@@ -988,6 +991,9 @@ has_nontrivial_methods (tree type)
if (!cpp_check (type, IS_TRIVIAL))
return true;
/* TYPE_METHODS is only set on the main variant. */
type = TYPE_MAIN_VARIANT (type);
/* If there are user-defined methods, they are deemed non-trivial. */
for (tmp = TYPE_METHODS (type); tmp; tmp = TREE_CHAIN (tmp))
if (!DECL_ARTIFICIAL (tmp))
......
2015-05-31 Eric Botcazou <ebotcazou@adacore.com>
* g++.dg/other/dump-ada-spec-4.C: New test.
2015-05-30 H.J. Lu <hongjiu.lu@intel.com>
* gcc.dg/alias-8.c: Fix dg-warning.
......
/* { dg-do compile } */
/* { dg-options "-fdump-ada-spec" } */
class Root {
public:
virtual void copyFrom(const Root& property) = 0;
};
class DT : Root {
virtual void copyFrom (const Root& property);
/* Although in C++ the type of argument Root is the parent type
"Root", in order to properly override this primitive in Ada
the profile of the generated function must be the derived
type "DT" */
};
/* { dg-final { scan-ada-spec "Root'Class" } } */
/* { dg-final { cleanup-ada-spec } } */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment