brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.5 KiB · 410ed9a Raw
133 lines · cpp
1// RUN: %clang_cc1 -std=c++17 -fcxx-exceptions -fexceptions -fsyntax-only -Wunreachable-code-aggressive -fblocks -verify %s2 3int j;4int bar();5int test1() {6  for (int i = 0;7       i != 10;8       ++i) {  // expected-warning {{loop will run at most once (loop increment never executed)}}9    if (j == 23) // missing {}'s10      bar();11      return 1;12  }13  return 0;14  return 1; // expected-warning {{will never be executed}}15}16 17int test1_B() {18  for (int i = 0;19       i != 10;20       ++i) {  // expected-warning {{loop will run at most once (loop increment never executed)}}21    if (j == 23) // missing {}'s22      bar();23      return 1;24  }25  return 0;26  return bar(); // expected-warning {{will never be executed}}27}28 29void test2(int i) {30  switch (i) {31  case 0:32    break;33    bar();     // expected-warning {{will never be executed}}34  case 2:35    switch (i) {36    default:37    a: goto a;38    }39    bar();     // expected-warning {{will never be executed}}40  }41  b: goto b;42  bar();       // expected-warning {{will never be executed}}43}44 45void test3() {46  ^{ return;47     bar();    // expected-warning {{will never be executed}}48  }();49  while (++j) {50    continue;51    bar();     // expected-warning {{will never be executed}}52  }53}54 55// PR 6130 - Don't warn about bogus unreachable code with throw's and56// temporary objects.57class PR6130 {58public:59  PR6130();60  ~PR6130();61};62 63int pr6130(unsigned i) {64  switch(i) {65    case 0: return 1;66    case 1: return 2;67    default:68      throw PR6130(); // no-warning69  }70}71 72extern "C" void foo(void);73extern "C" __attribute__((weak)) decltype(foo) foo;74 75void weak_redecl() {76  if (foo)77    return;78  bar(); // no-warning79}80 81namespace pr52103 {82 83void g(int a);84 85void f(int a) {86  if (a > 4) [[ likely ]] { // no-warning87    return;88  }89 90  if (a > 4) [[ unlikely ]] { // no-warning91    return;92 93    return; // expected-warning {{will never be executed}}94  }95 96  [[clang::musttail]] return g(a); // no-warning97 98  [[clang::musttail]] return g(a); // expected-warning {{will never be executed}}99}100 101}102 103namespace gh57123 {104  bool foo() {105    if constexpr (true) {106      if (true)107        return true;108      else109        return false; // expected-warning {{will never be executed}}110    }111    else112      return false; // no-warning113  }114 115  bool bar() {116    if (true)117      return true;118    else119      return false; // expected-warning {{will never be executed}}120  }121 122  bool baz() {123    if constexpr (true)124      return true;125    else {126      if (true)127        return true;128      else129        return false; // expected-warning {{will never be executed}}130    }131  }132}133