From: Mark Mitchell Date: Thu, 24 Apr 2003 05:54:46 +0000 (+0000) Subject: re PR c++/10471 (SegFault in build_cxx_call) X-Git-Tag: releases/gcc-3.4.0~7058 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=374ca7f74e476db1cf06296eea9ca4bce8b2264a;p=thirdparty%2Fgcc.git 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 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 13d2c54adfb1..37955beae7bf 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2003-04-23 Mark Mitchell + + PR c++/10471 + * call.c (build_cxx_call): Robustify. + 2003-04-23 Neil Booth * Make-lang.in (lex.o): Remove mbchar.h. diff --git a/gcc/cp/call.c b/gcc/cp/call.c index f7253d500034..200aae721e74 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 5a90c05cc5c6..3195c2f56a37 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2003-04-23 Mark Mitchell + + PR c++/10471 + * g++.dg/template/defarg2.C: New test. + 2003-04-23 Neil Booth * 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 000000000000..3670389c5d0d --- /dev/null +++ b/gcc/testsuite/g++.dg/template/defarg2.C @@ -0,0 +1,10 @@ +struct X { + X (); +}; + +template struct O { + struct I { + I (const X & = X()); + }; +}; +template struct O<2>;