44 lines
701 B
C
44 lines
701 B
C
/* { dg-do compile } */
|
|
/* { dg-options "-O1 -fdump-tree-optimized-blocks" } */
|
|
|
|
int c, d;
|
|
|
|
int
|
|
bar (int a)
|
|
{
|
|
void *p;
|
|
int b;
|
|
|
|
if (a!=0)
|
|
{
|
|
b = 3;
|
|
p = &&L0;
|
|
}
|
|
else
|
|
{
|
|
b = 5;
|
|
p = &&L1;
|
|
}
|
|
|
|
goto *p;
|
|
|
|
L0:
|
|
c = b;
|
|
return 1;
|
|
|
|
L1:
|
|
d = b;
|
|
return 0;
|
|
}
|
|
|
|
/* The both paths to the block containing the goto *p should
|
|
have been threaded, thus eliminating the need for the goto *p. */
|
|
|
|
/* { dg-final { scan-tree-dump-times "goto p" 0 "optimized" } } */
|
|
|
|
/* There should not be any abnormal edges as DOM removed the
|
|
computed goto. */
|
|
|
|
/* { dg-final { scan-tree-dump-times "ab" 0 "optimized" } } */
|
|
/* { dg-final { cleanup-tree-dump "optimized" } } */
|