re PR c++/49260 ([C++0x] lambda-eh2.C fails execution)
authorJason Merrill <jason@redhat.com>
Wed, 22 Jun 2011 15:55:22 +0000 (11:55 -0400)
committerJason Merrill <jason@gcc.gnu.org>
Wed, 22 Jun 2011 15:55:22 +0000 (11:55 -0400)
PR c++/49260
* call.c (build_call_a): Set cp_function_chain->can_throw here.
(build_cxx_call): Not here.

From-SVN: r175296

gcc/cp/ChangeLog
gcc/cp/call.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp0x/lambda/lambda-eh2.C

index a329733f4e4d6569fa66ac9a16b96e38d76c3998..505de351dc545e45cd92be5a4117dd239e0095b8 100644 (file)
@@ -1,3 +1,9 @@
+2011-06-22  Jason Merrill  <jason@redhat.com>
+
+       PR c++/49260
+       * call.c (build_call_a): Set cp_function_chain->can_throw here.
+       (build_cxx_call): Not here.
+
 2011-06-21  Jason Merrill  <jason@redhat.com>
 
        PR c++/49172
index dd4dced8d723517dc7f5811e88530bee66148b70..cfaef7d8ec116a7da44793333ac542a7dd3a59ef 100644 (file)
@@ -352,6 +352,9 @@ build_call_a (tree function, int n, tree *argarray)
   nothrow = ((decl && TREE_NOTHROW (decl))
             || TYPE_NOTHROW_P (TREE_TYPE (TREE_TYPE (function))));
 
+  if (!nothrow && cfun && cp_function_chain)
+    cp_function_chain->can_throw = 1;
+
   if (decl && TREE_THIS_VOLATILE (decl) && cfun && cp_function_chain)
     current_function_returns_abnormally = 1;
 
@@ -6710,11 +6713,6 @@ build_cxx_call (tree fn, int nargs, tree *argarray)
 
   /* If this call might throw an exception, note that fact.  */
   fndecl = get_callee_fndecl (fn);
-  if ((!fndecl || !TREE_NOTHROW (fndecl))
-      && at_function_scope_p ()
-      && cfun
-      && cp_function_chain)
-    cp_function_chain->can_throw = 1;
 
   /* Check that arguments to builtin functions match the expectations.  */
   if (fndecl
index 75796207b6a2d22d978a8cd625bad792b789748e..ee8866f5ad4d4c2182f5181f51760e146fab4f89 100644 (file)
@@ -1,3 +1,8 @@
+2011-06-22  Jason Merrill  <jason@redhat.com>
+
+       PR c++/49260
+       * g++.dg/cpp0x/lambda/lambda-eh2.C: Change options.
+
 2011-06-22  Dmitry Plotnikov  <dplotnikov@ispras.ru>
        Dmitry Melnik  <dm@ispras.ru>
 
index 1490a250837a2fec21ebbbc1e6c0a04b548b4be4..0c94b554f86b367739c7d3ef715dd6bdd54bf9d4 100644 (file)
@@ -1,5 +1,6 @@
 // PR c++/47263
-// { dg-options -std=c++0x }
+// PR c++/49260
+// { dg-options "-std=c++0x -fno-asynchronous-unwind-tables -fno-dwarf2-cfi-asm" }
 // { dg-do run }
 
 #include <exception>