/* Remove `-ansi' from options to enable the use of __far and long long. */ | |
/* { dg-options "" } */ | |
#define ADD(TYPE, name) \ | |
TYPE \ | |
add##name(TYPE a, TYPE b) \ | |
{ \ | |
return a + b; \ | |
} \ | |
#define ADDIMM(TYPE, name) \ | |
TYPE \ | |
addimm##name(TYPE a) \ | |
{ \ | |
return a + 50; \ | |
} \ | |
#define ADDFAR(TYPE, name) \ | |
TYPE __far gf##name; \ | |
void \ | |
addfar##name(TYPE __far *pa, TYPE b) \ | |
{ \ | |
gf##name += b; \ | |
*pa += 50; \ | |
} \ | |
ADD (char, qi3) | |
ADD (int, hi3) | |
ADD (long, si3) | |
ADD (long long, di3) | |
ADD (float, sf3) | |
ADD (double, df3) | |
ADDIMM (char, qi3) | |
ADDIMM (int, hi3) | |
ADDIMM (long, si3) | |
ADDIMM (long long, di3) | |
ADDIMM (float, sf3) | |
ADDIMM (double, df3) | |
ADDFAR (char, qi3) | |
ADDFAR (int, hi3) | |
ADDFAR (long, si3) | |
ADDFAR (long long, di3) | |
ADDFAR (float, sf3) | |
ADDFAR (double, df3) | |
char aqi1, aqi2; | |
int ahi1, ahi2; | |
long asi1, asi2; | |
long long adi1, adi2; | |
float af1, af2; | |
double ad1, ad2; | |
void | |
testglobal (void) | |
{ | |
aqi1 += aqi2; | |
ahi1 += ahi2; | |
asi1 += asi2; | |
adi1 += adi2; | |
af1 += af2; | |
ad1 += ad2; | |
} | |
void | |
testglobal2 (void) | |
{ | |
aqi1 += 10; | |
ahi1 += 11; | |
asi1 += 12; | |
adi1 += 13; | |
af1 += 2.0; | |
ad1 += 4.0; | |
} | |
void | |
testptr (char *aqi1, int *ahi1, long *asi1, long long *adi1, float *af1, double *ad1, | |
char *aqi2, int *ahi2, long *asi2, long long *adi2, float *af2, double *ad2) | |
{ | |
*aqi1 += *aqi2; | |
*ahi1 += *ahi2; | |
*asi1 += *asi2; | |
*adi1 += *adi2; | |
*af1 += *af2; | |
*ad1 += *ad2; | |
} | |
void | |
testptr2 (char *aqi1, int *ahi1, long *asi1, long long *adi1, float *af1, double *ad1) | |
{ | |
*aqi1 += 5; | |
*ahi1 += 10; | |
*asi1 += 11; | |
*adi1 += 12; | |
*af1 += 4.5; | |
*ad1 += 5.5; | |
} |