+1999-11-05 Tom Tromey <tromey@cygnus.com>
+
+ * class.c (finish_class): Emit inlined methods if any native
+ methods exist in the class. Fixes PR gcj/85.
+
Mon Nov 1 23:42:00 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (method_header:): Issue error message for rule `type
{
tree method;
tree type_methods = TYPE_METHODS (CLASS_TO_HANDLE_TYPE (current_class));
-
+ int saw_native_method = 0;
+
+ /* Find out if we have any native methods. We use this information
+ later. */
+ for (method = type_methods;
+ method != NULL_TREE;
+ method = TREE_CHAIN (method))
+ {
+ if (METHOD_NATIVE (method))
+ {
+ saw_native_method = 1;
+ break;
+ }
+ }
+
/* Emit deferred inline methods. */
for (method = type_methods; method != NULL_TREE; )
{
/* It's a deferred inline method. Decide if we need to emit it. */
if (flag_keep_inline_functions
|| TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (method))
- || ! METHOD_PRIVATE (method))
+ || ! METHOD_PRIVATE (method)
+ || saw_native_method)
{
temporary_allocation ();
output_inline_function (method);