[llvm] r178713 - Make it possible to include llvm-c without including C++ headers. Patch by Filip Pizlo.
Eric Christopher
echristo at gmail.com
Wed Apr 3 19:03:55 PDT 2013
This seems like a pretty horrific hack. I don't think we want to rely
on the preprocessor to do this sort of thing.
I've got no objections to not naming unused parameters in headers, in
fact, when I did this same sort of thing a while back I cleaned that
up and it seems like a much better way to go.
-eric
On Wed, Apr 3, 2013 at 4:12 PM, Evan Cheng <evan.cheng at apple.com> wrote:
> Author: evancheng
> Date: Wed Apr 3 18:12:39 2013
> New Revision: 178713
>
> URL: http://llvm.org/viewvc/llvm-project?rev=178713&view=rev
> Log:
> Make it possible to include llvm-c without including C++ headers. Patch by Filip Pizlo.
>
> Modified:
> llvm/trunk/include/llvm-c/Core.h
> llvm/trunk/include/llvm-c/ExecutionEngine.h
> llvm/trunk/include/llvm-c/Object.h
> llvm/trunk/include/llvm-c/Target.h
> llvm/trunk/include/llvm-c/TargetMachine.h
> llvm/trunk/include/llvm-c/Transforms/PassManagerBuilder.h
>
> Modified: llvm/trunk/include/llvm-c/Core.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm-c/Core.h?rev=178713&r1=178712&r2=178713&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm-c/Core.h (original)
> +++ llvm/trunk/include/llvm-c/Core.h Wed Apr 3 18:12:39 2013
> @@ -17,14 +17,15 @@
>
> #include "llvm/Support/DataTypes.h"
>
> -#ifdef __cplusplus
> -
> +#if defined(__cplusplus) && !defined(LLVM_DO_NOT_INCLUDE_CPP_HEADERS)
> /* Need these includes to support the LLVM 'cast' template for the C++ 'wrap'
> and 'unwrap' conversion functions. */
> #include "llvm/IR/IRBuilder.h"
> #include "llvm/IR/Module.h"
> #include "llvm/PassRegistry.h"
> +#endif /* defined(__cplusplus) && !defined(LLVM_DO_NOT_INCLUDE_CPP_HEADERS) */
>
> +#ifdef __cplusplus
> extern "C" {
> #endif
>
> @@ -2669,7 +2670,9 @@ LLVMBool LLVMIsMultithreaded();
>
> #ifdef __cplusplus
> }
> +#endif
>
> +#if defined(__cplusplus) && !defined(LLVM_DO_NOT_INCLUDE_CPP_HEADERS)
> namespace llvm {
> class MemoryBuffer;
> class PassManagerBase;
> @@ -2763,6 +2766,6 @@ namespace llvm {
> }
> }
>
> -#endif /* !defined(__cplusplus) */
> +#endif /* defined(__cplusplus) && !defined(LLVM_DO_NOT_INCLUDE_CPP_HEADERS) */
>
> -#endif /* !defined(LLVM_C_CORE_H) */
> +#endif /* defined(LLVM_C_CORE_H) */
>
> Modified: llvm/trunk/include/llvm-c/ExecutionEngine.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm-c/ExecutionEngine.h?rev=178713&r1=178712&r2=178713&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm-c/ExecutionEngine.h (original)
> +++ llvm/trunk/include/llvm-c/ExecutionEngine.h Wed Apr 3 18:12:39 2013
> @@ -138,7 +138,9 @@ void *LLVMGetPointerToGlobal(LLVMExecuti
>
> #ifdef __cplusplus
> }
> +#endif
>
> +#if defined(__cplusplus) && !defined(LLVM_DO_NOT_INCLUDE_CPP_HEADERS)
> namespace llvm {
> struct GenericValue;
> class ExecutionEngine;
> @@ -157,7 +159,6 @@ namespace llvm {
>
> #undef DEFINE_SIMPLE_CONVERSION_FUNCTIONS
> }
> -
> -#endif /* defined(__cplusplus) */
> +#endif /* defined(__cplusplus) && !defined(LLVM_DO_NOT_INCLUDE_CPP_HEADERS) */
>
> #endif
>
> Modified: llvm/trunk/include/llvm-c/Object.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm-c/Object.h?rev=178713&r1=178712&r2=178713&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm-c/Object.h (original)
> +++ llvm/trunk/include/llvm-c/Object.h Wed Apr 3 18:12:39 2013
> @@ -22,9 +22,11 @@
> #include "llvm-c/Core.h"
> #include "llvm/Config/llvm-config.h"
>
> -#ifdef __cplusplus
> +#if defined(__cplusplus) && !defined(LLVM_DO_NOT_INCLUDE_CPP_HEADERS)
> #include "llvm/Object/ObjectFile.h"
> +#endif /* defined(__cplusplus) && !defined(LLVM_DO_NOT_INCLUDE_CPP_HEADERS) */
>
> +#ifdef __cplusplus
> extern "C" {
> #endif
>
> @@ -99,7 +101,9 @@ const char *LLVMGetRelocationValueString
>
> #ifdef __cplusplus
> }
> +#endif
>
> +#if defined(__cplusplus) && !defined(LLVM_DO_NOT_INCLUDE_CPP_HEADERS)
> namespace llvm {
> namespace object {
> inline ObjectFile *unwrap(LLVMObjectFileRef OF) {
> @@ -142,8 +146,8 @@ namespace llvm {
>
> }
> }
> +#endif /* defined(__cplusplus) && !defined(LLVM_DO_NOT_INCLUDE_CPP_HEADERS) */
>
> -#endif /* defined(__cplusplus) */
>
> #endif
>
>
> Modified: llvm/trunk/include/llvm-c/Target.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm-c/Target.h?rev=178713&r1=178712&r2=178713&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm-c/Target.h (original)
> +++ llvm/trunk/include/llvm-c/Target.h Wed Apr 3 18:12:39 2013
> @@ -235,7 +235,9 @@ void LLVMDisposeTargetData(LLVMTargetDat
>
> #ifdef __cplusplus
> }
> +#endif
>
> +#if defined(__cplusplus) && !defined(LLVM_DO_NOT_INCLUDE_CPP_HEADERS)
> namespace llvm {
> class DataLayout;
> class TargetLibraryInfo;
> @@ -257,7 +259,6 @@ namespace llvm {
> return reinterpret_cast<LLVMTargetLibraryInfoRef>(X);
> }
> }
> -
> -#endif /* defined(__cplusplus) */
> +#endif /* defined(__cplusplus) && !defined(LLVM_DO_NOT_INCLUDE_CPP_HEADERS) */
>
> #endif
>
> Modified: llvm/trunk/include/llvm-c/TargetMachine.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm-c/TargetMachine.h?rev=178713&r1=178712&r2=178713&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm-c/TargetMachine.h (original)
> +++ llvm/trunk/include/llvm-c/TargetMachine.h Wed Apr 3 18:12:39 2013
> @@ -119,7 +119,9 @@ LLVMBool LLVMTargetMachineEmitToFile(LLV
>
> #ifdef __cplusplus
> }
> +#endif
>
> +#if defined(__cplusplus) && !defined(LLVM_DO_NOT_INCLUDE_CPP_HEADERS)
> namespace llvm {
> class TargetMachine;
> class Target;
> @@ -138,6 +140,6 @@ namespace llvm {
> return reinterpret_cast<LLVMTargetRef>(const_cast<Target*>(P));
> }
> }
> -#endif
> +#endif /* defined(__cplusplus) && !defined(LLVM_DO_NOT_INCLUDE_CPP_HEADERS) */
>
> #endif
>
> Modified: llvm/trunk/include/llvm-c/Transforms/PassManagerBuilder.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm-c/Transforms/PassManagerBuilder.h?rev=178713&r1=178712&r2=178713&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm-c/Transforms/PassManagerBuilder.h (original)
> +++ llvm/trunk/include/llvm-c/Transforms/PassManagerBuilder.h Wed Apr 3 18:12:39 2013
> @@ -18,8 +18,11 @@
>
> typedef struct LLVMOpaquePassManagerBuilder *LLVMPassManagerBuilderRef;
>
> -#ifdef __cplusplus
> +#if defined(__cplusplus) && !defined(LLVM_DO_NOT_INCLUDE_CPP_HEADERS)
> #include "llvm/Transforms/IPO/PassManagerBuilder.h"
> +#endif
> +
> +#ifdef __cplusplus
> extern "C" {
> #endif
>
> @@ -86,7 +89,9 @@ void LLVMPassManagerBuilderPopulateLTOPa
>
> #ifdef __cplusplus
> }
> +#endif
>
> +#if defined(__cplusplus) && !defined(LLVM_DO_NOT_INCLUDE_CPP_HEADERS)
> namespace llvm {
> inline PassManagerBuilder *unwrap(LLVMPassManagerBuilderRef P) {
> return reinterpret_cast<PassManagerBuilder*>(P);
> @@ -96,6 +101,6 @@ namespace llvm {
> return reinterpret_cast<LLVMPassManagerBuilderRef>(P);
> }
> }
> -#endif
> +#endif /* defined(__cplusplus) && !defined(LLVM_DO_NOT_INCLUDE_CPP_HEADERS) */
>
> #endif
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list