mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-23 16:34:07 +00:00
286 lines
4.7 KiB
C
286 lines
4.7 KiB
C
/* Compiler Test Program Part II - version 4.0 plus */
|
|
|
|
struct lbits {
|
|
unsigned b1 : 4;
|
|
unsigned b2 : 12;
|
|
} low;
|
|
|
|
struct hbits {
|
|
unsigned b1 : 12;
|
|
unsigned b2 : 4;
|
|
} high;
|
|
|
|
int err;
|
|
int globali = -32768;
|
|
unsigned globalu = 44000;
|
|
|
|
main()
|
|
{
|
|
l_vs_i();
|
|
rl_vs_i();
|
|
l_vs_ri();
|
|
rl_vs_ri();
|
|
v41();
|
|
if (!err)
|
|
printf("Far Freaking Out\n");
|
|
else
|
|
printf("Tough Luck.....\n");
|
|
}
|
|
|
|
l_vs_i() /* longs versus ints... v. 4.0 addition */
|
|
{
|
|
long autol, autol1;
|
|
int i;
|
|
|
|
i = 3;
|
|
autol = autol1 = 100;
|
|
autol1 *= i;
|
|
autol =autol * i;
|
|
if (autol1 != autol) error(0x00);
|
|
|
|
autol = autol1 = 100;
|
|
autol1 /= i;
|
|
autol =autol / i;
|
|
if (autol1 != autol) error(0x01);
|
|
|
|
autol = autol1 = 100;
|
|
autol1 += i;
|
|
autol =autol + i;
|
|
if (autol1 != autol) error(0x02);
|
|
|
|
autol = autol1 = 100;
|
|
autol1 -= i;
|
|
autol =autol - i;
|
|
if (autol1 != autol) error(0x03);
|
|
|
|
autol = autol1 = 100;
|
|
autol1 %= i;
|
|
autol =autol % i;
|
|
if (autol1 != autol) error(0x04);
|
|
|
|
autol = autol1 = 100;
|
|
autol1 =<< i;
|
|
autol =autol << i;
|
|
if (autol1 != autol) error(0x05);
|
|
|
|
autol = autol1 = 100;
|
|
autol1 =>> i;
|
|
autol =autol >> i;
|
|
if (autol1 != autol) error(0x06);
|
|
|
|
autol = autol1 = 100;
|
|
autol1 &= i;
|
|
autol =autol & i;
|
|
if (autol1 != autol) error(0x07);
|
|
|
|
autol = autol1 = 100;
|
|
autol1 |= i;
|
|
autol =autol | i;
|
|
if (autol1 != autol) error(0x08);
|
|
|
|
autol = autol1 = 100;
|
|
autol1 ^= i;
|
|
autol =autol ^ i;
|
|
if (autol1 != autol) error(0x09);
|
|
}
|
|
|
|
rl_vs_i() /* register longs versus ints... v. 4.0 addition */
|
|
{
|
|
register long regl, regl1;
|
|
int i;
|
|
|
|
i = 3;
|
|
regl = regl1 = 100;
|
|
regl1 *= i;
|
|
regl = regl * i;
|
|
if (regl1 != regl) error(0x10);
|
|
|
|
regl = regl1 = 100;
|
|
regl1 /= i;
|
|
regl = regl / i;
|
|
if (regl1 != regl) error(0x11);
|
|
|
|
regl = regl1 = 100;
|
|
regl1 += i;
|
|
regl = regl + i;
|
|
if (regl1 != regl) error(0x12);
|
|
|
|
regl = regl1 = 100;
|
|
regl1 -= i;
|
|
regl = regl - i;
|
|
if (regl1 != regl) error(0x13);
|
|
|
|
regl = regl1 = 100;
|
|
regl1 %= i;
|
|
regl = regl % i;
|
|
if (regl1 != regl) error(0x14);
|
|
|
|
regl = regl1 = 100;
|
|
regl1 =<< i;
|
|
regl = regl << i;
|
|
if (regl1 != regl) error(0x15);
|
|
|
|
regl = regl1 = 100;
|
|
regl1 =>> i;
|
|
regl = regl >> i;
|
|
if (regl1 != regl) error(0x16);
|
|
|
|
regl = regl1 = 100;
|
|
regl1 &= i;
|
|
regl = regl & i;
|
|
if (regl1 != regl) error(0x17);
|
|
|
|
regl = regl1 = 100;
|
|
regl1 |= i;
|
|
regl = regl | i;
|
|
if (regl1 != regl) error(0x18);
|
|
|
|
regl = regl1 = 100;
|
|
regl1 ^= i;
|
|
regl = regl ^ i;
|
|
if (regl1 != regl) error(0x19);
|
|
}
|
|
|
|
l_vs_ri() /* longs versus register ints... v. 4.0 addition */
|
|
{
|
|
long autol, autol1;
|
|
register int i;
|
|
|
|
i = 2;
|
|
autol = autol1 = 100;
|
|
autol1 *= i;
|
|
autol =autol * i;
|
|
if (autol1 != autol) error(0x20);
|
|
|
|
autol = autol1 = 100;
|
|
autol1 /= i;
|
|
autol =autol / i;
|
|
if (autol1 != autol) error(0x21);
|
|
|
|
autol = autol1 = 100;
|
|
autol1 += i;
|
|
autol =autol + i;
|
|
if (autol1 != autol) error(0x22);
|
|
|
|
autol = autol1 = 100;
|
|
autol1 -= i;
|
|
autol =autol - i;
|
|
if (autol1 != autol) error(0x23);
|
|
|
|
autol = autol1 = 100;
|
|
autol1 %= i;
|
|
autol =autol % i;
|
|
if (autol1 != autol) error(0x24);
|
|
|
|
autol = autol1 = 100;
|
|
autol1 =<< i;
|
|
autol =autol << i;
|
|
if (autol1 != autol) error(0x25);
|
|
|
|
autol = autol1 = 100;
|
|
autol1 =>> i;
|
|
autol =autol >> i;
|
|
if (autol1 != autol) error(0x26);
|
|
|
|
autol = autol1 = 100;
|
|
autol1 &= i;
|
|
autol =autol & i;
|
|
if (autol1 != autol) error(0x27);
|
|
|
|
autol = autol1 = 100;
|
|
autol1 |= i;
|
|
autol =autol | i;
|
|
if (autol1 != autol) error(0x28);
|
|
|
|
autol = autol1 = 100;
|
|
autol1 ^= i;
|
|
autol =autol ^ i;
|
|
if (autol1 != autol) error(0x29);
|
|
}
|
|
|
|
rl_vs_ri() /* reg longs versus reg ints... v. 4.0 addition */
|
|
{
|
|
register long regl, regl1;
|
|
register int i;
|
|
|
|
i = 3;
|
|
regl = regl1 = 100;
|
|
regl1 *= i;
|
|
regl = regl * i;
|
|
if (regl1 != regl) error(0x30);
|
|
|
|
regl = regl1 = 100;
|
|
regl1 /= i;
|
|
regl = regl / i;
|
|
if (regl1 != regl) error(0x31);
|
|
|
|
regl = regl1 = 100;
|
|
regl1 += i;
|
|
regl = regl + i;
|
|
if (regl1 != regl) error(0x32);
|
|
|
|
regl = regl1 = 100;
|
|
regl1 -= i;
|
|
regl = regl - i;
|
|
if (regl1 != regl) error(0x33);
|
|
|
|
regl = regl1 = 100;
|
|
regl1 %= i;
|
|
regl = regl % i;
|
|
if (regl1 != regl) error(0x34);
|
|
|
|
regl = regl1 = 100;
|
|
regl1 =<< i;
|
|
regl = regl << i;
|
|
if (regl1 != regl) error(0x35);
|
|
|
|
regl = regl1 = 100;
|
|
regl1 =>> i;
|
|
regl = regl >> i;
|
|
if (regl1 != regl) error(0x36);
|
|
|
|
regl = regl1 = 100;
|
|
regl1 &= i;
|
|
regl = regl & i;
|
|
if (regl1 != regl) error(0x37);
|
|
|
|
regl = regl1 = 100;
|
|
regl1 |= i;
|
|
regl = regl | i;
|
|
if (regl1 != regl) error(0x38);
|
|
|
|
regl = regl1 = 100;
|
|
regl1 ^= i;
|
|
regl = regl ^ i;
|
|
if (regl1 != regl) error(0x39);
|
|
}
|
|
|
|
v41() /* 4.1 fixed and tested */
|
|
{
|
|
long l, l1;
|
|
|
|
/* bit assignments */
|
|
low.b1 = high.b2;
|
|
high.b1 = low.b2;
|
|
|
|
l = l1 = 45L;
|
|
/* non-code-generating simple expressions */
|
|
l =* 1L;
|
|
if (l != l1) error(0x40);
|
|
l =+ 0L;
|
|
if (l != l1) error(0x41);
|
|
l =- 0L;
|
|
if (l != l1) error(0x42);
|
|
l =* 0L;
|
|
if (l != 0L) error(0x43);
|
|
l1 =% 1L;
|
|
if (l1 != 0L) error(0x44);
|
|
}
|
|
|
|
error(pc)
|
|
{
|
|
printf("error %x\n",pc);
|
|
err++;
|
|
}
|
|
|