diff options
author | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-11-04 04:57:33 +0000 |
---|---|---|
committer | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-11-04 04:57:33 +0000 |
commit | 01ce8ed3b49d6a46d1db203c4c1db32a3fb67239 (patch) | |
tree | cf40e4641c23b927eab437ca1b6fad40488aed6d /gcc/java/lang.c | |
parent | 8442ba3d3822662a8351119193f7c871bef3e992 (diff) | |
download | gcc-01ce8ed3b49d6a46d1db203c4c1db32a3fb67239.tar.gz |
* lang-options.h: Mention -Wout-of-date.
* jcf-dump.c (flag_newer): New global.
* gjavah.c (flag_newer): New global.
* jcf-io.c (find_class): Only warn when flag_newer set.
* lang.c (flag_newer): New global.
(struct string_option): New declaration.
(lang_W_options): New global.
(process_option_with_no): New function.
(lang_decode_option): Use it.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@37244 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/java/lang.c')
-rw-r--r-- | gcc/java/lang.c | 96 |
1 files changed, 59 insertions, 37 deletions
diff --git a/gcc/java/lang.c b/gcc/java/lang.c index 8065fc767fe..b90abdb461e 100644 --- a/gcc/java/lang.c +++ b/gcc/java/lang.c @@ -37,10 +37,20 @@ The Free Software Foundation is independent of Sun Microsystems, Inc. */ #include "xref.h" #include "ggc.h" +struct string_option +{ + const char *string; + int *variable; + int on_value; +}; + static void put_decl_string PARAMS ((const char *, int)); static void put_decl_node PARAMS ((tree)); static void java_dummy_print PARAMS ((const char *)); static void lang_print_error PARAMS ((const char *)); +static int process_option_with_no PARAMS ((char *, + struct string_option *, + int)); #ifndef OBJECT_SUFFIX # define OBJECT_SUFFIX ".o" @@ -122,6 +132,10 @@ int flag_hash_synchronization; JNI, not CNI. */ int flag_jni = 0; +/* When non zero, warn when source file is newer than matching class + file. */ +int flag_newer = 1; + /* The encoding of the source file. */ const char *current_encoding = NULL; @@ -139,7 +153,7 @@ extern int flag_exceptions; if `-fSTRING' is seen as an option. (If `-fno-STRING' is seen as an option, the opposite value is stored.) */ -static struct { const char *string; int *variable; int on_value;} +static struct string_option lang_f_options[] = { {"emit-class-file", &flag_emit_class_files, 1}, @@ -150,6 +164,15 @@ lang_f_options[] = {"jni", &flag_jni, 1} }; +static struct string_option +lang_W_options[] = +{ + { "unsupported-jdk11", &flag_static_local_jdk1_1, 1 }, + { "redundant-modifiers", &flag_redundant, 1 }, + { "extraneous-semicolon", &flag_extraneous_semicolon, 1 }, + { "out-of-date", &flag_newer, 1 } +}; + JCF *current_jcf; /* Variable controlling how dependency tracking is enabled in @@ -162,6 +185,34 @@ static int dependency_tracking = 0; #define DEPEND_TARGET_SET 4 #define DEPEND_FILE_ALREADY_SET 8 +/* Process an option that can accept a `no-' form. + Return 1 if option found, 0 otherwise. */ +static int +process_option_with_no (p, table, table_size) + char *p; + struct string_option *table; + int table_size; +{ + int j; + + for (j = 0; j < table_size; j++) + { + if (!strcmp (p, table[j].string)) + { + *table[j].variable = table[j].on_value; + return 1; + } + if (p[0] == 'n' && p[1] == 'o' && p[2] == '-' + && ! strcmp (p+3, table[j].string)) + { + *table[j].variable = ! table[j].on_value; + return 1; + } + } + + return 0; +} + /* * process java-specific compiler command-line options * return 0, but do not complain if the option is not recognised. @@ -241,28 +292,9 @@ lang_decode_option (argc, argv) /* Some kind of -f option. P's value is the option sans `-f'. Search for it in the table of options. */ - int found = 0, j; - p += 2; - - for (j = 0; !found && j < (int) ARRAY_SIZE (lang_f_options); j++) - { - if (!strcmp (p, lang_f_options[j].string)) - { - *lang_f_options[j].variable = lang_f_options[j].on_value; - /* A goto here would be cleaner, - but breaks the vax pcc. */ - found = 1; - } - if (p[0] == 'n' && p[1] == 'o' && p[2] == '-' - && ! strcmp (p+3, lang_f_options[j].string)) - { - *lang_f_options[j].variable = ! lang_f_options[j].on_value; - found = 1; - } - } - - return found; + return process_option_with_no (p, lang_f_options, + ARRAY_SIZE (lang_f_options)); } if (strcmp (p, "-Wall") == 0) @@ -276,22 +308,12 @@ lang_decode_option (argc, argv) return 1; } - if (strcmp (p, "-Wunsupported-jdk11") == 0) - { - flag_static_local_jdk1_1 = 1; - return 1; - } - - if (strcmp (p, "-Wredundant-modifiers") == 0) - { - flag_redundant = 1; - return 1; - } - - if (strcmp (p, "-Wextraneous-semicolon") == 0) + if (p[0] == '-' && p[1] == 'W') { - flag_extraneous_semicolon = 1; - return 1; + /* Skip `-W' and see if we accept the option or its `no-' form. */ + p += 2; + return process_option_with_no (p, lang_W_options, + ARRAY_SIZE (lang_W_options)); } if (strcmp (p, "-MD") == 0) |