Add -fno-assert flag.
authorAnthony Green <green@redhat.com>
Mon, 30 Sep 2002 14:57:43 +0000 (14:57 +0000)
committerAnthony Green <green@gcc.gnu.org>
Mon, 30 Sep 2002 14:57:43 +0000 (14:57 +0000)
From-SVN: r57649

gcc/java/ChangeLog
gcc/java/gcj.texi
gcc/java/java-tree.h
gcc/java/jv-scan.c
gcc/java/jvspec.c
gcc/java/lang.c
gcc/java/lex.c
gcc/java/parse-scan.y

index 620543a5ca2fe6fee260da8aa4e8f8ea833d5be5..0035db2a2c550f3d8016621a25eba0d1a6c0b116 100644 (file)
@@ -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.
index bb45c4b72e2af1aa5f76a0c1fcc880e861903eca..8acf3a35f915d2e979816d4482fc94c67008825e 100644 (file)
@@ -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
@@ -635,6 +640,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
index 5d76d3cbb5cd05e0c1cf68464b09e1377bf4830f..794ebc6e04e5dfced7af71d9543b649b07c880ea 100644 (file)
@@ -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.  */
 
index 2f7c3b9a6dbecf78b7955de81b2000536cd7f5e6..73eb3f4d535c442d5101e4b092ff0f36d65cad67 100644 (file)
@@ -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");
index 84b34559462d4bbce4a07a933fae861088627aea..e531f7ca5f38a5fd3f7a7b0efb5afa17dba96584 100644 (file)
@@ -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} \
index d08aca8a9daee0468f1d961a5807573bac14eadb..c6fbb44ddd8d478ba166207d9993f278121f3d5f 100644 (file)
@@ -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
index d8bcfd94e3f63728e8bf003d0cb00404a50dfcbd..d6901760d33d6e0999f38a7805268df0d5cc4402 100644 (file)
@@ -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:
index 977bbce226d77b0b3e0a24b764e9f895b8f60959..81ce627216d00cde8cb7e3fd3d24c0d7f9f63414 100644 (file)
@@ -135,6 +135,8 @@ void report PARAMS ((void));
 }
 
 %{
+extern int flag_assert;
+
 #include "lex.c"
 %}