diff --git a/include/llvm-c/Analysis.h b/include/llvm-c/Analysis.h index cb9e8ece3c5..270b145a4d2 100644 --- a/include/llvm-c/Analysis.h +++ b/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 @@ void LLVMViewFunctionCFGOnly(LLVMValueRef Fn); * @} */ -#ifdef __cplusplus -} -#endif +LLVM_C_EXTERN_C_END #endif diff --git a/include/llvm-c/BitReader.h b/include/llvm-c/BitReader.h index b307ee979f8..012c0e63d3b 100644 --- a/include/llvm-c/BitReader.h +++ b/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 @@ LLVMBool LLVMGetBitcodeModule2(LLVMMemoryBufferRef MemBuf, LLVMModuleRef *OutM); * @} */ -#ifdef __cplusplus -} -#endif +LLVM_C_EXTERN_C_END #endif diff --git a/include/llvm-c/BitWriter.h b/include/llvm-c/BitWriter.h index 187051555b9..ea84b6593d1 100644 --- a/include/llvm-c/BitWriter.h +++ b/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 @@ LLVMMemoryBufferRef LLVMWriteBitcodeToMemoryBuffer(LLVMModuleRef M); * @} */ -#ifdef __cplusplus -} -#endif +LLVM_C_EXTERN_C_END #endif diff --git a/include/llvm-c/Comdat.h b/include/llvm-c/Comdat.h index 81fee3fc9a6..45b4007695f 100644 --- a/include/llvm-c/Comdat.h +++ b/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 @@ LLVMComdatSelectionKind LLVMGetComdatSelectionKind(LLVMComdatRef C); */ void LLVMSetComdatSelectionKind(LLVMComdatRef C, LLVMComdatSelectionKind Kind); -#ifdef __cplusplus -} -#endif +LLVM_C_EXTERN_C_END #endif diff --git a/include/llvm-c/Core.h b/include/llvm-c/Core.h index 83bf7077bcb..7a39731d3e0 100644 --- a/include/llvm-c/Core.h +++ b/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 @@ LLVMBool LLVMIsMultithreaded(void); * @} */ -#ifdef __cplusplus -} -#endif +LLVM_C_EXTERN_C_END #endif /* LLVM_C_CORE_H */ diff --git a/include/llvm-c/DebugInfo.h b/include/llvm-c/DebugInfo.h index 41e9f96bbb9..ab60b88a31f 100644 --- a/include/llvm-c/DebugInfo.h +++ b/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 @@ void LLVMInstructionSetDebugLoc(LLVMValueRef Inst, LLVMMetadataRef Loc); */ LLVMMetadataKind LLVMGetMetadataKind(LLVMMetadataRef Metadata); -#ifdef __cplusplus -} /* end extern "C" */ -#endif +LLVM_C_EXTERN_C_END #endif diff --git a/include/llvm-c/Disassembler.h b/include/llvm-c/Disassembler.h index 3adcc3c47a3..b1cb35da668 100644 --- a/include/llvm-c/Disassembler.h +++ b/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 @@ size_t LLVMDisasmInstruction(LLVMDisasmContextRef DC, uint8_t *Bytes, * @} */ -#ifdef __cplusplus -} -#endif /* !defined(__cplusplus) */ +LLVM_C_EXTERN_C_END #endif /* LLVM_C_DISASSEMBLER_H */ diff --git a/include/llvm-c/Error.h b/include/llvm-c/Error.h index 52943063c69..92f81bf3830 100644 --- a/include/llvm-c/Error.h +++ b/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 @@ void LLVMDisposeErrorMessage(char *ErrMsg); */ LLVMErrorTypeId LLVMGetStringErrorTypeId(void); -#ifdef __cplusplus -} -#endif +LLVM_C_EXTERN_C_END #endif diff --git a/include/llvm-c/ErrorHandling.h b/include/llvm-c/ErrorHandling.h index 4927349d898..c6f7ff3ed69 100644 --- a/include/llvm-c/ErrorHandling.h +++ b/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 LLVMResetFatalErrorHandler(void); */ void LLVMEnablePrettyStackTrace(void); -#ifdef __cplusplus -} -#endif +LLVM_C_EXTERN_C_END #endif diff --git a/include/llvm-c/ExecutionEngine.h b/include/llvm-c/ExecutionEngine.h index ef714cd0638..f31b97ad762 100644 --- a/include/llvm-c/ExecutionEngine.h +++ b/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 @@ LLVMJITEventListenerRef LLVMCreatePerfJITEventListener(void); * @} */ -#ifdef __cplusplus -} -#endif /* defined(__cplusplus) */ +LLVM_C_EXTERN_C_END #endif diff --git a/include/llvm-c/ExternC.h b/include/llvm-c/ExternC.h new file mode 100644 index 00000000000..4240f7c31a3 --- /dev/null +++ b/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 __clang__ +#define LLVM_C_STRICT_PROTOTYPES_BEGIN \ + _Pragma("clang diagnostic push") \ + _Pragma("clang diagnostic error \"-Wstrict-prototypes\"") +#define LLVM_C_STRICT_PROTOTYPES_END _Pragma("clang diagnostic pop") +#else +#define LLVM_C_STRICT_PROTOTYPES_BEGIN +#define LLVM_C_STRICT_PROTOTYPES_END +#endif + +#ifdef __cplusplus +#define LLVM_C_EXTERN_C_BEGIN \ + extern "C" { \ + LLVM_C_STRICT_PROTOTYPES_BEGIN +#define LLVM_C_EXTERN_C_END \ + LLVM_C_STRICT_PROTOTYPES_END \ + } +#else +#define LLVM_C_EXTERN_C_BEGIN LLVM_C_STRICT_PROTOTYPES_BEGIN +#define LLVM_C_EXTERN_C_END LLVM_C_STRICT_PROTOTYPES_END +#endif + +#endif diff --git a/include/llvm-c/IRReader.h b/include/llvm-c/IRReader.h index 4d0b696e958..5a3f633c3d9 100644 --- a/include/llvm-c/IRReader.h +++ b/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 @@ LLVMBool LLVMParseIRInContext(LLVMContextRef ContextRef, LLVMMemoryBufferRef MemBuf, LLVMModuleRef *OutM, char **OutMessage); -#ifdef __cplusplus -} -#endif +LLVM_C_EXTERN_C_END #endif diff --git a/include/llvm-c/Initialization.h b/include/llvm-c/Initialization.h index 36c41dbd8d3..0d59de8728c 100644 --- a/include/llvm-c/Initialization.h +++ b/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 @@ void LLVMInitializeTarget(LLVMPassRegistryRef R); * @} */ -#ifdef __cplusplus -} -#endif +LLVM_C_EXTERN_C_END #endif diff --git a/include/llvm-c/LinkTimeOptimizer.h b/include/llvm-c/LinkTimeOptimizer.h index 19b4f5cf749..9ae65b8fe5e 100644 --- a/include/llvm-c/LinkTimeOptimizer.h +++ b/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 @@ extern "C" { * @} */ -#ifdef __cplusplus -} -#endif + LLVM_C_EXTERN_C_END #endif diff --git a/include/llvm-c/Linker.h b/include/llvm-c/Linker.h index 90851304166..1ad9cc95875 100644 --- a/include/llvm-c/Linker.h +++ b/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 @@ typedef enum { */ LLVMBool LLVMLinkModules2(LLVMModuleRef Dest, LLVMModuleRef Src); -#ifdef __cplusplus -} -#endif +LLVM_C_EXTERN_C_END #endif diff --git a/include/llvm-c/Object.h b/include/llvm-c/Object.h index 1e9b703a68f..9a9596aaa08 100644 --- a/include/llvm-c/Object.h +++ b/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 @@ LLVMBool LLVMIsSymbolIteratorAtEnd(LLVMObjectFileRef ObjectFile, * @} */ -#ifdef __cplusplus -} -#endif /* defined(__cplusplus) */ +LLVM_C_EXTERN_C_END #endif diff --git a/include/llvm-c/OrcBindings.h b/include/llvm-c/OrcBindings.h index 9e92371b5a3..11cdade7c26 100644 --- a/include/llvm-c/OrcBindings.h +++ b/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 LLVMOrcRegisterJITEventListener(LLVMOrcJITStackRef JITStack, LLVMJITEventLi */ void LLVMOrcUnregisterJITEventListener(LLVMOrcJITStackRef JITStack, LLVMJITEventListenerRef L); -#ifdef __cplusplus -} -#endif /* extern "C" */ +LLVM_C_EXTERN_C_END #endif /* LLVM_C_ORCBINDINGS_H */ diff --git a/include/llvm-c/Remarks.h b/include/llvm-c/Remarks.h index 5444aebddd6..ffe647a6554 100644 --- a/include/llvm-c/Remarks.h +++ b/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 @@ extern uint32_t LLVMRemarkVersion(void); * @} // endgoup LLVMCREMARKS */ -#ifdef __cplusplus -} -#endif /* !defined(__cplusplus) */ +LLVM_C_EXTERN_C_END #endif /* LLVM_C_REMARKS_H */ diff --git a/include/llvm-c/Support.h b/include/llvm-c/Support.h index 097f784246c..866df32efa9 100644 --- a/include/llvm-c/Support.h +++ b/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 *LLVMSearchForAddressOfSymbol(const char *symbolName); */ void LLVMAddSymbol(const char *symbolName, void *symbolValue); -#ifdef __cplusplus -} -#endif +LLVM_C_EXTERN_C_END #endif diff --git a/include/llvm-c/Target.h b/include/llvm-c/Target.h index 4ef641eaf23..518b46d55bc 100644 --- a/include/llvm-c/Target.h +++ b/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 @@ unsigned long long LLVMOffsetOfElement(LLVMTargetDataRef TD, * @} */ -#ifdef __cplusplus -} -#endif /* defined(__cplusplus) */ +LLVM_C_EXTERN_C_END #endif diff --git a/include/llvm-c/TargetMachine.h b/include/llvm-c/TargetMachine.h index 28d7c096871..f82edd948b5 100644 --- a/include/llvm-c/TargetMachine.h +++ b/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 @@ char* LLVMGetHostCPUFeatures(void); /** 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 diff --git a/include/llvm-c/Transforms/AggressiveInstCombine.h b/include/llvm-c/Transforms/AggressiveInstCombine.h index c0b0141c3da..db061a7ad1f 100644 --- a/include/llvm-c/Transforms/AggressiveInstCombine.h +++ b/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 @@ void LLVMAddAggressiveInstCombinerPass(LLVMPassManagerRef PM); * @} */ -#ifdef __cplusplus -} -#endif /* defined(__cplusplus) */ +LLVM_C_EXTERN_C_END #endif diff --git a/include/llvm-c/Transforms/Coroutines.h b/include/llvm-c/Transforms/Coroutines.h index 227e7cf0a36..687f9b55053 100644 --- a/include/llvm-c/Transforms/Coroutines.h +++ b/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 @@ void LLVMAddCoroCleanupPass(LLVMPassManagerRef PM); * @} */ -#ifdef __cplusplus -} -#endif /* defined(__cplusplus) */ +LLVM_C_EXTERN_C_END #endif diff --git a/include/llvm-c/Transforms/IPO.h b/include/llvm-c/Transforms/IPO.h index 51d00758128..cde3d246092 100644 --- a/include/llvm-c/Transforms/IPO.h +++ b/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 @@ void LLVMAddStripSymbolsPass(LLVMPassManagerRef PM); * @} */ -#ifdef __cplusplus -} -#endif /* defined(__cplusplus) */ +LLVM_C_EXTERN_C_END #endif diff --git a/include/llvm-c/Transforms/InstCombine.h b/include/llvm-c/Transforms/InstCombine.h index 166f278d9a6..ebe17d66706 100644 --- a/include/llvm-c/Transforms/InstCombine.h +++ b/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 @@ void LLVMAddInstructionCombiningPass(LLVMPassManagerRef PM); * @} */ -#ifdef __cplusplus -} -#endif /* defined(__cplusplus) */ +LLVM_C_EXTERN_C_END #endif diff --git a/include/llvm-c/Transforms/PassManagerBuilder.h b/include/llvm-c/Transforms/PassManagerBuilder.h index d164c00d49c..6e13e18e063 100644 --- a/include/llvm-c/Transforms/PassManagerBuilder.h +++ b/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 @@ void LLVMPassManagerBuilderPopulateLTOPassManager(LLVMPassManagerBuilderRef PMB, * @} */ -#ifdef __cplusplus -} -#endif +LLVM_C_EXTERN_C_END #endif diff --git a/include/llvm-c/Transforms/Scalar.h b/include/llvm-c/Transforms/Scalar.h index 6f3a3d8b375..93d79a20519 100644 --- a/include/llvm-c/Transforms/Scalar.h +++ b/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 @@ void LLVMAddUnifyFunctionExitNodesPass(LLVMPassManagerRef PM); * @} */ -#ifdef __cplusplus -} -#endif /* defined(__cplusplus) */ +LLVM_C_EXTERN_C_END #endif diff --git a/include/llvm-c/Transforms/Utils.h b/include/llvm-c/Transforms/Utils.h index 63594abfa46..30d1ae63de1 100644 --- a/include/llvm-c/Transforms/Utils.h +++ b/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 @@ void LLVMAddAddDiscriminatorsPass(LLVMPassManagerRef PM); * @} */ -#ifdef __cplusplus -} -#endif /* defined(__cplusplus) */ +LLVM_C_EXTERN_C_END #endif diff --git a/include/llvm-c/Transforms/Vectorize.h b/include/llvm-c/Transforms/Vectorize.h index e383481fe4f..0de45838139 100644 --- a/include/llvm-c/Transforms/Vectorize.h +++ b/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 @@ void LLVMAddSLPVectorizePass(LLVMPassManagerRef PM); * @} */ -#ifdef __cplusplus -} -#endif /* defined(__cplusplus) */ +LLVM_C_EXTERN_C_END #endif diff --git a/include/llvm-c/Types.h b/include/llvm-c/Types.h index 612c7d3eff3..4e02498a234 100644 --- a/include/llvm-c/Types.h +++ b/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 @@ typedef struct LLVMOpaqueBinary *LLVMBinaryRef; * @} */ -#ifdef __cplusplus -} -#endif +LLVM_C_EXTERN_C_END #endif diff --git a/include/llvm-c/lto.h b/include/llvm-c/lto.h index 41e6067cf44..0c6ce673162 100644 --- a/include/llvm-c/lto.h +++ b/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 @@ typedef struct LLVMOpaqueLTOCodeGenerator *lto_code_gen_t; /** 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 @@ extern void thinlto_codegen_set_cache_size_files(thinlto_code_gen_t cg, * @} // endgroup LLVMCTLTO_CACHING */ -#ifdef __cplusplus -} -#endif +LLVM_C_EXTERN_C_END #endif /* LLVM_C_LTO_H */