PR c++/80290
[official-gcc.git] / gcc / testsuite / g++.dg / opt / vrp3.C
blob90162bfe1c009c9272f4e36b39f0c8ecfa6740a2
1 // PR tree-optimization/53239
2 // { dg-do run }
3 // { dg-options "-O2" }
4 // { dg-additional-sources "vrp3-aux.cc" }
6 #include "vrp3.h"
8 struct M
10   M (R m);
11   R val;
12   static int compare (M const &, M const &);
15 inline M const &
16 min (M const & t1, M const & t2)
18   return R::compare (t1.val, t2.val) < 0 ? t1 : t2;
21 M::M (R m)
23   val = m;
27 test (M *x)
29   M n (R (0, 0));
31   for (int i = 0; i < 2; i++)
32     {
33       M p = x[i];
34       n = min (n, p);
35     }
37   if (n.val.r2 != 2 || n.val.r1 != 1)
38     __builtin_abort ();
39   return n;
42 int
43 main ()
45   M x[2] = { M (R (1, 2)), M (R (1, 1)) };
46   test (x);