diff options
author | Jason Merrill <jason@casey.cygnus.com> | 2000-03-10 19:50:09 +0000 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2000-03-10 14:50:09 -0500 |
commit | dd1ba632e78c78e10bdc5c70fa07b1946ffa9ae9 (patch) | |
tree | 11522170f443932489f0ab341701a866c7b110ce /gcc | |
parent | 8ad52449ba05e1481e381daebca6cf152ea68986 (diff) | |
download | gcc-dd1ba632e78c78e10bdc5c70fa07b1946ffa9ae9.zip gcc-dd1ba632e78c78e10bdc5c70fa07b1946ffa9ae9.tar.gz gcc-dd1ba632e78c78e10bdc5c70fa07b1946ffa9ae9.tar.bz2 |
builtins.c (expand_builtin_strlen): Make sure that we have something at the beginning of the sequence.
* builtins.c (expand_builtin_strlen): Make sure that we have something
at the beginning of the sequence.
* toplev.c (rest_of_compilation): Also set TREE_NOTHROW for
deferred inlines.
* invoke.texi (C++ Dialect Options): Document -fno-enforce-eh-specs.
From-SVN: r32473
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 10 | ||||
-rw-r--r-- | gcc/builtins.c | 2 | ||||
-rw-r--r-- | gcc/invoke.texi | 6 | ||||
-rw-r--r-- | gcc/toplev.c | 6 |
4 files changed, 24 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 57c01b2..e56848c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2000-03-10 Jason Merrill <jason@casey.cygnus.com> + + * builtins.c (expand_builtin_strlen): Make sure that we have something + at the beginning of the sequence. + + * toplev.c (rest_of_compilation): Also set TREE_NOTHROW for + deferred inlines. + + * invoke.texi (C++ Dialect Options): Document -fno-enforce-eh-specs. + 2000-03-10 Richard Henderson <rth@cygnus.com> * except.c (can_throw): Use INTVAL on a CONST_INT. diff --git a/gcc/builtins.c b/gcc/builtins.c index c75d2fb..14dddf1 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -1381,6 +1381,8 @@ expand_builtin_strlen (exp, target, mode) /* Mark the beginning of the strlen sequence so we can emit the source operand later. */ before_strlen = get_last_insn(); + if (before_strlen == NULL_RTX) + before_strlen = emit_note (0, NOTE_INSN_DELETED); /* Check the string is readable and has an end. */ if (current_function_check_memory_usage) diff --git a/gcc/invoke.texi b/gcc/invoke.texi index 3be7f72..837c48b 100644 --- a/gcc/invoke.texi +++ b/gcc/invoke.texi @@ -1064,6 +1064,12 @@ which is only used to initialize another object of the same type. Specifying this option disables that optimization, and forces g++ to call the copy constructor in all cases. +@item -fno-enforce-eh-specs +Don't check for violation of exception specifications at runtime. This +option violates the C++ standard, but may be useful for reducing code +size in production builds, much like defining @samp{NDEBUG}. The compiler +will still optimize based on the exception specifications. + @item -fexternal-templates Cause template instantiations to obey @samp{#pragma interface} and @samp{implementation}; template instances are emitted or not according diff --git a/gcc/toplev.c b/gcc/toplev.c index b1a0694..aab5c30 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -2967,6 +2967,12 @@ rest_of_compilation (decl) optimize = saved_optimize; } + current_function_nothrow = nothrow_function_p (); + if (current_function_nothrow) + /* Now we know that this can't throw; set the flag for the benefit + of other functions later in this translation unit. */ + TREE_NOTHROW (current_function_decl) = 1; + note_deferral_of_defined_inline_function (decl); TIMEVAR (integration_time, save_for_inline_nocopy (decl)); DECL_SAVED_INSNS (decl)->inlinable = inlinable; |