1 extern void abort (void) __attribute__((noreturn));
2 extern int printf (const char *, ...);
3 
4 int func1 (int, int) __attribute__((noinline));
5 long func2 (int, int)  __attribute__((noinline));
6 long func3 (long, long)  __attribute__((noinline));
7 long long func4 (long, long)  __attribute__((noinline));
8 long long func5 (long long, long long)  __attribute__((noinline));
9 unsigned long func6 (unsigned int, unsigned int)  __attribute__((noinline));
10 unsigned long long func7 (unsigned long, unsigned long)  __attribute__((noinline));
11 
12 #define DEBUG 0
13 
14 int
main(void)15 main (void)
16 {
17   if (func1 (6, 7) != 42)
18     {
19 #if DEBUG
20       printf ("test1 fail: 6 * 7 = %d!\n", func1 (6, 7));
21 #endif
22       abort ();
23     }
24 
25   if (func2 (1000, 1000) != 1000000L)
26     {
27 #if DEBUG
28       printf ("test2 fail: 1000 * 1000 = %ld!\n", func2 (1000, 1000));
29 #endif
30       abort ();
31     }
32 
33   if (func3 (70000L, -32L) != -2240000L)
34     {
35 #if DEBUG
36       printf ("test3 fail: 70000 * -32 = %ld!\n", func3 (70000L, -32L));
37 #endif
38       abort ();
39     }
40 
41   if (func4 (-40L, -80L) != 3200LL)
42     {
43 #if DEBUG
44       printf ("test4 fail: -40 * -80 = %lld!\n", func4 (-40L, -80L));
45 #endif
46       abort ();
47     }
48 
49   if (func5(9LL, 9LL) != 81LL)
50     {
51 #if DEBUG
52       printf ("test5 fail: 9 * 9 = %lld!\n", func5 (9LL, 9LL));
53 #endif
54       abort ();
55     }
56 
57   if (func6 (-2U, 8U) != 524272LU)
58     {
59 #if DEBUG
60       printf ("test6 fail: -2 * 8 = %lu!\n", func6 (-2U, 8U));
61 #endif
62       abort ();
63     }
64 
65   if (func7 (99UL, 101UL) != 9999LLU)
66     {
67 #if DEBUG
68       printf ("test7 fail: 99 * 101 = %llu!\n", func7 (99UL, 101UL));
69 #endif
70       abort ();
71     }
72 
73   return 0;
74 }
75 
func1(int a,int b)76 int func1 (int a, int b) { return a * b; }
func2(int a,int b)77 long func2 (int a, int b) { return (long) a * (long) b; }
func3(long a,long b)78 long func3 (long a, long b) { return a * b; }
func4(long a,long b)79 long long func4 (long a, long b) { return (long long) a * (long long) b; }
func5(long long a,long long b)80 long long func5 (long long a, long long b) { return a * b; }
func6(unsigned int a,unsigned int b)81 unsigned long func6 (unsigned int a, unsigned int b) { return (unsigned long) a * (unsigned long) b; }
func7(unsigned long a,unsigned long b)82 unsigned long long func7 (unsigned long a, unsigned long b) { return (unsigned long long) a * (unsigned long long) b; }
83 
84