re PR middle-end/36191 (can't use complex in a eh region if non-call-exceptions is enabled)
PR c++/36191 * tree-complex.c (expand_complex_libcall): Call maybe_clean_or_replace_eh_stmt and gimple_purge_dead_eh_edges instead of passing true as 3rd argument to gsi_replace. * g++.dg/torture/pr36191.C: New test. From-SVN: r142950
This commit is contained in:
parent
67d0afe901
commit
04be6ff5a8
4 changed files with 36 additions and 5 deletions
|
@ -1,4 +1,11 @@
|
|||
2008-12-28 Uros Bizjak <ubizjak@gmail.com>
|
||||
2008-12-29 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c++/36191
|
||||
* tree-complex.c (expand_complex_libcall): Call
|
||||
maybe_clean_or_replace_eh_stmt and gimple_purge_dead_eh_edges
|
||||
instead of passing true as 3rd argument to gsi_replace.
|
||||
|
||||
2008-12-28 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR middle-end/38652
|
||||
* dse.c: Include target.h.
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2008-12-29 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c++/36191
|
||||
* g++.dg/torture/pr36191.C: New test.
|
||||
|
||||
2008-12-15 Hariharan Sandanagobalane <hariharan@picochip.com>
|
||||
|
||||
* gcc.c-torture/execute/builtins/fprintf.x: Disable test for
|
||||
|
|
16
gcc/testsuite/g++.dg/torture/pr36191.C
Normal file
16
gcc/testsuite/g++.dg/torture/pr36191.C
Normal file
|
@ -0,0 +1,16 @@
|
|||
// PR c++/36191
|
||||
// { dg-do compile }
|
||||
// { dg-options "-fnon-call-exceptions" }
|
||||
|
||||
__complex__ double
|
||||
foo (__complex__ double x, double y)
|
||||
{
|
||||
try
|
||||
{
|
||||
return x / y;
|
||||
}
|
||||
catch (char *s)
|
||||
{
|
||||
return x;
|
||||
}
|
||||
}
|
|
@ -953,10 +953,10 @@ expand_complex_libcall (gimple_stmt_iterator *gsi, tree ar, tree ai,
|
|||
enum machine_mode mode;
|
||||
enum built_in_function bcode;
|
||||
tree fn, type, lhs;
|
||||
gimple stmt;
|
||||
gimple old_stmt, stmt;
|
||||
|
||||
stmt = gsi_stmt (*gsi);
|
||||
lhs = gimple_assign_lhs (stmt);
|
||||
old_stmt = gsi_stmt (*gsi);
|
||||
lhs = gimple_assign_lhs (old_stmt);
|
||||
type = TREE_TYPE (lhs);
|
||||
|
||||
mode = TYPE_MODE (type);
|
||||
|
@ -973,7 +973,10 @@ expand_complex_libcall (gimple_stmt_iterator *gsi, tree ar, tree ai,
|
|||
stmt = gimple_build_call (fn, 4, ar, ai, br, bi);
|
||||
gimple_call_set_lhs (stmt, lhs);
|
||||
update_stmt (stmt);
|
||||
gsi_replace (gsi, stmt, true);
|
||||
gsi_replace (gsi, stmt, false);
|
||||
|
||||
if (maybe_clean_or_replace_eh_stmt (old_stmt, stmt))
|
||||
gimple_purge_dead_eh_edges (gsi_bb (*gsi));
|
||||
|
||||
if (gimple_in_ssa_p (cfun))
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue