re PR rtl-optimization/88870 (ICE: Segmentation fault (in df_worklist_propagate_backward))
PR rtl-optimization/88870 * dce.c (deletable_insn_p): Never delete const/pure calls that can throw if we can't alter the cfg or delete dead exceptions. (mark_insn): Don't call find_call_stack_args for such calls. * gcc.dg/pr88870.c: New test. From-SVN: r268008
This commit is contained in:
parent
404fa41fcf
commit
9556b012b7
@ -1,3 +1,10 @@
|
||||
2019-01-17 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/88870
|
||||
* dce.c (deletable_insn_p): Never delete const/pure calls that can
|
||||
throw if we can't alter the cfg or delete dead exceptions.
|
||||
(mark_insn): Don't call find_call_stack_args for such calls.
|
||||
|
||||
2019-01-17 Kewen Lin <linkw@gcc.gnu.org>
|
||||
|
||||
* doc/extend.texi: Add four new prototypes for vec_ld and seven new
|
||||
|
@ -108,7 +108,10 @@ deletable_insn_p (rtx_insn *insn, bool fast, bitmap arg_stores)
|
||||
/* We can delete dead const or pure calls as long as they do not
|
||||
infinite loop. */
|
||||
&& (RTL_CONST_OR_PURE_CALL_P (insn)
|
||||
&& !RTL_LOOPING_CONST_OR_PURE_CALL_P (insn)))
|
||||
&& !RTL_LOOPING_CONST_OR_PURE_CALL_P (insn))
|
||||
/* Don't delete calls that may throw if we cannot do so. */
|
||||
&& ((cfun->can_delete_dead_exceptions && can_alter_cfg)
|
||||
|| insn_nothrow_p (insn)))
|
||||
return find_call_stack_args (as_a <rtx_call_insn *> (insn), false,
|
||||
fast, arg_stores);
|
||||
|
||||
@ -201,7 +204,9 @@ mark_insn (rtx_insn *insn, bool fast)
|
||||
&& !df_in_progress
|
||||
&& !SIBLING_CALL_P (insn)
|
||||
&& (RTL_CONST_OR_PURE_CALL_P (insn)
|
||||
&& !RTL_LOOPING_CONST_OR_PURE_CALL_P (insn)))
|
||||
&& !RTL_LOOPING_CONST_OR_PURE_CALL_P (insn))
|
||||
&& ((cfun->can_delete_dead_exceptions && can_alter_cfg)
|
||||
|| insn_nothrow_p (insn)))
|
||||
find_call_stack_args (as_a <rtx_call_insn *> (insn), true, fast, NULL);
|
||||
}
|
||||
}
|
||||
|
@ -1,3 +1,8 @@
|
||||
2019-01-17 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/88870
|
||||
* gcc.dg/pr88870.c: New test.
|
||||
|
||||
2019-01-17 Kewen Lin <linkw@gcc.gnu.org>
|
||||
|
||||
* gcc.target/powerpc/altivec_vld_vst_addr.c: New test.
|
||||
|
23
gcc/testsuite/gcc.dg/pr88870.c
Normal file
23
gcc/testsuite/gcc.dg/pr88870.c
Normal file
@ -0,0 +1,23 @@
|
||||
/* PR rtl-optimization/88870 */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O1 -fexceptions -fnon-call-exceptions -ftrapv -fno-tree-dominator-opts" } */
|
||||
|
||||
int a, b;
|
||||
|
||||
void
|
||||
foo (int *x)
|
||||
{
|
||||
int c = 0;
|
||||
{
|
||||
int d;
|
||||
x = &c;
|
||||
for (;;)
|
||||
{
|
||||
x = &d;
|
||||
b = 0;
|
||||
d = c + 1;
|
||||
b = c = 1;
|
||||
++a;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user