]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR tree-optimization/87929 (ICE in verify_gimple failed)
authorRichard Biener <rguenther@suse.de>
Thu, 8 Nov 2018 10:47:59 +0000 (10:47 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Thu, 8 Nov 2018 10:47:59 +0000 (10:47 +0000)
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

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr87929.c [new file with mode: 0644]
gcc/tree-complex.c

index 145195c21bcd1e2029906e363a35ddb949407eb4..b1a33a1097096ecabd70fab55e3a7888139a4335 100644 (file)
@@ -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.
index 773fcce06e77b166f67ec90accb38fc280a23077..f6c36f3b7a420a9fd4101e52f73e776370ea71c1 100644 (file)
@@ -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 (file)
index 0000000..f64f7ad
--- /dev/null
@@ -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();
+}
index 49088081bb09bb6d994b1812134a1e0a94f09d67..4bf644f9473bc3d197e4170cc4042a851597f445 100644 (file)
@@ -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.  */