re PR rtl-optimization/70061 (ICE: SIGSEGV in delete_insn_chain() with unused label)

PR rtl-opt/70061

  * tree-outofssa.c (emit_partition_copy): Flush pending stack adjust.
  (insert_value_copy_on_edge): Likewise.

  * gcc.c-torture/compile/pr70061.c: New test.

From-SVN: r234025
This commit is contained in:
Richard Henderson 2016-03-07 03:48:57 -08:00 committed by Richard Henderson
parent 2067a8f3c2
commit 5edb985350
4 changed files with 24 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2016-03-07 Richard Henderson <rth@redhat.com>
PR rtl-opt/70061
* tree-outofssa.c (emit_partition_copy): Flush pending stack adjust.
(insert_value_copy_on_edge): Likewise.
2016-03-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* config/arm/arm_neon.h: Show error if using with soft-float ABI.

View File

@ -1,3 +1,7 @@
2016-03-07 Richard Henderson <rth@redhat.com>
* gcc.c-torture/compile/pr70061.c: New test.
2016-03-07 Richard Biener <rguenther@suse.de>
PR testsuite/70109

View File

@ -0,0 +1,10 @@
typedef int v8si __attribute__ ((vector_size (32)));
int
foo(v8si c, v8si d)
{
l0:
if (c[2])
d ^= c;
return d[3];
}

View File

@ -41,6 +41,7 @@ along with GCC; see the file COPYING3. If not see
#include "tree-ssa-ter.h"
#include "tree-ssa-coalesce.h"
#include "tree-outof-ssa.h"
#include "dojump.h"
/* FIXME: A lot of code here deals with expanding to RTL. All that code
should be in cfgexpand.c. */
@ -220,6 +221,7 @@ emit_partition_copy (rtx dest, rtx src, int unsignedsrcp, tree sizeexp)
}
else
emit_move_insn (dest, src);
do_pending_stack_adjust ();
rtx_insn *seq = get_insns ();
end_sequence ();
@ -312,6 +314,8 @@ insert_value_copy_on_edge (edge e, int dest, tree src, source_location locus)
if (x != dest_rtx)
emit_move_insn (dest_rtx, x);
do_pending_stack_adjust ();
seq = get_insns ();
end_sequence ();