[PATCH] Fix Pr90395
Richard Biener
rguenther@suse.de
Thu May 9 10:07:00 GMT 2019
Bootstrapped/tested on x86_64-unknown-linux-gnu, applied.
Richard.
2019-05-09 Richard Biener <rguenther@suse.de>
PR tree-optimization/90395
* tree-ssa-forwprop.c (pass_forwprop::execute): Do not
rewrite vector stores that throw internally.
* gcc.dg/torture/pr90395.c: New testcase.
Index: gcc/tree-ssa-forwprop.c
===================================================================
--- gcc/tree-ssa-forwprop.c (revision 271000)
+++ gcc/tree-ssa-forwprop.c (working copy)
@@ -2570,6 +2570,7 @@ pass_forwprop::execute (function *fun)
if (single_imm_use (lhs, &use_p, &use_stmt)
&& gimple_store_p (use_stmt)
&& !gimple_has_volatile_ops (use_stmt)
+ && !stmt_can_throw_internal (cfun, use_stmt)
&& is_gimple_assign (use_stmt)
&& (TREE_CODE (gimple_assign_lhs (use_stmt))
!= TARGET_MEM_REF))
Index: gcc/testsuite/gcc.dg/torture/pr90395.c
===================================================================
--- gcc/testsuite/gcc.dg/torture/pr90395.c (nonexistent)
+++ gcc/testsuite/gcc.dg/torture/pr90395.c (working copy)
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-additional-options "-fexceptions -fnon-call-exceptions" } */
+
+typedef int v16si __attribute__ ((__vector_size__ (64)));
+
+void
+rl (int uq)
+{
+ v16si qw[1];
+
+ qw[uq] = (v16si) { uq };
+}
More information about the Gcc-patches
mailing list