173 lines
2.4 KiB
C
173 lines
2.4 KiB
C
/* { dg-do compile } */
|
|
/* { dg-options "-O2 -fdump-tree-optimized" } */
|
|
|
|
extern void link_error (void);
|
|
|
|
|
|
/* check that cprop for variables of different types still works even
|
|
if function calls or assignments to different types of data are
|
|
interposed. */
|
|
|
|
int test7 (int *intarr)
|
|
{
|
|
extern int foo7 (int);
|
|
int u = 7, v1;
|
|
foo7 (u);
|
|
v1 = u;
|
|
if (v1 != 7)
|
|
link_error ();
|
|
return v1;
|
|
}
|
|
|
|
int test77 (int *arr)
|
|
{
|
|
int u = 7, v1;
|
|
arr[0] = 4;
|
|
v1 = u;
|
|
if (v1 != 7)
|
|
link_error ();
|
|
return v1 + arr[0];
|
|
}
|
|
|
|
int test777 (void)
|
|
{
|
|
extern int foo(int *);
|
|
int u = 7, v1;
|
|
static int sarr[10];
|
|
sarr[0] = 4;
|
|
v1 = u;
|
|
if (v1 != 7)
|
|
link_error ();
|
|
foo (sarr);
|
|
return v1 + sarr[0];
|
|
}
|
|
|
|
int garr[10];
|
|
int test7777 (void)
|
|
{
|
|
int u = 7, v1;
|
|
garr[0] = 4;
|
|
v1 = u;
|
|
if (v1 != 7)
|
|
link_error ();
|
|
return v1 + garr[0];
|
|
}
|
|
|
|
int test88 (int *arr)
|
|
{
|
|
static int l;
|
|
int v1;
|
|
l = 8;
|
|
arr[0] = 4;
|
|
v1 = l;
|
|
if (v1 != 8)
|
|
link_error ();
|
|
l = foo88 (l);
|
|
return v1 + arr[0];
|
|
}
|
|
|
|
int test888 (void)
|
|
{
|
|
static int l;
|
|
extern int foo(int *);
|
|
int v1;
|
|
static int sarr[10];
|
|
l = 8;
|
|
sarr[0] = 4;
|
|
v1 = l;
|
|
if (v1 != 8)
|
|
link_error ();
|
|
foo (sarr);
|
|
l = foo88(l);
|
|
return v1 + sarr[0];
|
|
}
|
|
|
|
int test8888 (void)
|
|
{
|
|
static int l;
|
|
int v1;
|
|
l = 8;
|
|
garr[0] = 4;
|
|
v1 = l;
|
|
if (v1 != 8)
|
|
link_error ();
|
|
return v1 + garr[0];
|
|
}
|
|
|
|
|
|
|
|
/* global var */
|
|
int g9;
|
|
int garr9[10];
|
|
int test9 (int *intarr)
|
|
{
|
|
extern int foo9 (int) __attribute__ ((const));
|
|
int h, v;
|
|
g9 = 9;
|
|
h = foo9 (g9);
|
|
v = g9;
|
|
if (v != 9)
|
|
link_error ();
|
|
return g9;
|
|
}
|
|
|
|
int test99 (int *intarr)
|
|
{
|
|
extern int foo9 (int) __attribute__ ((pure));
|
|
int h, v;
|
|
g9 = 9;
|
|
h = foo9 (g9);
|
|
v = g9;
|
|
if (v != 9)
|
|
link_error ();
|
|
return g9;
|
|
}
|
|
|
|
extern int foo99 (int);
|
|
|
|
int test999 (int *arr)
|
|
{
|
|
static int l;
|
|
int v1;
|
|
g9 = 9;
|
|
l = 4;
|
|
v1 = g9;
|
|
if (v1 != 9)
|
|
link_error ();
|
|
l = foo99 (l);
|
|
return v1 + l;
|
|
}
|
|
|
|
|
|
int test9999 (void)
|
|
{
|
|
int v1;
|
|
static int sarr[10];
|
|
g9 = 9;
|
|
sarr[0] = 4;
|
|
v1 = g9;
|
|
if (v1 != 9)
|
|
link_error ();
|
|
foo (sarr);
|
|
g9 = foo99 (g9);
|
|
return v1 + sarr[0];
|
|
}
|
|
|
|
|
|
int test99999 (void)
|
|
{
|
|
int v1;
|
|
g9 = 9;
|
|
garr9[0] = 4;
|
|
v1 = g9;
|
|
if (v1 != 9)
|
|
link_error ();
|
|
return v1 + garr9[0];
|
|
}
|
|
|
|
|
|
/* There should be not link_error calls, if there is any the
|
|
optimization has failed */
|
|
/* { dg-final { scan-tree-dump-times "link_error" 0 "optimized"} } */
|
|
/* { dg-final { cleanup-tree-dump "optimized" } } */
|