1 // PR c++/86767 2 // { dg-do compile { target c++14 } } 3 4 constexpr int fn0()5fn0 () noexcept 6 { 7 int r = 0; 8 for (int i = 0; i < 10; ++i) 9 { 10 continue; 11 r++; 12 for (int j = 0; j < 10; ++j ) 13 { 14 } 15 } 16 return r; 17 } 18 static_assert (fn0 () == 0, ""); 19 20 constexpr int fn1()21fn1 () noexcept 22 { 23 int r = 0; 24 for (int i = 0; i < 10; ++i) 25 for (int j = 0; j < 10; ++j) 26 { 27 continue; 28 r++; 29 } 30 return r; 31 } 32 static_assert (fn1 () == 0, ""); 33 34 constexpr int fn2()35fn2 () noexcept 36 { 37 int r = 0; 38 for (int i = 0; i < 10; ++i) 39 { 40 continue; 41 r++; 42 } 43 return r; 44 } 45 static_assert (fn2 () == 0, ""); 46 47 constexpr int fn3()48fn3 () noexcept 49 { 50 int r = 0; 51 for (int i = 0; i < 10; ++i) 52 { 53 continue; 54 r++; 55 while (1) 56 { 57 } 58 } 59 return r; 60 } 61 static_assert (fn3 () == 0, ""); 62 63 constexpr int fn4()64fn4 () noexcept 65 { 66 for (int i = 0; i < 10; ++i) 67 { 68 switch (i) 69 { 70 case 5: 71 return i; 72 default: 73 continue; 74 } 75 while (1) 76 { 77 } 78 } 79 return 0; 80 } 81 static_assert (fn4 () == 5, ""); 82 83 constexpr int fn5()84fn5 () noexcept 85 { 86 for (int i = 0; i < 10; ++i) 87 { 88 switch (i) 89 { 90 case 0: 91 case 1: 92 case 2: 93 case 3: 94 case 4: 95 continue; 96 default: 97 return i; 98 } 99 while (1) 100 { 101 } 102 } 103 return 0; 104 } 105 static_assert (fn5 () == 5, ""); 106 107 constexpr int fn6()108fn6 () noexcept 109 { 110 int r = 0; 111 for (int i = 0; i < 10; ++i) 112 { 113 continue; 114 for (int j = 0; j < 10; ++j ) 115 r++; 116 } 117 return r; 118 } 119 static_assert (fn6 () == 0, ""); 120