1 /* { dg-do run } */
2 /* Based on PR target/27386 testcase by Joerg Wunsch. */
3
4 extern void abort (void);
5 extern void exit (int);
6
7 #if __INT_MAX__ >= 9223372036854775807LL
8 typedef unsigned int uint64_t;
9 #elif __LONG_MAX__ >= 9223372036854775807LL
10 typedef unsigned long int uint64_t;
11 #elif __LONG_LONG_MAX__ >= 9223372036854775807LL
12 typedef unsigned long long int uint64_t;
13 #else
14 int
main(void)15 main (void)
16 {
17 exit (0);
18 }
19 #endif
20
21 uint64_t a, b, c;
22
23 int
foo(uint64_t x,uint64_t y,uint64_t z,int i)24 foo (uint64_t x, uint64_t y, uint64_t z, int i)
25 {
26 a = x;
27 b = y;
28 c = z;
29 return 2 * i;
30 }
31
32 int
main(void)33 main (void)
34 {
35 if (foo (1234512345123ull, 3456734567345ull, 7897897897897ull, 42) != 84)
36 abort ();
37 if (a != 1234512345123ull)
38 abort ();
39 if (b != 3456734567345ull)
40 abort ();
41 if (c != 7897897897897ull)
42 abort ();
43 exit (0);
44 }
45