1*b15d7792SNikita Popov /*===-- llvm-c/Deprecated.h - Deprecation macro -------------------*- C -*-===*\ 2*b15d7792SNikita Popov |* *| 3*b15d7792SNikita Popov |* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| 4*b15d7792SNikita Popov |* Exceptions. *| 5*b15d7792SNikita Popov |* See https://llvm.org/LICENSE.txt for license information. *| 6*b15d7792SNikita Popov |* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *| 7*b15d7792SNikita Popov |* *| 8*b15d7792SNikita Popov |*===----------------------------------------------------------------------===*| 9*b15d7792SNikita Popov |* *| 10*b15d7792SNikita Popov |* This header declares LLVM_ATTRIBUTE_C_DEPRECATED() macro, which can be *| 11*b15d7792SNikita Popov |* used to deprecate functions in the C interface. *| 12*b15d7792SNikita Popov |* *| 13*b15d7792SNikita Popov \*===----------------------------------------------------------------------===*/ 14*b15d7792SNikita Popov 15*b15d7792SNikita Popov #ifndef LLVM_C_DEPRECATED_H 16*b15d7792SNikita Popov #define LLVM_C_DEPRECATED_H 17*b15d7792SNikita Popov 18*b15d7792SNikita Popov #ifndef __has_feature 19*b15d7792SNikita Popov # define __has_feature(x) 0 20*b15d7792SNikita Popov #endif 21*b15d7792SNikita Popov 22*b15d7792SNikita Popov // This is a variant of LLVM_ATTRIBUTE_DEPRECATED() that is compatible with 23*b15d7792SNikita Popov // C compilers. 24*b15d7792SNikita Popov #if __has_feature(attribute_deprecated_with_message) 25*b15d7792SNikita Popov # define LLVM_ATTRIBUTE_C_DEPRECATED(decl, message) \ 26*b15d7792SNikita Popov decl __attribute__((deprecated(message))) 27*b15d7792SNikita Popov #elif defined(__GNUC__) 28*b15d7792SNikita Popov # define LLVM_ATTRIBUTE_C_DEPRECATED(decl, message) \ 29*b15d7792SNikita Popov decl __attribute__((deprecated)) 30*b15d7792SNikita Popov #elif defined(_MSC_VER) 31*b15d7792SNikita Popov # define LLVM_ATTRIBUTE_C_DEPRECATED(decl, message) \ 32*b15d7792SNikita Popov __declspec(deprecated(message)) decl 33*b15d7792SNikita Popov #else 34*b15d7792SNikita Popov # define LLVM_ATTRIBUTE_C_DEPRECATED(decl, message) \ 35*b15d7792SNikita Popov decl 36*b15d7792SNikita Popov #endif 37*b15d7792SNikita Popov 38*b15d7792SNikita Popov #endif /* LLVM_C_DEPRECATED_H */ 39