aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorBryce McKinlay <bryce@waitaki.otago.ac.nz>2002-06-10 05:11:42 +0000
committerBryce McKinlay <bryce@gcc.gnu.org>2002-06-10 06:11:42 +0100
commit36d010cabfac9532fcd0bc5e52ea2b2bf941e4ba (patch)
tree99001a6d7eab93aa8b30cb236349b128c025b9d3 /gcc
parent5f555088adbd3bf7253fd5b567f44a3c11999124 (diff)
downloadgcc-36d010cabfac9532fcd0bc5e52ea2b2bf941e4ba.zip
gcc-36d010cabfac9532fcd0bc5e52ea2b2bf941e4ba.tar.gz
gcc-36d010cabfac9532fcd0bc5e52ea2b2bf941e4ba.tar.bz2
Don't use RTL inlining. Fix for PR java/6820.
* lang.c (LANG_HOOKS_POST_OPTIONS): Define. (flag_really_inline): New. (java_decode_option): Set flag_really_inline if -finline-functions is seen. (java_post_options): New function. Turn off inlining unless flag_really_inline is set. From-SVN: r54430
Diffstat (limited to 'gcc')
-rw-r--r--gcc/java/ChangeLog10
-rw-r--r--gcc/java/lang.c28
2 files changed, 38 insertions, 0 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index 7813997..a77445d 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,5 +1,15 @@
2002-06-10 Bryce McKinlay <bryce@waitaki.otago.ac.nz>
+ Don't use RTL inlining. Fix for PR java/6820.
+ * lang.c (LANG_HOOKS_POST_OPTIONS): Define.
+ (flag_really_inline): New.
+ (java_decode_option): Set flag_really_inline if -finline-functions
+ is seen.
+ (java_post_options): New function. Turn off inlining unless
+ flag_really_inline is set.
+
+2002-06-10 Bryce McKinlay <bryce@waitaki.otago.ac.nz>
+
* gjavah.c (throwable_p): Accept argument as either a classname or
signature fragment. Create null-terminated classname string for super
when calling itself recursively.
diff --git a/gcc/java/lang.c b/gcc/java/lang.c
index a0f823f..60dc67b 100644
--- a/gcc/java/lang.c
+++ b/gcc/java/lang.c
@@ -51,6 +51,8 @@ struct string_option
static const char *java_init PARAMS ((const char *));
static void java_finish PARAMS ((void));
static void java_init_options PARAMS ((void));
+static void java_post_options PARAMS ((void));
+
static int java_decode_option PARAMS ((int, char **));
static void put_decl_string PARAMS ((const char *, int));
static void put_decl_node PARAMS ((tree));
@@ -170,6 +172,10 @@ int flag_store_check = 1;
/* When non zero, print extra version information. */
static int version_flag = 0;
+/* Set non-zero if the user specified -finline-functions on the command
+ line. */
+int flag_really_inline = 0;
+
/* Table of language-dependent -f options.
STRING is the option name. VARIABLE is the address of the variable.
ON_VALUE is the value to store in VARIABLE
@@ -228,6 +234,8 @@ struct language_function GTY(())
#define LANG_HOOKS_INIT_OPTIONS java_init_options
#undef LANG_HOOKS_DECODE_OPTION
#define LANG_HOOKS_DECODE_OPTION java_decode_option
+#undef LANG_HOOKS_POST_OPTIONS
+#define LANG_HOOKS_POST_OPTIONS java_post_options
#undef LANG_HOOKS_PARSE_FILE
#define LANG_HOOKS_PARSE_FILE java_parse_file
#undef LANG_HOOKS_MARK_ADDRESSABLE
@@ -388,6 +396,14 @@ java_decode_option (argc, argv)
return 1;
}
#undef ARG
+#define ARG "-finline-functions"
+ if (strncmp (p, ARG, sizeof (ARG) - 1) == 0)
+ {
+ flag_inline_functions = 1;
+ flag_really_inline = 1;
+ return 1;
+ }
+#undef ARG
if (p[0] == '-' && p[1] == 'f')
{
@@ -763,4 +779,16 @@ java_init_options ()
flag_trapping_math = 0;
}
+/* Post-switch processing. */
+static void
+java_post_options ()
+{
+ /* Turn off RTL inliner unless -finline-functions was really specified. */
+ if (flag_really_inline == 0)
+ {
+ flag_no_inline = 1;
+ flag_inline_functions = 0;
+ }
+}
+
#include "gt-java-lang.h"