gcse.c (bypass_block): Prevent edges to be unified when we are about to emit compenstation code.
* gcse.c (bypass_block): Prevent edges to be unified when we are about to emit compenstation code. From-SVN: r76791
This commit is contained in:
parent
1b8f817446
commit
a544524ad3
@ -1,3 +1,8 @@
|
||||
2004-01-28 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
* gcse.c (bypass_block): Prevent edges to be unified when we are
|
||||
about to emit compenstation code.
|
||||
|
||||
2004-01-28 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* config/arm/arm.c (arm_expand_builtin): Force second argument of
|
||||
|
15
gcc/gcse.c
15
gcc/gcse.c
@ -4874,6 +4874,21 @@ bypass_block (basic_block bb, rtx setcc, rtx jump)
|
||||
else
|
||||
dest = NULL;
|
||||
|
||||
/* Avoid unification of the edge with other edges from original
|
||||
branch. We would end up emitting the instruction on "both"
|
||||
edges. */
|
||||
|
||||
if (dest && setcc && !CC0_P (SET_DEST (pat)))
|
||||
{
|
||||
edge e2;
|
||||
for (e2 = e->src->succ; e2; e2 = e2->succ_next)
|
||||
if (e2->dest == dest)
|
||||
{
|
||||
dest = NULL;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
old_dest = e->dest;
|
||||
if (dest != NULL
|
||||
&& dest != old_dest
|
||||
|
Loading…
Reference in New Issue
Block a user