// RUN: %clang_cc1 -E -x c %s | FileCheck %s // RUN: %clang_cc1 -x c -fsyntax-only %s -verify // RUN: %clang_cc1 -x cpp-output -fsyntax-only -verify %s // expected-no-diagnostics // The preprocessor does not expand macro-identifiers in #pragma directives. // When we preprocess & parse the code, clang expands the macros in directives. // When we parse already preprocessed code, clang still has to expand the // macros in the directives. // This means that we're not always able to parse the preprocessor's output // without preserving the definitions (-dD). #define FACTOR 4 void foo() { // CHECK: #pragma unroll FACTOR #pragma unroll FACTOR for(;;) { } return; }