From af287697443400b33dbfd2297bdcf63121e7bc86 Mon Sep 17 00:00:00 2001 From: Mark Mitchell Date: Tue, 31 Aug 2004 20:29:28 +0000 Subject: hooks.c (hook_bool_void_true): New function. * hooks.c (hook_bool_void_true): New function. * hooks.h (hook_bool_void_true): Declare. * target-def.h (TARGET_CXX): Add TARGET_CXX_KEY_METHOD_MAY_BE_INLINE. * target.h (struct cxx): Add key_method_may_be_inline. * config/arm/arm.c (arm_cxx_key_method_may_be_inline): New function. (TARGET_CXX_KEY_METHOD_MAY_BE_INLINE): New macro. * config/arm/bpabi.h: Use __THUMB_INTERWORK__ instead of __THUMB_INTERWORK. * class.c (key_method): Rename to ... (determine_key_method): ... this. (finish_struct_1): Adjust accordingly. * cp-tree.h (key_method): Declare. * decl2.c (maybe_emit_vtables): Determine the key method here if it has not already been done. * g++.dg/abi/key1.C: New test. From-SVN: r86843 --- gcc/target.h | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'gcc/target.h') diff --git a/gcc/target.h b/gcc/target.h index 27e4086..57b38cf 100644 --- a/gcc/target.h +++ b/gcc/target.h @@ -516,6 +516,11 @@ struct gcc_target int (*import_export_class) (tree, int); /* Returns true if constructors and destructors return "this". */ bool (*cdtor_returns_this) (void); + /* Returns true if the key method for a class can be an inline + function, so long as it is not declared inline in the class + itself. Returning true is the behavior required by the Itanium + C++ ABI. */ + bool (*key_method_may_be_inline) (void); } cxx; /* Leave the boolean fields at the end. */ -- cgit v1.1