Commit b6a7a294 by Jakub Jelinek Committed by Jakub Jelinek

re PR rtl-optimization/85167 (shrink-wrap.c:333:15: runtime error with UBSAN)

	PR rtl-optimization/85167
	* shrink-wrap.c (move_insn_for_shrink_wrap): Don't set bb_uses and
	bb_defs if *split_p, instead preinitialize it to NULL.

	* gcc.dg/pr85167.c: New test.

From-SVN: r259058
parent 0d2f7959
2018-04-03 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/85167
* shrink-wrap.c (move_insn_for_shrink_wrap): Don't set bb_uses and
bb_defs if *split_p, instead preinitialize it to NULL.
PR tree-optimization/85156
* builtins.c (fold_builtin_expect): Use save_expr on arg1 to avoid
evaluating the argument multiple times.
......
......@@ -157,7 +157,7 @@ move_insn_for_shrink_wrap (basic_block bb, rtx_insn *insn,
struct dead_debug_local *debug)
{
rtx set, src, dest;
bitmap live_out, live_in, bb_uses, bb_defs;
bitmap live_out, live_in, bb_uses = NULL, bb_defs = NULL;
unsigned int i, dregno, end_dregno;
unsigned int sregno = FIRST_PSEUDO_REGISTER;
unsigned int end_sregno = FIRST_PSEUDO_REGISTER;
......@@ -330,8 +330,11 @@ move_insn_for_shrink_wrap (basic_block bb, rtx_insn *insn,
/* Check whether BB uses DEST or clobbers DEST. We need to add
INSN to BB if so. Either way, DEST is no longer live on entry,
except for any part that overlaps SRC (next loop). */
if (!*split_p)
{
bb_uses = &DF_LR_BB_INFO (bb)->use;
bb_defs = &DF_LR_BB_INFO (bb)->def;
}
if (df_live)
{
for (i = dregno; i < end_dregno; i++)
......
2018-04-03 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/85167
* gcc.dg/pr85167.c: New test.
PR tree-optimization/85156
* c-c++-common/pr85156.c: New test.
* gcc.c-torture/execute/pr85156.c: New test.
......
/* PR rtl-optimization/85167 */
/* { dg-do compile } */
/* { dg-options "-O2 -w" } */
struct A { long b; };
int c, d, e;
int bar (void);
int
foo (void)
{
long g;
for (; g == c ? 0 : (e = 1); g = ((struct A *)g)->b)
if (bar ())
return d;
}
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