From: Jakub Jelinek Date: Mon, 20 Aug 2012 18:56:49 +0000 (+0200) Subject: re PR rtl-optimization/54294 ([alpha] Bootstrap comparison failure due to fwprop... X-Git-Tag: misc/gccgo-go1_1_2~1279 X-Git-Url: https://gcc.gnu.org/git/?a=commitdiff_plain;h=07bc8ae8abd68eaf968f77f453e33ec60c371bb3;p=gcc.git re PR rtl-optimization/54294 ([alpha] Bootstrap comparison failure due to fwprop handling of debug insns) PR rtl-optimization/54294 * fwprop.c (all_uses_available_at): Ignore debug insns in between def_insn and target_insn when checking whether the shortcut is possible. From-SVN: r190541 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0bec6d278224..83cda06ef3e9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2012-08-20 Jakub Jelinek + + PR rtl-optimization/54294 + * fwprop.c (all_uses_available_at): Ignore debug insns in between + def_insn and target_insn when checking whether the shortcut is + possible. + 2012-08-20 Eric Botcazou * config/sparc/sparc.h (MAX_FIXED_MODE_SIZE): Define. diff --git a/gcc/fwprop.c b/gcc/fwprop.c index d1cba8810ef8..e64e76da221a 100644 --- a/gcc/fwprop.c +++ b/gcc/fwprop.c @@ -1,5 +1,5 @@ /* RTL-based forward propagation pass for GNU compiler. - Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011 + Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. Contributed by Paolo Bonzini and Steven Bosscher. @@ -799,13 +799,17 @@ all_uses_available_at (rtx def_insn, rtx target_insn) df_ref *use_rec; struct df_insn_info *insn_info = DF_INSN_INFO_GET (def_insn); rtx def_set = single_set (def_insn); + rtx next; gcc_assert (def_set); /* If target_insn comes right after def_insn, which is very common - for addresses, we can use a quicker test. */ - if (NEXT_INSN (def_insn) == target_insn - && REG_P (SET_DEST (def_set))) + for addresses, we can use a quicker test. Ignore debug insns + other than target insns for this. */ + next = NEXT_INSN (def_insn); + while (next && next != target_insn && DEBUG_INSN_P (next)) + next = NEXT_INSN (next); + if (next == target_insn && REG_P (SET_DEST (def_set))) { rtx def_reg = SET_DEST (def_set);