// RUN: %clang_cc1 %s -fsyntax-only -fdouble-square-bracket-attributes -verify void g() { if (1) [[clang::likely]] {} } void m() { [[clang::likely]] int x = 42; // expected-error {{'likely' attribute cannot be applied to a declaration}} if (x) [[clang::unlikely]] {} if (x) { [[clang::unlikely]]; } switch (x) { case 1: [[clang::likely]] {} break; [[clang::likely]] case 2 : case 3 : {} break; } do { [[clang::unlikely]]; } while (x); do [[clang::unlikely]] {} while (x); do { // expected-note {{to match this 'do'}} } [[clang::unlikely]] while (x); // expected-error {{expected 'while' in do/while loop}} for (;;) [[clang::unlikely]] {} for (;;) { [[clang::unlikely]]; } while (x) [[clang::unlikely]] {} while (x) { [[clang::unlikely]]; } if (x) goto lbl; // FIXME: allow the attribute on the label [[clang::unlikely]] lbl : // expected-error {{'unlikely' attribute cannot be applied to a declaration}} [[clang::likely]] x = x + 1; [[clang::likely]]++ x; }