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
This commit is contained in:
parent
0d72f628a4
commit
dc2a58daab
|
@ -1,3 +1,10 @@
|
|||
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
|
||||
|
|
10
gcc/cselib.c
10
gcc/cselib.c
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
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
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
/* 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);
|
||||
}
|
Loading…
Reference in New Issue