Hi!

install_builtin calls build_fn_decl, which sets TREE_NOTHROW by default.
In most cases I think that is desirable, but __cilkrts_rethrow apparently
conditionally throws an exception, thus marking it TREE_NOTHROW is very much
undesirable and the fact that the testcase happened to work (except for i?86
recently) must have been by pure accident (that the call was between two
instructions belonging to the right EH region?).

Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?

2014-02-08  Jakub Jelinek  <ja...@redhat.com>

        * cilk-common.c (cilk_init_builtins): Clear TREE_NOTHROW
        flag on __cilkrts_rethrow builtin.

--- gcc/cilk-common.c.jj        2014-02-06 23:06:47.000000000 +0100
+++ gcc/cilk-common.c   2014-02-07 11:11:15.253128977 +0100
@@ -285,6 +285,7 @@ cilk_init_builtins (void)
   /* __cilkrts_rethrow (struct stack_frame *);  */
   cilk_rethrow_fndecl = install_builtin ("__cilkrts_rethrow", fptr_fun, 
                                         BUILT_IN_CILK_RETHROW, false);
+  TREE_NOTHROW (cilk_rethrow_fndecl) = 0;
 
   /* __cilkrts_save_fp_ctrl_state (__cilkrts_stack_frame *);  */
   cilk_save_fp_fndecl = install_builtin ("__cilkrts_save_fp_ctrl_state", 

        Jakub

Reply via email to