1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 04:02:41 +01:00

Wrap C APIs with pragmas enforcing -Werror=strict-prototypes

Force `-Werror=strict-prototypes` so that C API tests fail to compile if
we add a non-prototype declaration.  This should help avoid regressions
like bddecba4b333f7772029b4937d2c34f9f2fda6ca was fixing.

https://reviews.llvm.org/D70285
rdar://problem/57203137
This commit is contained in:
Duncan P. N. Exon Smith 2019-11-14 13:57:57 -08:00
parent b69bfdcade
commit d1b42bfe87
31 changed files with 135 additions and 178 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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 */

View File

@ -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

View File

@ -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 */

View File

@ -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

View File

@ -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

View File

@ -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

39
include/llvm-c/ExternC.h Normal file
View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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 */

View File

@ -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 <cstddef>
extern "C" {
#else
#include <stddef.h>
#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 */

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -16,6 +16,8 @@
#ifndef LLVM_C_LTO_H
#define LLVM_C_LTO_H
#include "llvm-c/ExternC.h"
#ifdef __cplusplus
#include <cstddef>
#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 */