diff options
author | Jakub Jelinek <jakub@redhat.com> | 2012-02-11 09:27:30 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2012-02-11 09:27:30 +0100 |
commit | bd0ba05d4c778a42c0199f7868c36975431edcb2 (patch) | |
tree | bb87848447f8e6ff40a6fd32e7bd31ce08f32fc7 /gcc | |
parent | 28f7ff45ec593f6a2f5f76e16f32c682564794e4 (diff) | |
download | gcc-bd0ba05d4c778a42c0199f7868c36975431edcb2.zip gcc-bd0ba05d4c778a42c0199f7868c36975431edcb2.tar.gz gcc-bd0ba05d4c778a42c0199f7868c36975431edcb2.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/reg-stack.c | 8 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr52132.c | 18 |
4 files changed, 31 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f0056d8..bad4a05 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +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> * compare-elim.c (find_comparisons_in_bb): Eliminate only compares diff --git a/gcc/reg-stack.c b/gcc/reg-stack.c index da7fe72..ce29fdc 100644 --- a/gcc/reg-stack.c +++ b/gcc/reg-stack.c @@ -1,6 +1,6 @@ /* Register to Stack convert for GNU compiler. 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. This file is part of GCC. @@ -1323,14 +1323,10 @@ compare_for_stack_reg (rtx insn, stack regstack, rtx pat_src) static int subst_stack_regs_in_debug_insn (rtx *loc, void *data) { - rtx *tloc = get_true_reg (loc); stack regstack = (stack)data; int hard_regno; - if (!STACK_REG_P (*tloc)) - return 0; - - if (tloc != loc) + if (!STACK_REG_P (*loc)) return 0; hard_regno = get_hard_regnum (regstack, *loc); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index bd91d58..0cd6876 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +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> * gnat.dg/specs/aggr4.ads: New test. diff --git a/gcc/testsuite/gcc.dg/pr52132.c b/gcc/testsuite/gcc.dg/pr52132.c new file mode 100644 index 0000000..8374994 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr52132.c @@ -0,0 +1,18 @@ +/* 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 (); +} |