diff options
author | Richard Biener <rguenther@suse.de> | 2018-11-08 10:47:59 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2018-11-08 10:47:59 +0000 |
commit | fd5c4c4c99f82fe702f4b4cc5fc2d64f461fc639 (patch) | |
tree | cc2dbdd87b7d27cd5b4d4bc0e3dccc4fc3a46a6e | |
parent | c4e7e1b9f74bb6688bc9e9f3454bc45b890d4a9d (diff) | |
download | gcc-fd5c4c4c99f82fe702f4b4cc5fc2d64f461fc639.zip gcc-fd5c4c4c99f82fe702f4b4cc5fc2d64f461fc639.tar.gz gcc-fd5c4c4c99f82fe702f4b4cc5fc2d64f461fc639.tar.bz2 |
re PR tree-optimization/87929 (ICE in verify_gimple failed)
2018-11-08 Richard Biener <rguenther@suse.de>
PR tree-optimization/87929
* tree-complex.c (expand_complex_comparison): Clean EH.
* gcc.dg/pr87929.c: New testcase.
From-SVN: r265912
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr87929.c | 16 | ||||
-rw-r--r-- | gcc/tree-complex.c | 2 |
4 files changed, 28 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 145195c..b1a33a1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2018-11-08 Richard Biener <rguenther@suse.de> + + PR tree-optimization/87929 + * tree-complex.c (expand_complex_comparison): Clean EH. + 2018-11-08 Martin Liska <mliska@suse.cz> * doc/extend.texi: Reword. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 773fcce..f6c36f3 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-11-08 Richard Biener <rguenther@suse.de> + + PR tree-optimization/87929 + * gcc.dg/pr87929.c: New testcase. + 2018-11-08 Martin Liska <mliska@suse.cz> * gcc.dg/pr87811.c: Update scanned pattern. diff --git a/gcc/testsuite/gcc.dg/pr87929.c b/gcc/testsuite/gcc.dg/pr87929.c new file mode 100644 index 0000000..f64f7ad --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr87929.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-fexceptions -fnon-call-exceptions -fsignaling-nans" } */ + +#define complex __complex__ +#define _Complex_I (1.0iF) + +extern void f2c_4d__( complex float *, complex float *); +extern void abort (void); + +void f2c_4c__(void) +{ + complex float x,ret_val; + x = 1234 + 5678 * _Complex_I; + f2c_4d__(&ret_val,&x); + if ( x != ret_val ) abort(); +} diff --git a/gcc/tree-complex.c b/gcc/tree-complex.c index 4908808..4bf644f 100644 --- a/gcc/tree-complex.c +++ b/gcc/tree-complex.c @@ -1558,6 +1558,8 @@ expand_complex_comparison (gimple_stmt_iterator *gsi, tree ar, tree ai, } update_stmt (stmt); + if (maybe_clean_eh_stmt (stmt)) + gimple_purge_dead_eh_edges (gimple_bb (stmt)); } /* Expand inline asm that sets some complex SSA_NAMEs. */ |