11f5207b7SJohn Levon typedef _Bool bool;
2*c85f09ccSJohn Levon typedef   signed char schar;
31f5207b7SJohn Levon typedef unsigned char uchar;
41f5207b7SJohn Levon typedef unsigned short ushort;
51f5207b7SJohn Levon typedef unsigned int uint;
61f5207b7SJohn Levon typedef unsigned long ulong;
71f5207b7SJohn Levon typedef long long longlong;
81f5207b7SJohn Levon typedef unsigned long long ulonglong;
91f5207b7SJohn Levon 
101f5207b7SJohn Levon #define DEFINE_CAST(from, to)			\
111f5207b7SJohn Levon 	static to from##2##to(from x) {		\
121f5207b7SJohn Levon 		return x;			\
131f5207b7SJohn Levon 	}
141f5207b7SJohn Levon 
151f5207b7SJohn Levon #define DEFINE_CASTS(from)			\
161f5207b7SJohn Levon 	DEFINE_CAST(from, bool)			\
171f5207b7SJohn Levon 	DEFINE_CAST(from, char)			\
18*c85f09ccSJohn Levon 	DEFINE_CAST(from, schar)		\
191f5207b7SJohn Levon 	DEFINE_CAST(from, uchar)		\
201f5207b7SJohn Levon 	DEFINE_CAST(from, short)		\
211f5207b7SJohn Levon 	DEFINE_CAST(from, ushort)		\
221f5207b7SJohn Levon 	DEFINE_CAST(from, int)			\
231f5207b7SJohn Levon 	DEFINE_CAST(from, uint)			\
241f5207b7SJohn Levon 	DEFINE_CAST(from, long)			\
251f5207b7SJohn Levon 	DEFINE_CAST(from, ulong)		\
261f5207b7SJohn Levon 	DEFINE_CAST(from, longlong)		\
271f5207b7SJohn Levon 	DEFINE_CAST(from, ulonglong)		\
281f5207b7SJohn Levon 	DEFINE_CAST(from, float)		\
291f5207b7SJohn Levon 	DEFINE_CAST(from, double)
301f5207b7SJohn Levon 
311f5207b7SJohn Levon DEFINE_CASTS(bool)
321f5207b7SJohn Levon DEFINE_CASTS(char)
33*c85f09ccSJohn Levon DEFINE_CASTS(schar)
341f5207b7SJohn Levon DEFINE_CASTS(uchar)
351f5207b7SJohn Levon DEFINE_CASTS(short)
361f5207b7SJohn Levon DEFINE_CASTS(ushort)
371f5207b7SJohn Levon DEFINE_CASTS(int)
381f5207b7SJohn Levon DEFINE_CASTS(uint)
391f5207b7SJohn Levon DEFINE_CASTS(long)
401f5207b7SJohn Levon DEFINE_CASTS(ulong)
411f5207b7SJohn Levon DEFINE_CASTS(longlong)
421f5207b7SJohn Levon DEFINE_CASTS(ulonglong)
431f5207b7SJohn Levon DEFINE_CASTS(float)
441f5207b7SJohn Levon DEFINE_CASTS(double)
451f5207b7SJohn Levon 
461f5207b7SJohn Levon /*
471f5207b7SJohn Levon  * check-name: Cast code generation
481f5207b7SJohn Levon  * check-command: sparsec -c $file -o tmp.o
491f5207b7SJohn Levon  */
50