Mercurial > hg > CbC > CbC_llvm
view clang/test/Preprocessor/_Pragma-in-macro-arg.c @ 236:c4bab56944e8 llvm-original
LLVM 16
author | kono |
---|---|
date | Wed, 09 Nov 2022 17:45:10 +0900 |
parents | 1d019706d866 |
children |
line wrap: on
line source
// RUN: %clang_cc1 %s -verify -Wconversion // Don't crash (rdar://11168596) #define A(desc) _Pragma("clang diagnostic push") _Pragma("clang diagnostic ignored \"-Wparentheses\"") _Pragma("clang diagnostic pop") #define B(desc) A(desc) B(_Pragma("clang diagnostic ignored \"-Wparentheses\"")) #define EMPTY(x) #define INACTIVE(x) EMPTY(x) #define ID(x) x #define ACTIVE(x) ID(x) // This should be ignored.. INACTIVE(_Pragma("clang diagnostic ignored \"-Wconversion\"")) #define IGNORE_CONV _Pragma("clang diagnostic ignored \"-Wconversion\"") _Pragma("clang diagnostic ignored \"-Wconversion\"") // ..as should this. INACTIVE(IGNORE_CONV) #define IGNORE_POPPUSH(Pop, Push, W, D) Push W D Pop IGNORE_POPPUSH(_Pragma("clang diagnostic pop"), _Pragma("clang diagnostic push"), _Pragma("clang diagnostic ignored \"-Wconversion\""), int q = (double)1.0); int x1 = (double)1.0; // expected-warning {{implicit conversion}} ACTIVE(_Pragma) ("clang diagnostic ignored \"-Wconversion\"")) // expected-error {{_Pragma takes a parenthesized string literal}} \ expected-error {{expected identifier or '('}} expected-error {{expected ')'}} expected-note {{to match this '('}} // This should disable the warning. ACTIVE(IGNORE_CONV) int x2 = (double)1.0;