aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMark Mitchell <mark@codesourcery.com>2003-04-24 05:54:46 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>2003-04-24 05:54:46 +0000
commit374ca7f74e476db1cf06296eea9ca4bce8b2264a (patch)
tree847e439c5b9b41d97abfec677c854b5ef9a916cc /gcc
parent6ff76c365c69c190001c9a00a85f07a9869494f0 (diff)
downloadgcc-374ca7f74e476db1cf06296eea9ca4bce8b2264a.zip
gcc-374ca7f74e476db1cf06296eea9ca4bce8b2264a.tar.gz
gcc-374ca7f74e476db1cf06296eea9ca4bce8b2264a.tar.bz2
re PR c++/10471 (SegFault in build_cxx_call)
PR c++/10471 * call.c (build_cxx_call): Robustify. PR c++/10471 * g++.dg/template/defarg2.C: New test. From-SVN: r66032
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/call.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/template/defarg2.C10
4 files changed, 23 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 13d2c54..37955be 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2003-04-23 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/10471
+ * call.c (build_cxx_call): Robustify.
+
2003-04-23 Neil Booth <neil@daikokuya.co.uk>
* Make-lang.in (lex.o): Remove mbchar.h.
diff --git a/gcc/cp/call.c b/gcc/cp/call.c
index f7253d5..200aae7 100644
--- a/gcc/cp/call.c
+++ b/gcc/cp/call.c
@@ -4737,7 +4737,9 @@ build_cxx_call(tree fn, tree args, tree converted_args)
/* If this call might throw an exception, note that fact. */
fndecl = get_callee_fndecl (fn);
- if ((!fndecl || !TREE_NOTHROW (fndecl)) && at_function_scope_p ())
+ if ((!fndecl || !TREE_NOTHROW (fndecl))
+ && at_function_scope_p ()
+ && cfun)
cp_function_chain->can_throw = 1;
/* Some built-in function calls will be evaluated at compile-time in
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 5a90c05..3195c2f 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2003-04-23 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/10471
+ * g++.dg/template/defarg2.C: New test.
+
2003-04-23 Neil Booth <neil@daikokuya.co.uk>
* gcc.dg/cpp/include2.c: Update.
diff --git a/gcc/testsuite/g++.dg/template/defarg2.C b/gcc/testsuite/g++.dg/template/defarg2.C
new file mode 100644
index 0000000..3670389
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/defarg2.C
@@ -0,0 +1,10 @@
+struct X {
+ X ();
+};
+
+template <int> struct O {
+ struct I {
+ I (const X & = X());
+ };
+};
+template struct O<2>;