tree-cfg.c (thread_jumps): Update dominators correctly in case destination of threaded edge dominates its...
* tree-cfg.c (thread_jumps): Update dominators correctly in case destination of threaded edge dominates its source. From-SVN: r87486
This commit is contained in:
parent
c94583fe55
commit
d840495b15
|
@ -1,3 +1,8 @@
|
||||||
|
2004-09-14 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
|
||||||
|
|
||||||
|
* tree-cfg.c (thread_jumps): Update dominators correctly in
|
||||||
|
case destination of threaded edge dominates its source.
|
||||||
|
|
||||||
2004-09-14 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
|
2004-09-14 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
|
||||||
|
|
||||||
* unroll.c: Removed.
|
* unroll.c: Removed.
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
|
2004-09-14 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
|
||||||
|
|
||||||
|
* gcc.c-torture/compile/20040914-1.c: New test.
|
||||||
|
|
||||||
2004-09-13 Mark Mitchell <mark@codesourcery.com>
|
2004-09-13 Mark Mitchell <mark@codesourcery.com>
|
||||||
|
|
||||||
PR c++/16162
|
PR c++/16162
|
||||||
|
|
|
@ -0,0 +1,39 @@
|
||||||
|
extern int clobber_k (int *);
|
||||||
|
extern int barrier (void);
|
||||||
|
int t, u;
|
||||||
|
|
||||||
|
int
|
||||||
|
process_second_stream(void)
|
||||||
|
{
|
||||||
|
int k;
|
||||||
|
int i = 0, j = 0, result;
|
||||||
|
|
||||||
|
clobber_k (&k);
|
||||||
|
|
||||||
|
while(t)
|
||||||
|
;
|
||||||
|
|
||||||
|
while(!j)
|
||||||
|
{
|
||||||
|
while(!j)
|
||||||
|
{
|
||||||
|
barrier ();
|
||||||
|
if (t == 0)
|
||||||
|
break;
|
||||||
|
else if(t == 1)
|
||||||
|
t = 2;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(t < 0)
|
||||||
|
j=1;
|
||||||
|
if(u < 0)
|
||||||
|
k = i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!j && u)
|
||||||
|
j=1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -3970,9 +3970,11 @@ thread_jumps (void)
|
||||||
set_immediate_dominator (CDI_DOMINATORS, old_dest, bb);
|
set_immediate_dominator (CDI_DOMINATORS, old_dest, bb);
|
||||||
|
|
||||||
/* Now proceed like if we forwarded just over one edge at a time.
|
/* Now proceed like if we forwarded just over one edge at a time.
|
||||||
Algorithm for forwarding over edge A --> B then is
|
Algorithm for forwarding edge S --> A over edge A --> B then
|
||||||
|
is
|
||||||
|
|
||||||
if (idom (B) == A)
|
if (idom (B) == A
|
||||||
|
&& !dominated_by (S, B))
|
||||||
idom (B) = idom (A);
|
idom (B) = idom (A);
|
||||||
recount_idom (A); */
|
recount_idom (A); */
|
||||||
|
|
||||||
|
@ -3980,7 +3982,8 @@ thread_jumps (void)
|
||||||
{
|
{
|
||||||
tmp = old_dest->succ->dest;
|
tmp = old_dest->succ->dest;
|
||||||
|
|
||||||
if (get_immediate_dominator (CDI_DOMINATORS, tmp) == old_dest)
|
if (get_immediate_dominator (CDI_DOMINATORS, tmp) == old_dest
|
||||||
|
&& !dominated_by_p (CDI_DOMINATORS, bb, tmp))
|
||||||
{
|
{
|
||||||
dom = get_immediate_dominator (CDI_DOMINATORS, old_dest);
|
dom = get_immediate_dominator (CDI_DOMINATORS, old_dest);
|
||||||
set_immediate_dominator (CDI_DOMINATORS, tmp, dom);
|
set_immediate_dominator (CDI_DOMINATORS, tmp, dom);
|
||||||
|
|
Loading…
Reference in New Issue