180709Sjake/* Copyright (C) 2002 Free Software Foundation. 280709Sjake 380709Sjake Test that optimizing ((c>=1) && (c<=127)) into (signed char)c < 0 480709Sjake doesn't cause any problems for the compiler and behaves correctly. 580709Sjake 680709Sjake Written by Roger Sayle, 8th May 2002. */ 780709Sjake 880709Sjake#include <limits.h> 980709Sjake 1080709Sjakeextern void abort (void); 1180709Sjake 1280709Sjakevoid 1380709Sjaketestc (unsigned char c, int ok) 1481334Sobrien{ 1580709Sjake if ((c>=1) && (c<=SCHAR_MAX)) 1680709Sjake { 1781334Sobrien if (!ok) abort (); 1880709Sjake } 1980709Sjake else 2080709Sjake if (ok) abort (); 2180709Sjake} 2280709Sjake 2380709Sjakevoid 2480709Sjaketests (unsigned short s, int ok) 2580709Sjake{ 2680709Sjake if ((s>=1) && (s<=SHRT_MAX)) 2780709Sjake { 2880709Sjake if (!ok) abort (); 2980709Sjake } 3080709Sjake else 3180709Sjake if (ok) abort (); 3280709Sjake} 3380709Sjake 3480709Sjakevoid 3591224Sjaketesti (unsigned int i, int ok) 3691224Sjake{ 3780709Sjake if ((i>=1) && (i<=INT_MAX)) 3891224Sjake { 3991224Sjake if (!ok) abort (); 4091224Sjake } 4180709Sjake else 4280709Sjake if (ok) abort (); 4380709Sjake} 4480709Sjake 4580709Sjakevoid 4680709Sjaketestl (unsigned long l, int ok) 4780709Sjake{ 4880709Sjake if ((l>=1) && (l<=LONG_MAX)) 4980709Sjake { 5080709Sjake if (!ok) abort (); 5180709Sjake } 5280709Sjake else 5380709Sjake if (ok) abort (); 5480709Sjake} 5580709Sjake 5680709Sjakeint 5780709Sjakemain () 5880709Sjake{ 5980709Sjake testc (0, 0); 6080709Sjake testc (1, 1); 6180709Sjake testc (SCHAR_MAX, 1); 6291613Sjake testc (SCHAR_MAX+1, 0); 6391613Sjake testc (UCHAR_MAX, 0); 6480709Sjake 6580709Sjake tests (0, 0); 6680709Sjake tests (1, 1); 6780709Sjake tests (SHRT_MAX, 1); 6881176Sjake tests (SHRT_MAX+1, 0); 6981176Sjake tests (USHRT_MAX, 0); 7081176Sjake 7181176Sjake testi (0, 0); 7281176Sjake testi (1, 1); 7381176Sjake testi (INT_MAX, 1); 7481176Sjake testi (INT_MAX+1U, 0); 7581176Sjake testi (UINT_MAX, 0); 7681176Sjake 7781176Sjake testl (0, 0); 7881176Sjake testl (1, 1); 7981176Sjake testl (LONG_MAX, 1); 8081176Sjake testl (LONG_MAX+1UL, 0); 8181176Sjake testl (ULONG_MAX, 0); 8281176Sjake 8391616Sjake return 0; 8491616Sjake} 8591616Sjake 8696998Sjake