aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason Merrill <jason@casey.cygnus.com>2000-03-10 19:50:09 +0000
committerJason Merrill <jason@gcc.gnu.org>2000-03-10 14:50:09 -0500
commitdd1ba632e78c78e10bdc5c70fa07b1946ffa9ae9 (patch)
tree11522170f443932489f0ab341701a866c7b110ce /gcc
parent8ad52449ba05e1481e381daebca6cf152ea68986 (diff)
downloadgcc-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/ChangeLog10
-rw-r--r--gcc/builtins.c2
-rw-r--r--gcc/invoke.texi6
-rw-r--r--gcc/toplev.c6
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;