From fd68dbde67e4a8c062be5ec69549bdef45853def Mon Sep 17 00:00:00 2001 From: mmitchel Date: Thu, 24 Apr 2003 05:54:46 +0000 Subject: PR c++/10471 * call.c (build_cxx_call): Robustify. PR c++/10471 * g++.dg/template/defarg2.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@66032 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 5 +++++ gcc/cp/call.c | 4 +++- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/template/defarg2.C | 10 ++++++++++ 4 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/template/defarg2.C (limited to 'gcc') diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 13d2c54adfb..37955beae7b 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 f7253d50003..200aae721e7 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 5a90c05cc5c..3195c2f56a3 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 00000000000..3670389c5d0 --- /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>; -- cgit v1.2.3