blob: c8ebcc10e42b11ec0dea1caeb0b13895401bf274 [file] [log] [blame]
/* This small program uses all the arithmetic operators that may
generate calls to library routines which must be implemented in
port-specific assembly language. */
/* { dg-do link } */
#include <stddef.h>
int foo ();
double dfoo ();
void discard (int);
void ddiscard (double);
int
main (void)
{
int a = foo (), b = foo ();
unsigned int au = foo (), bu = foo ();
float af = dfoo (), bf = dfoo ();
double ad = dfoo (), bd = dfoo ();
discard (a * b);
discard (a / b);
discard (a % b);
discard (au / bu);
discard (au % bu);
discard (a >> b);
discard (a << b);
discard (au >> bu);
discard (au << bu);
ddiscard (ad + bd);
ddiscard (ad - bd);
ddiscard (ad * bd);
ddiscard (ad / bd);
ddiscard (-ad);
ddiscard (af + bf);
ddiscard (af - bf);
ddiscard (af * bf);
ddiscard (af / bf);
ddiscard (-af);
discard ((int) ad);
discard ((int) af);
ddiscard ((double) a);
ddiscard ((float) a);
ddiscard ((float) ad);
discard (ad == bd);
discard (ad < bd);
discard (ad > bd);
discard (ad != bd);
discard (ad <= bd);
discard (ad >= bd);
discard (af == bf);
discard (af < bf);
discard (af > bf);
discard (af != bf);
discard (af <= bf);
discard (af >= bf);
return 0;
}
void
discard (x)
int x __attribute__((__unused__));
{}
void
ddiscard (x)
double x __attribute__((__unused__));
{}
int
foo ()
{
static int table[] = {20, 69, 4, 12};
static int idx;
return table[idx++];
}
double
dfoo ()
{
static double table[] = {20.4, 69.96, 4.4, 202.202};
static int idx;
return table[idx++];
}