mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-22 15:00:55 +08:00
re GNATS gcj/85 (Compiler optimizes away private methods when native methods might access them)
* class.c (finish_class): Emit inlined methods if any native methods exist in the class. Fixes PR gcj/85. From-SVN: r30420
This commit is contained in:
parent
467403ca55
commit
09e7d04a1b
@ -1,3 +1,8 @@
|
||||
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
|
||||
|
@ -1205,7 +1205,21 @@ finish_class ()
|
||||
{
|
||||
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; )
|
||||
{
|
||||
@ -1214,7 +1228,8 @@ finish_class ()
|
||||
/* 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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user