]> gcc.gnu.org Git - gcc.git/blame - gcc/testsuite/g++.dg/cpp0x/constexpr-60049.C
PR c++/92590 - wrong handling of inherited default ctor.
[gcc.git] / gcc / testsuite / g++.dg / cpp0x / constexpr-60049.C
CommitLineData
653fb4a2
MS
1// PR c++/60049 - Right and left shift undefined behavior not an error
2// in a constexpr
3// { dg-do compile { target c++11 } }
4// { dg-additional-options "-Wno-shift-negative-value -Wno-shift-count-negative -Wno-shift-count-overflow" }
5
6constexpr int f1 (int n) { return 1 << n; } // { dg-error "shift expression" }
7constexpr int f2 (int n) { return 1 << n; } // { dg-error "shift expression" }
8ee09943 8constexpr int f3 (int n) { return n << 1; } // { dg-error "shift expression" "" { target c++17_down } }
653fb4a2
MS
9constexpr int f4 (int n) { return 1 >> n; } // { dg-error "shift expression" }
10constexpr int f5 (int n) { return 1 >> n; } // { dg-error "shift expression" }
11
12constexpr int X = __CHAR_BIT__ * sizeof (int) + 1;
13
84fa214d
ML
14constexpr int x1 = f1 (X); // { dg-message "in .constexpr. expansion of" }
15constexpr int x2 = f2 (-1); // { dg-message "in .constexpr. expansion of" }
8ee09943 16constexpr int x3 = f3 (-1); // { dg-message "in .constexpr. expansion of" "" { target c++17_down } }
84fa214d
ML
17constexpr int x4 = f4 (X); // { dg-message "in .constexpr. expansion of" }
18constexpr int x5 = f5 (-1); // { dg-message "in .constexpr. expansion of" }
653fb4a2
MS
19
20constexpr int y1 = 1 << X; // { dg-error "shift expression" }
21constexpr int y2 = 1 << -1; // { dg-error "shift expression" }
8ee09943 22constexpr int y3 = -1 << 1; // { dg-error "shift expression" "" { target c++17_down } }
653fb4a2
MS
23constexpr int y4 = 1 >> X; // { dg-error "shift expression" }
24constexpr int y5 = 1 >> -1; // { dg-error "shift expression" }
This page took 2.861057 seconds and 5 git commands to generate.