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>
|
2004-01-28 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
* config/arm/arm.c (arm_expand_builtin): Force second argument of
|
* 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
|
else
|
||||||
dest = NULL;
|
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;
|
old_dest = e->dest;
|
||||||
if (dest != NULL
|
if (dest != NULL
|
||||||
&& dest != old_dest
|
&& dest != old_dest
|
||||||
|
|
Loading…
Reference in New Issue