OSDN Git Service

* toplev.c (flag_exceptions): Default value is 2.
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 23 Oct 1997 01:29:14 +0000 (01:29 +0000)
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 23 Oct 1997 01:29:14 +0000 (01:29 +0000)
        (compile_file): If flag_exceptions still has the value 2, then
        set it to 0.

        * lex.c (lang_init): Enable flag_exceptions by default if no
        command line switch was specified.
Gross hacks to allow front-ends to override -fexceptions.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@16152 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/cp/ChangeLog.egcs
gcc/cp/lex.c
gcc/toplev.c

index 01dc831..d104b6f 100644 (file)
@@ -1,5 +1,9 @@
 Wed Oct 22 00:34:12 1997  Jeffrey A Law  (law@cygnus.com)
 
+       * toplev.c (flag_exceptions): Default value is 2.
+       (compile_file): If flag_exceptions still has the value 2, then
+       set it to 0.
+
        * rs6000.c (struct machine_function): Add pic_offset_table_rtx.
        (rs6000_save_machine_status): Save pic_offset_table_rtx.
        (rs6000_restore_machine_status: Restore pic_offset_table_rtx.
index ddefd5c..3185f28 100644 (file)
@@ -1,3 +1,8 @@
+Wed Oct 22 18:56:31 1997  Jeffrey A Law  (law@cygnus.com)
+
+       * lex.c (lang_init): Enable flag_exceptions by default if no
+       command line switch was specified.
+
 Wed Sep 10 16:39:26 1997  Jim Wilson  <wilson@cygnus.com>
 
        * Make-lang.in (LN, LN_S): New macros, use where appropriate.
index 863fe4c..3d17fa3 100644 (file)
@@ -387,6 +387,10 @@ lang_init ()
   put_back (check_newline ());
   if (flag_gnu_xref) GNU_xref_begin (input_filename);
   init_repo (input_filename);
+
+  /* See comments in toplev.c before the call to lang_init.  */
+  if (flag_exceptions == 2)
+    flag_exceptions = 1;
 }
 
 void
index 41e2c5b..9fabc8f 100644 (file)
@@ -551,7 +551,7 @@ int flag_pic;
 /* Nonzero means generate extra code for exception handling and enable
    exception handling.  */
 
-int flag_exceptions = 1;
+int flag_exceptions = 2;
 
 /* Nonzero means don't place uninitialized global data in common storage
    by default.  */
@@ -2361,10 +2361,32 @@ compile_file (name)
   input_file_stack->next = 0;
   input_file_stack->name = input_filename;
 
+  /* Gross. Gross.  lang_init is (I think) the first callback into
+     the language front end, and is thus the first opportunity to
+     have the selected language override the default value for any
+     -f option.
+
+     So the default value for flag_exceptions is 2 (uninitialized).
+     If we encounter -fno-exceptions or -fexceptions, then flag_exceptions
+     will be set to zero or one respectively.
+
+     flag_exceptions can also be set by lang_init to something other
+     than the default "uninitialized" value of 2.
+
+     After lang_init, if the value is still 2, then we default to
+     -fno-exceptions (value will be reset to zero).
+
+     When our EH mechanism is low enough overhead that we can enable
+     it by default for languages other than C++, then all this braindamage
+     will go away.  */
+  
   /* Perform language-specific initialization.
      This may set main_input_filename.  */
   lang_init ();
 
+  if (flag_exceptions == 2)
+    flag_exceptions = 0;
+     
   /* If the input doesn't start with a #line, use the input name
      as the official input file name.  */
   if (main_input_filename == 0)