/* { dg-do run } */ /* Based on PR target/27386 testcase by Joerg Wunsch. */ extern void abort (void); extern void exit (int); #if __INT_MAX__ >= 9223372036854775807LL typedef unsigned int uint64_t; #elif __LONG_MAX__ >= 9223372036854775807LL typedef unsigned long int uint64_t; #elif __LONG_LONG_MAX__ >= 9223372036854775807LL typedef unsigned long long int uint64_t; #else int main (void) { exit (0); } #endif uint64_t a, b, c; int foo (uint64_t x, uint64_t y, uint64_t z, int i) { a = x; b = y; c = z; return 2 * i; } int main (void) { if (foo (1234512345123ull, 3456734567345ull, 7897897897897ull, 42) != 84) abort (); if (a != 1234512345123ull) abort (); if (b != 3456734567345ull) abort (); if (c != 7897897897897ull) abort (); exit (0); }