Index: clang/include/clang-c/BuildSystem.h =================================================================== --- clang/include/clang-c/BuildSystem.h +++ clang/include/clang-c/BuildSystem.h @@ -14,13 +14,12 @@ #ifndef LLVM_CLANG_C_BUILDSYSTEM_H #define LLVM_CLANG_C_BUILDSYSTEM_H -#include "clang-c/Platform.h" #include "clang-c/CXErrorCode.h" #include "clang-c/CXString.h" +#include "clang-c/ExternC.h" +#include "clang-c/Platform.h" -#ifdef __cplusplus -extern "C" { -#endif +LLVM_CLANG_C_EXTERN_C_BEGIN /** * \defgroup BUILD_SYSTEM Build system utilities @@ -148,9 +147,7 @@ * @} */ -#ifdef __cplusplus -} -#endif +LLVM_CLANG_C_EXTERN_C_END #endif /* CLANG_C_BUILD_SYSTEM_H */ Index: clang/include/clang-c/CXCompilationDatabase.h =================================================================== --- clang/include/clang-c/CXCompilationDatabase.h +++ clang/include/clang-c/CXCompilationDatabase.h @@ -15,12 +15,11 @@ #ifndef LLVM_CLANG_C_CXCOMPILATIONDATABASE_H #define LLVM_CLANG_C_CXCOMPILATIONDATABASE_H -#include "clang-c/Platform.h" #include "clang-c/CXString.h" +#include "clang-c/ExternC.h" +#include "clang-c/Platform.h" -#ifdef __cplusplus -extern "C" { -#endif +LLVM_CLANG_C_EXTERN_C_BEGIN /** \defgroup COMPILATIONDB CompilationDatabase functions * \ingroup CINDEX @@ -169,8 +168,7 @@ * @} */ -#ifdef __cplusplus -} -#endif +LLVM_CLANG_C_EXTERN_C_END + #endif Index: clang/include/clang-c/CXErrorCode.h =================================================================== --- clang/include/clang-c/CXErrorCode.h +++ clang/include/clang-c/CXErrorCode.h @@ -14,11 +14,10 @@ #ifndef LLVM_CLANG_C_CXERRORCODE_H #define LLVM_CLANG_C_CXERRORCODE_H +#include "clang-c/ExternC.h" #include "clang-c/Platform.h" -#ifdef __cplusplus -extern "C" { -#endif +LLVM_CLANG_C_EXTERN_C_BEGIN /** * Error codes returned by libclang routines. @@ -57,8 +56,7 @@ CXError_ASTReadError = 4 }; -#ifdef __cplusplus -} -#endif +LLVM_CLANG_C_EXTERN_C_END + #endif Index: clang/include/clang-c/CXString.h =================================================================== --- clang/include/clang-c/CXString.h +++ clang/include/clang-c/CXString.h @@ -14,11 +14,10 @@ #ifndef LLVM_CLANG_C_CXSTRING_H #define LLVM_CLANG_C_CXSTRING_H +#include "clang-c/ExternC.h" #include "clang-c/Platform.h" -#ifdef __cplusplus -extern "C" { -#endif +LLVM_CLANG_C_EXTERN_C_BEGIN /** * \defgroup CINDEX_STRING String manipulation routines @@ -64,8 +63,7 @@ * @} */ -#ifdef __cplusplus -} -#endif +LLVM_CLANG_C_EXTERN_C_END + #endif Index: clang/include/clang-c/Documentation.h =================================================================== --- clang/include/clang-c/Documentation.h +++ clang/include/clang-c/Documentation.h @@ -15,11 +15,10 @@ #ifndef LLVM_CLANG_C_DOCUMENTATION_H #define LLVM_CLANG_C_DOCUMENTATION_H +#include "clang-c/ExternC.h" #include "clang-c/Index.h" -#ifdef __cplusplus -extern "C" { -#endif +LLVM_CLANG_C_EXTERN_C_BEGIN /** * \defgroup CINDEX_COMMENT Comment introspection @@ -545,10 +544,7 @@ * @} */ - -#ifdef __cplusplus -} -#endif +LLVM_CLANG_C_EXTERN_C_END #endif /* CLANG_C_DOCUMENTATION_H */ Index: clang/include/clang-c/ExternC.h =================================================================== --- /dev/null +++ clang/include/clang-c/ExternC.h @@ -0,0 +1,39 @@ +/*===- clang-c/ExternC.h - Wrapper for 'extern "C"' ---------------*- C -*-===*\ +|* *| +|* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| +|* Exceptions. *| +|* See https://llvm.org/LICENSE.txt for license information. *| +|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *| +|* *| +|*===----------------------------------------------------------------------===*| +|* *| +|* This file defines an 'extern "C"' wrapper. *| +|* *| +\*===----------------------------------------------------------------------===*/ + +#ifndef LLVM_CLANG_C_EXTERN_C_H +#define LLVM_CLANG_C_EXTERN_C_H + +#ifdef _MSC_VER +#define LLVM_CLANG_C_STRING_PROTOTYPES_BEGIN +#define LLVM_CLANG_C_STRING_PROTOTYPES_END +#else +#define LLVM_CLANG_C_STRING_PROTOTYPES_BEGIN \ + _Pragma("clang diagnostic push") \ + _Pragma("clang diagnostic error \"-Wstrict-prototypes\"") +#define LLVM_CLANG_C_STRING_PROTOTYPES_END _Pragma("clang diagnostic pop") +#endif + +#ifdef __cplusplus +#define LLVM_CLANG_C_EXTERN_C_BEGIN \ + extern "C" { \ + LLVM_CLANG_C_STRING_PROTOTYPES_BEGIN +#define LLVM_CLANG_C_EXTERN_C_END \ + LLVM_CLANG_C_STRING_PROTOTYPES_END \ + } +#else +#define LLVM_CLANG_C_EXTERN_C_BEGIN LLVM_CLANG_C_STRING_PROTOTYPES_BEGIN +#define LLVM_CLANG_C_EXTERN_C_END LLVM_CLANG_C_STRING_PROTOTYPES_END +#endif + +#endif Index: clang/include/clang-c/FatalErrorHandler.h =================================================================== --- clang/include/clang-c/FatalErrorHandler.h +++ clang/include/clang-c/FatalErrorHandler.h @@ -10,9 +10,9 @@ #ifndef LLVM_CLANG_C_FATAL_ERROR_HANDLER_H #define LLVM_CLANG_C_FATAL_ERROR_HANDLER_H -#ifdef __cplusplus -extern "C" { -#endif +#include "clang-c/ExternC.h" + +LLVM_CLANG_C_EXTERN_C_BEGIN /** * Installs error handler that prints error message to stderr and calls abort(). @@ -27,7 +27,6 @@ */ void clang_uninstall_llvm_fatal_error_handler(void); -#ifdef __cplusplus -} -#endif +LLVM_CLANG_C_EXTERN_C_END + #endif Index: clang/include/clang-c/Index.h =================================================================== --- clang/include/clang-c/Index.h +++ clang/include/clang-c/Index.h @@ -18,10 +18,11 @@ #include -#include "clang-c/Platform.h" +#include "clang-c/BuildSystem.h" #include "clang-c/CXErrorCode.h" #include "clang-c/CXString.h" -#include "clang-c/BuildSystem.h" +#include "clang-c/ExternC.h" +#include "clang-c/Platform.h" /** * The version constants for the libclang API. @@ -51,9 +52,7 @@ CINDEX_VERSION_MAJOR, \ CINDEX_VERSION_MINOR) -#ifdef __cplusplus -extern "C" { -#endif +LLVM_CLANG_C_EXTERN_C_BEGIN /** \defgroup CINDEX libclang: C Interface to Clang * @@ -6774,7 +6773,6 @@ * @} */ -#ifdef __cplusplus -} -#endif +LLVM_CLANG_C_EXTERN_C_END + #endif Index: clang/include/clang-c/Platform.h =================================================================== --- clang/include/clang-c/Platform.h +++ clang/include/clang-c/Platform.h @@ -14,9 +14,9 @@ #ifndef LLVM_CLANG_C_PLATFORM_H #define LLVM_CLANG_C_PLATFORM_H -#ifdef __cplusplus -extern "C" { -#endif +#include "clang-c/ExternC.h" + +LLVM_CLANG_C_EXTERN_C_BEGIN /* MSVC DLL import/export. */ #ifdef _MSC_VER @@ -39,7 +39,6 @@ #endif #endif -#ifdef __cplusplus -} -#endif +LLVM_CLANG_C_EXTERN_C_END + #endif Index: llvm/include/llvm-c/Analysis.h =================================================================== --- llvm/include/llvm-c/Analysis.h +++ llvm/include/llvm-c/Analysis.h @@ -19,11 +19,10 @@ #ifndef LLVM_C_ANALYSIS_H #define LLVM_C_ANALYSIS_H +#include "llvm-c/ExternC.h" #include "llvm-c/Types.h" -#ifdef __cplusplus -extern "C" { -#endif +LLVM_C_EXTERN_C_BEGIN /** * @defgroup LLVMCAnalysis Analysis @@ -58,8 +57,6 @@ * @} */ -#ifdef __cplusplus -} -#endif +LLVM_C_EXTERN_C_END #endif Index: llvm/include/llvm-c/BitReader.h =================================================================== --- llvm/include/llvm-c/BitReader.h +++ llvm/include/llvm-c/BitReader.h @@ -19,11 +19,10 @@ #ifndef LLVM_C_BITREADER_H #define LLVM_C_BITREADER_H +#include "llvm-c/ExternC.h" #include "llvm-c/Types.h" -#ifdef __cplusplus -extern "C" { -#endif +LLVM_C_EXTERN_C_BEGIN /** * @defgroup LLVMCBitReader Bit Reader @@ -78,8 +77,6 @@ * @} */ -#ifdef __cplusplus -} -#endif +LLVM_C_EXTERN_C_END #endif Index: llvm/include/llvm-c/BitWriter.h =================================================================== --- llvm/include/llvm-c/BitWriter.h +++ llvm/include/llvm-c/BitWriter.h @@ -19,11 +19,10 @@ #ifndef LLVM_C_BITWRITER_H #define LLVM_C_BITWRITER_H +#include "llvm-c/ExternC.h" #include "llvm-c/Types.h" -#ifdef __cplusplus -extern "C" { -#endif +LLVM_C_EXTERN_C_BEGIN /** * @defgroup LLVMCBitWriter Bit Writer @@ -52,8 +51,6 @@ * @} */ -#ifdef __cplusplus -} -#endif +LLVM_C_EXTERN_C_END #endif Index: llvm/include/llvm-c/Comdat.h =================================================================== --- llvm/include/llvm-c/Comdat.h +++ llvm/include/llvm-c/Comdat.h @@ -14,11 +14,10 @@ #ifndef LLVM_C_COMDAT_H #define LLVM_C_COMDAT_H +#include "llvm-c/ExternC.h" #include "llvm-c/Types.h" -#ifdef __cplusplus -extern "C" { -#endif +LLVM_C_EXTERN_C_BEGIN typedef enum { LLVMAnyComdatSelectionKind, ///< The linker may choose any COMDAT. @@ -68,8 +67,6 @@ */ void LLVMSetComdatSelectionKind(LLVMComdatRef C, LLVMComdatSelectionKind Kind); -#ifdef __cplusplus -} -#endif +LLVM_C_EXTERN_C_END #endif Index: llvm/include/llvm-c/Core.h =================================================================== --- llvm/include/llvm-c/Core.h +++ llvm/include/llvm-c/Core.h @@ -16,11 +16,10 @@ #define LLVM_C_CORE_H #include "llvm-c/ErrorHandling.h" +#include "llvm-c/ExternC.h" #include "llvm-c/Types.h" -#ifdef __cplusplus -extern "C" { -#endif +LLVM_C_EXTERN_C_BEGIN /** * @defgroup LLVMC LLVM-C: C interface to LLVM @@ -4090,8 +4089,6 @@ * @} */ -#ifdef __cplusplus -} -#endif +LLVM_C_EXTERN_C_END #endif /* LLVM_C_CORE_H */ Index: llvm/include/llvm-c/DebugInfo.h =================================================================== --- llvm/include/llvm-c/DebugInfo.h +++ llvm/include/llvm-c/DebugInfo.h @@ -17,10 +17,9 @@ #define LLVM_C_DEBUGINFO_H #include "llvm-c/Core.h" +#include "llvm-c/ExternC.h" -#ifdef __cplusplus -extern "C" { -#endif +LLVM_C_EXTERN_C_BEGIN /** * Debug info flags. @@ -1353,8 +1352,6 @@ */ LLVMMetadataKind LLVMGetMetadataKind(LLVMMetadataRef Metadata); -#ifdef __cplusplus -} /* end extern "C" */ -#endif +LLVM_C_EXTERN_C_END #endif Index: llvm/include/llvm-c/Disassembler.h =================================================================== --- llvm/include/llvm-c/Disassembler.h +++ llvm/include/llvm-c/Disassembler.h @@ -16,6 +16,7 @@ #define LLVM_C_DISASSEMBLER_H #include "llvm-c/DisassemblerTypes.h" +#include "llvm-c/ExternC.h" /** * @defgroup LLVMCDisassembler Disassembler @@ -24,9 +25,7 @@ * @{ */ -#ifdef __cplusplus -extern "C" { -#endif /* !defined(__cplusplus) */ +LLVM_C_EXTERN_C_BEGIN /** * Create a disassembler for the TripleName. Symbolic disassembly is supported @@ -106,8 +105,6 @@ * @} */ -#ifdef __cplusplus -} -#endif /* !defined(__cplusplus) */ +LLVM_C_EXTERN_C_END #endif /* LLVM_C_DISASSEMBLER_H */ Index: llvm/include/llvm-c/Error.h =================================================================== --- llvm/include/llvm-c/Error.h +++ llvm/include/llvm-c/Error.h @@ -14,9 +14,9 @@ #ifndef LLVM_C_ERROR_H #define LLVM_C_ERROR_H -#ifdef __cplusplus -extern "C" { -#endif +#include "llvm-c/ExternC.h" + +LLVM_C_EXTERN_C_BEGIN #define LLVMErrorSuccess 0 @@ -62,8 +62,6 @@ */ LLVMErrorTypeId LLVMGetStringErrorTypeId(void); -#ifdef __cplusplus -} -#endif +LLVM_C_EXTERN_C_END #endif Index: llvm/include/llvm-c/ErrorHandling.h =================================================================== --- llvm/include/llvm-c/ErrorHandling.h +++ llvm/include/llvm-c/ErrorHandling.h @@ -14,9 +14,9 @@ #ifndef LLVM_C_ERROR_HANDLING_H #define LLVM_C_ERROR_HANDLING_H -#ifdef __cplusplus -extern "C" { -#endif +#include "llvm-c/ExternC.h" + +LLVM_C_EXTERN_C_BEGIN typedef void (*LLVMFatalErrorHandler)(const char *Reason); @@ -42,8 +42,6 @@ */ void LLVMEnablePrettyStackTrace(void); -#ifdef __cplusplus -} -#endif +LLVM_C_EXTERN_C_END #endif Index: llvm/include/llvm-c/ExecutionEngine.h =================================================================== --- llvm/include/llvm-c/ExecutionEngine.h +++ llvm/include/llvm-c/ExecutionEngine.h @@ -19,13 +19,12 @@ #ifndef LLVM_C_EXECUTIONENGINE_H #define LLVM_C_EXECUTIONENGINE_H +#include "llvm-c/ExternC.h" #include "llvm-c/Target.h" #include "llvm-c/TargetMachine.h" #include "llvm-c/Types.h" -#ifdef __cplusplus -extern "C" { -#endif +LLVM_C_EXTERN_C_BEGIN /** * @defgroup LLVMCExecutionEngine Execution Engine @@ -193,8 +192,6 @@ * @} */ -#ifdef __cplusplus -} -#endif /* defined(__cplusplus) */ +LLVM_C_EXTERN_C_END #endif Index: llvm/include/llvm-c/ExternC.h =================================================================== --- /dev/null +++ llvm/include/llvm-c/ExternC.h @@ -0,0 +1,39 @@ +/*===- llvm-c/ExternC.h - Wrapper for 'extern "C"' ----------------*- C -*-===*\ +|* *| +|* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| +|* Exceptions. *| +|* See https://llvm.org/LICENSE.txt for license information. *| +|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *| +|* *| +|*===----------------------------------------------------------------------===*| +|* *| +|* This file defines an 'extern "C"' wrapper *| +|* *| +\*===----------------------------------------------------------------------===*/ + +#ifndef LLVM_C_EXTERN_C_H +#define LLVM_C_EXTERN_C_H + +#ifdef _MSC_VER +#define LLVM_C_STRING_PROTOTYPES_BEGIN +#define LLVM_C_STRING_PROTOTYPES_END +#else +#define LLVM_C_STRING_PROTOTYPES_BEGIN \ + _Pragma("clang diagnostic push") \ + _Pragma("clang diagnostic error \"-Wstrict-prototypes\"") +#define LLVM_C_STRING_PROTOTYPES_END _Pragma("clang diagnostic pop") +#endif + +#ifdef __cplusplus +#define LLVM_C_EXTERN_C_BEGIN \ + extern "C" { \ + LLVM_C_STRING_PROTOTYPES_BEGIN +#define LLVM_C_EXTERN_C_END \ + LLVM_C_STRING_PROTOTYPES_END \ + } +#else +#define LLVM_C_EXTERN_C_BEGIN LLVM_C_STRING_PROTOTYPES_BEGIN +#define LLVM_C_EXTERN_C_END LLVM_C_STRING_PROTOTYPES_END +#endif + +#endif Index: llvm/include/llvm-c/IRReader.h =================================================================== --- llvm/include/llvm-c/IRReader.h +++ llvm/include/llvm-c/IRReader.h @@ -14,11 +14,10 @@ #ifndef LLVM_C_IRREADER_H #define LLVM_C_IRREADER_H +#include "llvm-c/ExternC.h" #include "llvm-c/Types.h" -#ifdef __cplusplus -extern "C" { -#endif +LLVM_C_EXTERN_C_BEGIN /** * Read LLVM IR from a memory buffer and convert it into an in-memory Module @@ -33,8 +32,6 @@ LLVMMemoryBufferRef MemBuf, LLVMModuleRef *OutM, char **OutMessage); -#ifdef __cplusplus -} -#endif +LLVM_C_EXTERN_C_END #endif Index: llvm/include/llvm-c/Initialization.h =================================================================== --- llvm/include/llvm-c/Initialization.h +++ llvm/include/llvm-c/Initialization.h @@ -16,11 +16,10 @@ #ifndef LLVM_C_INITIALIZATION_H #define LLVM_C_INITIALIZATION_H +#include "llvm-c/ExternC.h" #include "llvm-c/Types.h" -#ifdef __cplusplus -extern "C" { -#endif +LLVM_C_EXTERN_C_BEGIN /** * @defgroup LLVMCInitialization Initialization Routines @@ -49,8 +48,6 @@ * @} */ -#ifdef __cplusplus -} -#endif +LLVM_C_EXTERN_C_END #endif Index: llvm/include/llvm-c/LinkTimeOptimizer.h =================================================================== --- llvm/include/llvm-c/LinkTimeOptimizer.h +++ llvm/include/llvm-c/LinkTimeOptimizer.h @@ -15,9 +15,9 @@ #ifndef LLVM_C_LINKTIMEOPTIMIZER_H #define LLVM_C_LINKTIMEOPTIMIZER_H -#ifdef __cplusplus -extern "C" { -#endif +#include "llvm-c/ExternC.h" + +LLVM_C_EXTERN_C_BEGIN /** * @defgroup LLVMCLinkTimeOptimizer Link Time Optimization @@ -61,8 +61,6 @@ * @} */ -#ifdef __cplusplus -} -#endif + LLVM_C_EXTERN_C_END #endif Index: llvm/include/llvm-c/Linker.h =================================================================== --- llvm/include/llvm-c/Linker.h +++ llvm/include/llvm-c/Linker.h @@ -14,11 +14,10 @@ #ifndef LLVM_C_LINKER_H #define LLVM_C_LINKER_H +#include "llvm-c/ExternC.h" #include "llvm-c/Types.h" -#ifdef __cplusplus -extern "C" { -#endif +LLVM_C_EXTERN_C_BEGIN /* This enum is provided for backwards-compatibility only. It has no effect. */ typedef enum { @@ -34,8 +33,6 @@ */ LLVMBool LLVMLinkModules2(LLVMModuleRef Dest, LLVMModuleRef Src); -#ifdef __cplusplus -} -#endif +LLVM_C_EXTERN_C_END #endif Index: llvm/include/llvm-c/Object.h =================================================================== --- llvm/include/llvm-c/Object.h +++ llvm/include/llvm-c/Object.h @@ -19,12 +19,11 @@ #ifndef LLVM_C_OBJECT_H #define LLVM_C_OBJECT_H +#include "llvm-c/ExternC.h" #include "llvm-c/Types.h" #include "llvm/Config/llvm-config.h" -#ifdef __cplusplus -extern "C" { -#endif +LLVM_C_EXTERN_C_BEGIN /** * @defgroup LLVMCObject Object file reading and writing @@ -226,8 +225,6 @@ * @} */ -#ifdef __cplusplus -} -#endif /* defined(__cplusplus) */ +LLVM_C_EXTERN_C_END #endif Index: llvm/include/llvm-c/OrcBindings.h =================================================================== --- llvm/include/llvm-c/OrcBindings.h +++ llvm/include/llvm-c/OrcBindings.h @@ -23,12 +23,11 @@ #define LLVM_C_ORCBINDINGS_H #include "llvm-c/Error.h" +#include "llvm-c/ExternC.h" #include "llvm-c/Object.h" #include "llvm-c/TargetMachine.h" -#ifdef __cplusplus -extern "C" { -#endif +LLVM_C_EXTERN_C_BEGIN typedef struct LLVMOrcOpaqueJITStack *LLVMOrcJITStackRef; typedef uint64_t LLVMOrcModuleHandle; @@ -165,8 +164,6 @@ */ void LLVMOrcUnregisterJITEventListener(LLVMOrcJITStackRef JITStack, LLVMJITEventListenerRef L); -#ifdef __cplusplus -} -#endif /* extern "C" */ +LLVM_C_EXTERN_C_END #endif /* LLVM_C_ORCBINDINGS_H */ Index: llvm/include/llvm-c/Remarks.h =================================================================== --- llvm/include/llvm-c/Remarks.h +++ llvm/include/llvm-c/Remarks.h @@ -15,14 +15,16 @@ #ifndef LLVM_C_REMARKS_H #define LLVM_C_REMARKS_H +#include "llvm-c/ExternC.h" #include "llvm-c/Types.h" #ifdef __cplusplus #include -extern "C" { #else #include #endif /* !defined(__cplusplus) */ +LLVM_C_EXTERN_C_BEGIN + /** * @defgroup LLVMCREMARKS Remarks * @ingroup LLVMC @@ -337,8 +339,6 @@ * @} // endgoup LLVMCREMARKS */ -#ifdef __cplusplus -} -#endif /* !defined(__cplusplus) */ +LLVM_C_EXTERN_C_END #endif /* LLVM_C_REMARKS_H */ Index: llvm/include/llvm-c/Support.h =================================================================== --- llvm/include/llvm-c/Support.h +++ llvm/include/llvm-c/Support.h @@ -15,11 +15,10 @@ #define LLVM_C_SUPPORT_H #include "llvm-c/DataTypes.h" +#include "llvm-c/ExternC.h" #include "llvm-c/Types.h" -#ifdef __cplusplus -extern "C" { -#endif +LLVM_C_EXTERN_C_BEGIN /** * This function permanently loads the dynamic library at the given path. @@ -58,8 +57,6 @@ */ void LLVMAddSymbol(const char *symbolName, void *symbolValue); -#ifdef __cplusplus -} -#endif +LLVM_C_EXTERN_C_END #endif Index: llvm/include/llvm-c/Target.h =================================================================== --- llvm/include/llvm-c/Target.h +++ llvm/include/llvm-c/Target.h @@ -19,12 +19,11 @@ #ifndef LLVM_C_TARGET_H #define LLVM_C_TARGET_H +#include "llvm-c/ExternC.h" #include "llvm-c/Types.h" #include "llvm/Config/llvm-config.h" -#ifdef __cplusplus -extern "C" { -#endif +LLVM_C_EXTERN_C_BEGIN /** * @defgroup LLVMCTarget Target information @@ -288,8 +287,6 @@ * @} */ -#ifdef __cplusplus -} -#endif /* defined(__cplusplus) */ +LLVM_C_EXTERN_C_END #endif Index: llvm/include/llvm-c/TargetMachine.h =================================================================== --- llvm/include/llvm-c/TargetMachine.h +++ llvm/include/llvm-c/TargetMachine.h @@ -19,12 +19,12 @@ #ifndef LLVM_C_TARGETMACHINE_H #define LLVM_C_TARGETMACHINE_H +#include "llvm-c/ExternC.h" #include "llvm-c/Target.h" #include "llvm-c/Types.h" -#ifdef __cplusplus -extern "C" { -#endif +LLVM_C_EXTERN_C_BEGIN + typedef struct LLVMOpaqueTargetMachine *LLVMTargetMachineRef; typedef struct LLVMTarget *LLVMTargetRef; @@ -156,8 +156,6 @@ /** Adds the target-specific analysis passes to the pass manager. */ void LLVMAddAnalysisPasses(LLVMTargetMachineRef T, LLVMPassManagerRef PM); -#ifdef __cplusplus -} -#endif +LLVM_C_EXTERN_C_END #endif Index: llvm/include/llvm-c/Transforms/AggressiveInstCombine.h =================================================================== --- llvm/include/llvm-c/Transforms/AggressiveInstCombine.h +++ llvm/include/llvm-c/Transforms/AggressiveInstCombine.h @@ -15,11 +15,10 @@ #ifndef LLVM_C_TRANSFORMS_AGGRESSIVEINSTCOMBINE_H #define LLVM_C_TRANSFORMS_AGGRESSIVEINSTCOMBINE_H +#include "llvm-c/ExternC.h" #include "llvm-c/Types.h" -#ifdef __cplusplus -extern "C" { -#endif +LLVM_C_EXTERN_C_BEGIN /** * @defgroup LLVMCTransformsAggressiveInstCombine Aggressive Instruction Combining transformations @@ -35,9 +34,7 @@ * @} */ -#ifdef __cplusplus -} -#endif /* defined(__cplusplus) */ +LLVM_C_EXTERN_C_END #endif Index: llvm/include/llvm-c/Transforms/Coroutines.h =================================================================== --- llvm/include/llvm-c/Transforms/Coroutines.h +++ llvm/include/llvm-c/Transforms/Coroutines.h @@ -19,11 +19,10 @@ #ifndef LLVM_C_TRANSFORMS_COROUTINES_H #define LLVM_C_TRANSFORMS_COROUTINES_H +#include "llvm-c/ExternC.h" #include "llvm-c/Types.h" -#ifdef __cplusplus -extern "C" { -#endif +LLVM_C_EXTERN_C_BEGIN /** * @defgroup LLVMCTransformsCoroutines Coroutine transformations @@ -48,8 +47,6 @@ * @} */ -#ifdef __cplusplus -} -#endif /* defined(__cplusplus) */ +LLVM_C_EXTERN_C_END #endif Index: llvm/include/llvm-c/Transforms/IPO.h =================================================================== --- llvm/include/llvm-c/Transforms/IPO.h +++ llvm/include/llvm-c/Transforms/IPO.h @@ -15,11 +15,10 @@ #ifndef LLVM_C_TRANSFORMS_IPO_H #define LLVM_C_TRANSFORMS_IPO_H +#include "llvm-c/ExternC.h" #include "llvm-c/Types.h" -#ifdef __cplusplus -extern "C" { -#endif +LLVM_C_EXTERN_C_BEGIN /** * @defgroup LLVMCTransformsIPO Interprocedural transformations @@ -95,8 +94,6 @@ * @} */ -#ifdef __cplusplus -} -#endif /* defined(__cplusplus) */ +LLVM_C_EXTERN_C_END #endif Index: llvm/include/llvm-c/Transforms/InstCombine.h =================================================================== --- llvm/include/llvm-c/Transforms/InstCombine.h +++ llvm/include/llvm-c/Transforms/InstCombine.h @@ -15,11 +15,10 @@ #ifndef LLVM_C_TRANSFORMS_INSTCOMBINE_H #define LLVM_C_TRANSFORMS_INSTCOMBINE_H +#include "llvm-c/ExternC.h" #include "llvm-c/Types.h" -#ifdef __cplusplus -extern "C" { -#endif +LLVM_C_EXTERN_C_BEGIN /** * @defgroup LLVMCTransformsInstCombine Instruction Combining transformations @@ -35,9 +34,7 @@ * @} */ -#ifdef __cplusplus -} -#endif /* defined(__cplusplus) */ +LLVM_C_EXTERN_C_END #endif Index: llvm/include/llvm-c/Transforms/PassManagerBuilder.h =================================================================== --- llvm/include/llvm-c/Transforms/PassManagerBuilder.h +++ llvm/include/llvm-c/Transforms/PassManagerBuilder.h @@ -14,13 +14,12 @@ #ifndef LLVM_C_TRANSFORMS_PASSMANAGERBUILDER_H #define LLVM_C_TRANSFORMS_PASSMANAGERBUILDER_H +#include "llvm-c/ExternC.h" #include "llvm-c/Types.h" typedef struct LLVMOpaquePassManagerBuilder *LLVMPassManagerBuilderRef; -#ifdef __cplusplus -extern "C" { -#endif +LLVM_C_EXTERN_C_BEGIN /** * @defgroup LLVMCTransformsPassManagerBuilder Pass manager builder @@ -83,8 +82,6 @@ * @} */ -#ifdef __cplusplus -} -#endif +LLVM_C_EXTERN_C_END #endif Index: llvm/include/llvm-c/Transforms/Scalar.h =================================================================== --- llvm/include/llvm-c/Transforms/Scalar.h +++ llvm/include/llvm-c/Transforms/Scalar.h @@ -19,11 +19,10 @@ #ifndef LLVM_C_TRANSFORMS_SCALAR_H #define LLVM_C_TRANSFORMS_SCALAR_H +#include "llvm-c/ExternC.h" #include "llvm-c/Types.h" -#ifdef __cplusplus -extern "C" { -#endif +LLVM_C_EXTERN_C_BEGIN /** * @defgroup LLVMCTransformsScalar Scalar transformations @@ -166,8 +165,6 @@ * @} */ -#ifdef __cplusplus -} -#endif /* defined(__cplusplus) */ +LLVM_C_EXTERN_C_END #endif Index: llvm/include/llvm-c/Transforms/Utils.h =================================================================== --- llvm/include/llvm-c/Transforms/Utils.h +++ llvm/include/llvm-c/Transforms/Utils.h @@ -19,11 +19,10 @@ #ifndef LLVM_C_TRANSFORMS_UTILS_H #define LLVM_C_TRANSFORMS_UTILS_H +#include "llvm-c/ExternC.h" #include "llvm-c/Types.h" -#ifdef __cplusplus -extern "C" { -#endif +LLVM_C_EXTERN_C_BEGIN /** * @defgroup LLVMCTransformsUtils Transformation Utilities @@ -45,9 +44,7 @@ * @} */ -#ifdef __cplusplus -} -#endif /* defined(__cplusplus) */ +LLVM_C_EXTERN_C_END #endif Index: llvm/include/llvm-c/Transforms/Vectorize.h =================================================================== --- llvm/include/llvm-c/Transforms/Vectorize.h +++ llvm/include/llvm-c/Transforms/Vectorize.h @@ -20,11 +20,10 @@ #ifndef LLVM_C_TRANSFORMS_VECTORIZE_H #define LLVM_C_TRANSFORMS_VECTORIZE_H +#include "llvm-c/ExternC.h" #include "llvm-c/Types.h" -#ifdef __cplusplus -extern "C" { -#endif +LLVM_C_EXTERN_C_BEGIN /** * @defgroup LLVMCTransformsVectorize Vectorization transformations @@ -43,8 +42,6 @@ * @} */ -#ifdef __cplusplus -} -#endif /* defined(__cplusplus) */ +LLVM_C_EXTERN_C_END #endif Index: llvm/include/llvm-c/Types.h =================================================================== --- llvm/include/llvm-c/Types.h +++ llvm/include/llvm-c/Types.h @@ -15,10 +15,9 @@ #define LLVM_C_TYPES_H #include "llvm-c/DataTypes.h" +#include "llvm-c/ExternC.h" -#ifdef __cplusplus -extern "C" { -#endif +LLVM_C_EXTERN_C_BEGIN /** * @defgroup LLVMCSupportTypes Types and Enumerations @@ -172,8 +171,6 @@ * @} */ -#ifdef __cplusplus -} -#endif +LLVM_C_EXTERN_C_END #endif Index: llvm/include/llvm-c/lto.h =================================================================== --- llvm/include/llvm-c/lto.h +++ llvm/include/llvm-c/lto.h @@ -16,6 +16,8 @@ #ifndef LLVM_C_LTO_H #define LLVM_C_LTO_H +#include "llvm-c/ExternC.h" + #ifdef __cplusplus #include #else @@ -98,9 +100,7 @@ /** opaque reference to a thin code generator */ typedef struct LLVMOpaqueThinLTOCodeGenerator *thinlto_code_gen_t; -#ifdef __cplusplus -extern "C" { -#endif +LLVM_C_EXTERN_C_BEGIN /** * Returns a printable string. @@ -900,8 +900,6 @@ * @} // endgroup LLVMCTLTO_CACHING */ -#ifdef __cplusplus -} -#endif +LLVM_C_EXTERN_C_END #endif /* LLVM_C_LTO_H */