aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/java/ChangeLog15
-rw-r--r--gcc/java/gcj.texi14
-rw-r--r--gcc/java/java-tree.h4
-rw-r--r--gcc/java/jv-scan.c4
-rw-r--r--gcc/java/jvspec.c2
-rw-r--r--gcc/java/lang.c6
-rw-r--r--gcc/java/lex.c10
-rw-r--r--gcc/java/parse-scan.y2
8 files changed, 52 insertions, 5 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index 620543a..0035db2 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,18 @@
+2002-09-28 Anthony Green <green@redhat.com>
+
+ * gcj.texi (Invoking jv-scan): Add --no-assert documentation.
+ (Code Generation): Add -fno-assert documentation.
+ * jv-scan.c (flag_assert): New global.
+ (options): Add assert option.
+ (help): Add --no-assert documentation.
+ * parse-scan.y (flag_assert): New global.
+ * lang.c (lang_f_options): Add -fassert/-fno-assert support.
+ (flag_assert): New global.
+ * java-tree.h (flag_assert): New global.
+ * lex.c (java_lex): Obey flag_assert.
+ * jvspec.c (jvgenmain_spec): Strip -fassert/-fno-assert when
+ calling cc1.
+
2002-09-26 Andrew Haley <aph@redhat.com>
* expr.c (build_java_array_length_access): Check for null pointer.
diff --git a/gcc/java/gcj.texi b/gcc/java/gcj.texi
index bb45c4b..8acf3a3 100644
--- a/gcc/java/gcj.texi
+++ b/gcc/java/gcj.texi
@@ -428,6 +428,10 @@ using JNI, then you must use @code{-fjni}. This option causes
@command{gcj} to generate stubs which will invoke the underlying JNI
methods.
+@item -fno-assert
+Don't recognize the @code{assert} keyword. This is for compatibility
+with older versions of the language specification.
+
@item -fno-optimize-static-class-initialization
When the optimization level is greater or equal to @code{-O2},
@command{gcj} will try to optimize the way calls into the runtime are made
@@ -622,8 +626,9 @@ source file (@file{.java} file).
@ignore
@c man begin SYNOPSIS jv-scan
-jv-scan [@option{--complexity}] [@option{--encoding}=@var{name}]
- [@option{--print-main}] [@option{--list-class}] [@option{--list-filename}]
+jv-scan [@option{--no-assert}] [@option{--complexity}]
+ [@option{--encoding}=@var{name}] [@option{--print-main}]
+ [@option{--list-class}] [@option{--list-filename}]
[@option{--version}] [@option{--help}]
[@option{-o} @var{file}] @var{inputfile}@dots{}
@c man end
@@ -636,6 +641,11 @@ and the Info entries for @file{gcj} and @file{gcc}.
@c man begin OPTIONS jv-scan
@table @gcctabopt
+@item --no-assert
+Don't recognize the @code{assert} keyword, for backwards compatibility
+with older versions of the language specification.
+
+@table @gcctabopt
@item --complexity
This prints a complexity measure, related to cyclomatic complexity, for
each input file.
diff --git a/gcc/java/java-tree.h b/gcc/java/java-tree.h
index 5d76d3c..794ebc6 100644
--- a/gcc/java/java-tree.h
+++ b/gcc/java/java-tree.h
@@ -160,6 +160,10 @@ extern int flag_emit_class_files;
extern int flag_filelist_file;
+/* When nonzero, permit the use of the assert keyword. */
+
+extern int flag_assert;
+
/* When nonzero, assume all native functions are implemented with
JNI, not CNI. */
diff --git a/gcc/java/jv-scan.c b/gcc/java/jv-scan.c
index 2f7c3b9..73eb3f4 100644
--- a/gcc/java/jv-scan.c
+++ b/gcc/java/jv-scan.c
@@ -64,6 +64,7 @@ int flag_find_main = 0;
int flag_dump_class = 0;
int flag_list_filename = 0;
int flag_complexity = 0;
+int flag_assert = 1;
int pedantic = 0;
@@ -85,6 +86,8 @@ static const struct option options[] =
{ "list-class", no_argument, &flag_dump_class, 1 },
{ "encoding", required_argument, NULL, OPT_ENCODING },
{ "complexity", no_argument, &flag_complexity, 1 },
+ { "no-assert", no_argument, &flag_assert, 0 },
+ { "assert", no_argument, &flag_assert, 1 },
{ NULL, no_argument, NULL, 0 }
};
@@ -100,6 +103,7 @@ help ()
{
printf ("Usage: jv-scan [OPTION]... FILE...\n\n");
printf ("Print useful information read from Java source files.\n\n");
+ printf (" --no-assert Don't recognize the assert keyword\n");
printf (" --complexity Print cyclomatic complexity of input file\n");
printf (" --encoding NAME Specify encoding of input file\n");
printf (" --print-main Print name of class containing `main'\n");
diff --git a/gcc/java/jvspec.c b/gcc/java/jvspec.c
index 84b3455..e531f7c 100644
--- a/gcc/java/jvspec.c
+++ b/gcc/java/jvspec.c
@@ -62,7 +62,7 @@ static const char jvgenmain_spec[] =
%{v:-version} %{pg:-p} %{p}\
%{<fbounds-check} %{<fno-bounds-check}\
%{<fassume-compiled} %{<fno-assume-compiled}\
- %{<fcompile-resource*}\
+ %{<fcompile-resource*} %{<fassert} %{<fno-assert} \
%{<femit-class-file} %{<femit-class-files} %{<fencoding*}\
%{<fuse-boehm-gc} %{<fhash-synchronization} %{<fjni}\
%{<findirect-dispatch} \
diff --git a/gcc/java/lang.c b/gcc/java/lang.c
index d08aca8..c6fbb44 100644
--- a/gcc/java/lang.c
+++ b/gcc/java/lang.c
@@ -147,6 +147,9 @@ int flag_use_boehm_gc = 0;
object to its synchronization structure. */
int flag_hash_synchronization;
+/* When nonzero, permit the use of the assert keyword. */
+int flag_assert = 1;
+
/* When nonzero, assume all native functions are implemented with
JNI, not CNI. */
int flag_jni = 0;
@@ -205,7 +208,8 @@ lang_f_options[] =
{"force-classes-archive-check", &flag_force_classes_archive_check, 1},
{"optimize-static-class-initialization", &flag_optimize_sci, 1 },
{"indirect-dispatch", &flag_indirect_dispatch, 1},
- {"store-check", &flag_store_check, 1}
+ {"store-check", &flag_store_check, 1},
+ {"assert", &flag_assert, 1}
};
static const struct string_option
diff --git a/gcc/java/lex.c b/gcc/java/lex.c
index d8bcfd9..d690176 100644
--- a/gcc/java/lex.c
+++ b/gcc/java/lex.c
@@ -1604,6 +1604,15 @@ java_lex (java_lval)
SET_LVAL_NODE (null_pointer_node);
return NULL_TK;
+ case ASSERT_TK:
+ if (flag_assert)
+ {
+ BUILD_OPERATOR (kw->token);
+ return kw->token;
+ }
+ else
+ break;
+
/* Some keyword we want to retain information on the location
they where found. */
case CASE_TK:
@@ -1617,7 +1626,6 @@ java_lex (java_lval)
case CATCH_TK:
case THROW_TK:
case INSTANCEOF_TK:
- case ASSERT_TK:
BUILD_OPERATOR (kw->token);
default:
diff --git a/gcc/java/parse-scan.y b/gcc/java/parse-scan.y
index 977bbce..81ce627 100644
--- a/gcc/java/parse-scan.y
+++ b/gcc/java/parse-scan.y
@@ -135,6 +135,8 @@ void report PARAMS ((void));
}
%{
+extern int flag_assert;
+
#include "lex.c"
%}