blob: af0a3d1e4e06bb8d9e5afcc406b09b104a580bc7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
/* PR tree-optimization/113334 */
/* { dg-do run { target bitint } } */
/* { dg-options "-std=c23 -pedantic-errors" } */
/* { dg-skip-if "" { ! run_expensive_tests } { "*" } { "-O0" "-O2" } } */
/* { dg-skip-if "" { ! run_expensive_tests } { "-flto" } { "" } } */
#if __BITINT_MAXWIDTH__ >= 384
__attribute__((noipa)) _BitInt(384)
foo (int s)
{
_BitInt(384) z = (-(unsigned _BitInt(384)) 4) >> s;
return z;
}
#endif
int
main ()
{
#if __BITINT_MAXWIDTH__ >= 384
if (foo (59) != 0x1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffwb)
__builtin_abort ();
if (foo (0) != -4wb)
__builtin_abort ();
if (foo (1) != 0x7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffewb)
__builtin_abort ();
if (foo (11) != 0x001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffwb)
__builtin_abort ();
if (foo (123) != 0x1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffwb)
__builtin_abort ();
#endif
return 0;
}
|