// RUN: %clang_cc1 -fsyntax-only -verify -fcxx-exceptions -std=c++17 %s // expected-no-diagnostics //PR9463 int subfun(const char *text) { const char *tmp = text; return 0; } void fun(const char* text) { int count = 0; bool check = true; if (check) { const char *end = text; if (check) { do { if (check) { count = subfun(end); goto end; } check = !check; } while (check); } // also works, after commenting following line of source code int e = subfun(end); } end: if (check) ++count; } const char *text = "some text"; int main() { const char *ptr = text; fun(ptr); return 0; } void asm_goto_try_catch() { try { __label__ label; asm goto("" : : : : label); label:; } catch(...) { __label__ label; asm goto("" : : : : label); label:; }; if constexpr(false) { __label__ label; asm goto("" : : : : label); label:; } }