Commit dc2a58da by Jakub Jelinek Committed by Jakub Jelinek

re PR debug/49544 (ICE in new_elt_loc_list)

	PR debug/49544
	* cselib.c (promote_debug_loc): If cselib_preserve_constants
	and l has two DEBUG_INSN owned locs instead of just one, adjust
	the second location's setting_insn too.

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

From-SVN: r175540
parent 0d72f628
2011-06-27 Jakub Jelinek <jakub@redhat.com>
PR debug/49544
* cselib.c (promote_debug_loc): If cselib_preserve_constants
and l has two DEBUG_INSN owned locs instead of just one, adjust
the second location's setting_insn too.
2011-06-27 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
PR libmudflap/38738
......
......@@ -257,7 +257,15 @@ promote_debug_loc (struct elt_loc_list *l)
{
n_debug_values--;
l->setting_insn = cselib_current_insn;
gcc_assert (!l->next || cselib_preserve_constants);
if (cselib_preserve_constants && l->next)
{
gcc_assert (l->next->setting_insn
&& DEBUG_INSN_P (l->next->setting_insn)
&& !l->next->next);
l->next->setting_insn = cselib_current_insn;
}
else
gcc_assert (!l->next);
}
}
......
2011-06-27 Jakub Jelinek <jakub@redhat.com>
PR debug/49544
* gcc.dg/pr49544.c: New test.
2011-06-27 Richard Guenther <rguenther@suse.de>
PR tree-optimization/49394
......
/* PR debug/49544 */
/* { dg-do compile } */
/* { dg-options "-g -O2" } */
int baz (int, int, void *);
static inline __attribute__ ((always_inline)) long
foo (int x, int y, void *z)
{
if (y < 0)
return baz (x, y, z);
return 0;
}
long
bar (long x, long y, long z)
{
return foo (x, y, (void *) z);
}
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