145
|
1 // PR c++/86524
|
|
2 // { dg-do run { target c++14 } }
|
|
3 // { dg-options "-O2" }
|
|
4
|
|
5 extern "C" void abort ();
|
|
6 typedef __UINTPTR_TYPE__ uintptr_t;
|
|
7
|
|
8 constexpr bool
|
|
9 foo (const int *x, const int *y)
|
|
10 {
|
|
11 if (__builtin_is_constant_evaluated ())
|
|
12 return x < y;
|
|
13 return (uintptr_t) x < (uintptr_t) y;
|
|
14 }
|
|
15
|
|
16 void
|
|
17 bar ()
|
|
18 {
|
|
19 constexpr int x = 0;
|
|
20 static_assert (!(&x < &x));
|
|
21 static_assert (!foo (&x, &x));
|
|
22 }
|
|
23
|
|
24 constexpr void
|
|
25 baz ()
|
|
26 {
|
|
27 constexpr int x = 0;
|
|
28 static_assert (!(&x < &x));
|
|
29 static_assert (!foo (&x, &x));
|
|
30 }
|
|
31
|
|
32 int i, j;
|
|
33
|
|
34 int
|
|
35 main ()
|
|
36 {
|
|
37 bar ();
|
|
38 baz ();
|
|
39 if (!(foo (&i, &j) ^ foo (&j, &i)))
|
|
40 abort ();
|
|
41 }
|