re PR target/59233 (C++ failures after revision 205058 on *-apple-darwin* with -m32)
2013-11-21 Teresa Johnson <tejohnson@google.com> PR target/59233 * cfgcleanup.c (outgoing_edges_match): Walk up past note instructions not understood by old_insns_match_p. From-SVN: r205243
This commit is contained in:
parent
5b3f0a5475
commit
d41d612242
@ -1,3 +1,9 @@
|
|||||||
|
2013-11-21 Teresa Johnson <tejohnson@google.com>
|
||||||
|
|
||||||
|
PR target/59233
|
||||||
|
* cfgcleanup.c (outgoing_edges_match): Walk up past note instructions
|
||||||
|
not understood by old_insns_match_p.
|
||||||
|
|
||||||
2013-11-21 Bill Schmidt <wschmidt@vnet.ibm.com>
|
2013-11-21 Bill Schmidt <wschmidt@vnet.ibm.com>
|
||||||
|
|
||||||
* config/rs6000/vector.md (vec_pack_trunc_v2df): Revert previous
|
* config/rs6000/vector.md (vec_pack_trunc_v2df): Revert previous
|
||||||
|
@ -1743,12 +1743,20 @@ outgoing_edges_match (int mode, basic_block bb1, basic_block bb2)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Find the last non-debug non-note instruction in each bb, except
|
||||||
|
stop when we see the NOTE_INSN_BASIC_BLOCK, as old_insns_match_p
|
||||||
|
handles that case specially. old_insns_match_p does not handle
|
||||||
|
other types of instruction notes. */
|
||||||
rtx last1 = BB_END (bb1);
|
rtx last1 = BB_END (bb1);
|
||||||
rtx last2 = BB_END (bb2);
|
rtx last2 = BB_END (bb2);
|
||||||
if (DEBUG_INSN_P (last1))
|
while (!NOTE_INSN_BASIC_BLOCK_P (last1) &&
|
||||||
last1 = prev_nondebug_insn (last1);
|
(DEBUG_INSN_P (last1) || NOTE_P (last1)))
|
||||||
if (DEBUG_INSN_P (last2))
|
last1 = PREV_INSN (last1);
|
||||||
last2 = prev_nondebug_insn (last2);
|
while (!NOTE_INSN_BASIC_BLOCK_P (last2) &&
|
||||||
|
(DEBUG_INSN_P (last2) || NOTE_P (last2)))
|
||||||
|
last2 = PREV_INSN (last2);
|
||||||
|
gcc_assert (last1 && last2);
|
||||||
|
|
||||||
/* First ensure that the instructions match. There may be many outgoing
|
/* First ensure that the instructions match. There may be many outgoing
|
||||||
edges so this test is generally cheaper. */
|
edges so this test is generally cheaper. */
|
||||||
if (old_insns_match_p (mode, last1, last2) != dir_both)
|
if (old_insns_match_p (mode, last1, last2) != dir_both)
|
||||||
|
Loading…
Reference in New Issue
Block a user