// RUN: %clang_cc1 -triple x86_64-windows-msvc -std=gnu23 -fdefer-ts -fsyntax-only -fblocks -verify %s typedef void** jmp_buf; typedef void** sigjmp_buf; int setjmp(jmp_buf env); int _setjmp(jmp_buf env); int sigsetjmp(sigjmp_buf env, int savesigs); int __sigsetjmp(sigjmp_buf env, int savesigs); void longjmp(jmp_buf env, int val); void _longjmp(jmp_buf env, int val); void siglongjmp(sigjmp_buf env, int val); jmp_buf x; sigjmp_buf y; void f() { _Defer { __builtin_setjmp(x); // expected-error {{cannot use '__builtin_setjmp' inside a defer statement}} __builtin_longjmp(x, 1); // expected-error {{cannot use '__builtin_longjmp' inside a defer statement}} setjmp(x); // expected-error {{cannot use 'setjmp' inside a defer statement}} _setjmp(x); // expected-error {{cannot use '_setjmp' inside a defer statement}} sigsetjmp(y, 0); // expected-error {{cannot use 'sigsetjmp' inside a defer statement}} __sigsetjmp(y, 0); // expected-error {{cannot use '__sigsetjmp' inside a defer statement}} longjmp(x, 0); // expected-error {{cannot use 'longjmp' inside a defer statement}} _longjmp(x, 0); // expected-error {{cannot use '_longjmp' inside a defer statement}} siglongjmp(y, 0); // expected-error {{cannot use 'siglongjmp' inside a defer statement}} (void) ^{ __builtin_setjmp(x); __builtin_longjmp(x, 1); setjmp(x); _setjmp(x); sigsetjmp(y, 0); __sigsetjmp(y, 0); longjmp(x, 0); _longjmp(x, 0); siglongjmp(y, 0); _Defer { __builtin_setjmp(x); // expected-error {{cannot use '__builtin_setjmp' inside a defer statement}} __builtin_longjmp(x, 1); // expected-error {{cannot use '__builtin_longjmp' inside a defer statement}} setjmp(x); // expected-error {{cannot use 'setjmp' inside a defer statement}} _setjmp(x); // expected-error {{cannot use '_setjmp' inside a defer statement}} sigsetjmp(y, 0); // expected-error {{cannot use 'sigsetjmp' inside a defer statement}} __sigsetjmp(y, 0); // expected-error {{cannot use '__sigsetjmp' inside a defer statement}} longjmp(x, 0); // expected-error {{cannot use 'longjmp' inside a defer statement}} _longjmp(x, 0); // expected-error {{cannot use '_longjmp' inside a defer statement}} siglongjmp(y, 0); // expected-error {{cannot use 'siglongjmp' inside a defer statement}} } }; } }