xref: /llvm-project/llvm/include/llvm-c/Deprecated.h (revision b15d77928e2b44d1667391d4650e61f1ab76bded)
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