Commit bd0ba05d by Jakub Jelinek Committed by Jakub Jelinek

re PR debug/52132 (ICE in loc_descriptor)

	PR debug/52132
	* reg-stack.c (subst_stack_regs_in_debug_insn): Don't use
	get_true_reg.

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

From-SVN: r184126
parent 28f7ff45
2012-02-11 Jakub Jelinek <jakub@redhat.com>
PR debug/52132
* reg-stack.c (subst_stack_regs_in_debug_insn): Don't use
get_true_reg.
2012-02-11 Uros Bizjak <ubizjak@gmail.com> 2012-02-11 Uros Bizjak <ubizjak@gmail.com>
* compare-elim.c (find_comparisons_in_bb): Eliminate only compares * compare-elim.c (find_comparisons_in_bb): Eliminate only compares
......
/* Register to Stack convert for GNU compiler. /* Register to Stack convert for GNU compiler.
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010, 2011, 2012
Free Software Foundation, Inc. Free Software Foundation, Inc.
This file is part of GCC. This file is part of GCC.
...@@ -1323,14 +1323,10 @@ compare_for_stack_reg (rtx insn, stack regstack, rtx pat_src) ...@@ -1323,14 +1323,10 @@ compare_for_stack_reg (rtx insn, stack regstack, rtx pat_src)
static int static int
subst_stack_regs_in_debug_insn (rtx *loc, void *data) subst_stack_regs_in_debug_insn (rtx *loc, void *data)
{ {
rtx *tloc = get_true_reg (loc);
stack regstack = (stack)data; stack regstack = (stack)data;
int hard_regno; int hard_regno;
if (!STACK_REG_P (*tloc)) if (!STACK_REG_P (*loc))
return 0;
if (tloc != loc)
return 0; return 0;
hard_regno = get_hard_regnum (regstack, *loc); hard_regno = get_hard_regnum (regstack, *loc);
......
2012-02-11 Jakub Jelinek <jakub@redhat.com>
PR debug/52132
* gcc.dg/pr52132.c: New test.
2012-02-10 Eric Botcazou <ebotcazou@adacore.com> 2012-02-10 Eric Botcazou <ebotcazou@adacore.com>
* gnat.dg/specs/aggr4.ads: New test. * gnat.dg/specs/aggr4.ads: New test.
......
/* PR debug/52132 */
/* { dg-do compile } */
/* { dg-options "-std=c99 -O2 -g" } */
int l;
void bar (void);
void
foo (int *x, float y)
{
float b;
union { float f; int i; } u = { .f = y };
u.i += 127 << 23;
u.f = ((-1.0f / 3) * u.f + 2) * u.f - 2.0f / 3;
b = 0.5 * (u.f + l);
if (b >= *x)
bar ();
}
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