mirror of
https://github.com/nArnoSNES/tcc-65816.git
synced 2024-06-11 22:29:28 +00:00
86 lines
1.3 KiB
C
86 lines
1.3 KiB
C
/* Copyright (C) 2002 Free Software Foundation.
|
|
|
|
Test that optimizing ((c>=1) && (c<=127)) into (signed char)c < 0
|
|
doesn't cause any problems for the compiler and behaves correctly.
|
|
|
|
Written by Roger Sayle, 8th May 2002. */
|
|
|
|
#include <limits.h>
|
|
|
|
extern void abort (void);
|
|
|
|
void
|
|
testc (unsigned char c, int ok)
|
|
{
|
|
if ((c>=1) && (c<=SCHAR_MAX))
|
|
{
|
|
if (!ok) abort ();
|
|
}
|
|
else
|
|
if (ok) abort ();
|
|
}
|
|
|
|
void
|
|
tests (unsigned short s, int ok)
|
|
{
|
|
if ((s>=1) && (s<=SHRT_MAX))
|
|
{
|
|
if (!ok) abort ();
|
|
}
|
|
else
|
|
if (ok) abort ();
|
|
}
|
|
|
|
void
|
|
testi (unsigned int i, int ok)
|
|
{
|
|
if ((i>=1) && (i<=INT_MAX))
|
|
{
|
|
if (!ok) abort ();
|
|
}
|
|
else
|
|
if (ok) abort ();
|
|
}
|
|
|
|
void
|
|
testl (unsigned long l, int ok)
|
|
{
|
|
if ((l>=1) && (l<=LONG_MAX))
|
|
{
|
|
if (!ok) abort ();
|
|
}
|
|
else
|
|
if (ok) abort ();
|
|
}
|
|
|
|
int
|
|
main ()
|
|
{
|
|
testc (0, 0);
|
|
testc (1, 1);
|
|
testc (SCHAR_MAX, 1);
|
|
testc (SCHAR_MAX+1, 0);
|
|
testc (UCHAR_MAX, 0);
|
|
|
|
tests (0, 0);
|
|
tests (1, 1);
|
|
tests (SHRT_MAX, 1);
|
|
tests (SHRT_MAX+1, 0);
|
|
tests (USHRT_MAX, 0);
|
|
|
|
testi (0, 0);
|
|
testi (1, 1);
|
|
testi (INT_MAX, 1);
|
|
testi (INT_MAX+1U, 0);
|
|
testi (UINT_MAX, 0);
|
|
|
|
testl (0, 0);
|
|
testl (1, 1);
|
|
testl (LONG_MAX, 1);
|
|
testl (LONG_MAX+1UL, 0);
|
|
testl (ULONG_MAX, 0);
|
|
|
|
return 0;
|
|
}
|
|
|