Commit 27f418b8 by Jakub Jelinek Committed by Jakub Jelinek

re PR ipa/92883 (ICE in compare_values_warnv)

	PR ipa/92883
	* ipa-cp.c (propagate_vr_across_jump_function): Pass jvr rather
	than *jfunc->m_vr to intersect.  Formatting fix.

	* gcc.dg/ipa/pr92883.c: New test.

From-SVN: r279194
parent 6b24e342
2019-12-10 Jakub Jelinek <jakub@redhat.com> 2019-12-10 Jakub Jelinek <jakub@redhat.com>
PR ipa/92883
* ipa-cp.c (propagate_vr_across_jump_function): Pass jvr rather
than *jfunc->m_vr to intersect. Formatting fix.
PR middle-end/92825 PR middle-end/92825
* cfgexpand.c (add_stack_protection_conflicts): Change return type * cfgexpand.c (add_stack_protection_conflicts): Change return type
from void to bool, return true if at least one stack_vars[i].decl from void to bool, return true if at least one stack_vars[i].decl
...@@ -2369,12 +2369,10 @@ propagate_vr_across_jump_function (cgraph_edge *cs, ipa_jump_func *jfunc, ...@@ -2369,12 +2369,10 @@ propagate_vr_across_jump_function (cgraph_edge *cs, ipa_jump_func *jfunc,
value_range vr; value_range vr;
if (TREE_CODE_CLASS (operation) == tcc_unary) if (TREE_CODE_CLASS (operation) == tcc_unary)
{
ipa_vr_operation_and_type_effects (&vr, ipa_vr_operation_and_type_effects (&vr,
&src_lats->m_value_range.m_vr, &src_lats->m_value_range.m_vr,
operation, param_type, operation, param_type,
operand_type); operand_type);
}
/* A crude way to prevent unbounded number of value range updates /* A crude way to prevent unbounded number of value range updates
in SCC components. We should allow limited number of updates within in SCC components. We should allow limited number of updates within
SCC, too. */ SCC, too. */
...@@ -2400,7 +2398,7 @@ propagate_vr_across_jump_function (cgraph_edge *cs, ipa_jump_func *jfunc, ...@@ -2400,7 +2398,7 @@ propagate_vr_across_jump_function (cgraph_edge *cs, ipa_jump_func *jfunc,
NOP_EXPR, NOP_EXPR,
param_type, param_type,
jfunc->m_vr->type ())) jfunc->m_vr->type ()))
vr.intersect (*jfunc->m_vr); vr.intersect (jvr);
} }
return dest_lat->meet_with (&vr); return dest_lat->meet_with (&vr);
} }
......
2019-12-10 Jakub Jelinek <jakub@redhat.com> 2019-12-10 Jakub Jelinek <jakub@redhat.com>
PR ipa/92883
* gcc.dg/ipa/pr92883.c: New test.
PR middle-end/92825 PR middle-end/92825
* gcc.target/i386/pr92825.c: New test. * gcc.target/i386/pr92825.c: New test.
......
/* PR ipa/92883 */
/* { dg-do compile } */
/* { dg-options "-O2" } */
int a, b, c, d;
unsigned e;
void baz (void *, int);
void grault (int, unsigned long);
int foo (unsigned g) { return a / g; }
void bar (void *g) { if (b) baz (g, 5); }
static void quux (int, unsigned long);
static void qux (unsigned long g) { if (g) { d = foo (-1); quux (e, (d & 2) + g); } }
static void quux (int g, unsigned long m) { (void) g; grault (c, m); bar (""); }
void corge () { qux (e); }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment