47
47
48
48
#include < math.h>
49
49
#include < stdlib.h>
50
- #if defined(LLVM_3_2)
50
+ #if ISPC_LLVM_VERSION < ISPC_LLVM_3_3
51
51
#include < llvm/Attributes.h>
52
52
#endif
53
- #if defined(LLVM_3_2)
53
+ #if ISPC_LLVM_VERSION < ISPC_LLVM_3_3
54
54
#include < llvm/LLVMContext.h>
55
55
#include < llvm/Module.h>
56
56
#include < llvm/Type.h>
66
66
#include < llvm/IR/Intrinsics.h>
67
67
#include < llvm/IR/DerivedTypes.h>
68
68
#endif
69
- #if !defined(LLVM_3_2) && !defined(LLVM_3_3) && !defined(LLVM_3_4) // LLVM 3.5+
69
+ #if ISPC_LLVM_VERSION >= ISPC_LLVM_3_5
70
70
#include < llvm/Linker/Linker.h>
71
71
#else
72
72
#include < llvm/Linker.h>
@@ -784,13 +784,13 @@ void
784
784
AddBitcodeToModule (const unsigned char *bitcode, int length,
785
785
llvm::Module *module, SymbolTable *symbolTable, bool warn) {
786
786
llvm::StringRef sb = llvm::StringRef ((char *)bitcode, length);
787
- #if defined(LLVM_3_2) || defined(LLVM_3_3) || defined(LLVM_3_4) || defined(LLVM_3_5)
787
+ #if ISPC_LLVM_VERSION >= ISPC_LLVM_3_2 && ISPC_LLVM_VERSION < ISPC_LLVM_3_6
788
788
llvm::MemoryBuffer *bcBuf = llvm::MemoryBuffer::getMemBuffer (sb);
789
789
#else // LLVM 3.6+
790
790
llvm::MemoryBufferRef bcBuf = llvm::MemoryBuffer::getMemBuffer (sb)->getMemBufferRef ();
791
791
#endif
792
792
793
- #if !defined(LLVM_3_2) && !defined(LLVM_3_3) && !defined(LLVM_3_4) // LLVM 3.5+
793
+ #if ISPC_LLVM_VERSION >= ISPC_LLVM_3_5
794
794
llvm::ErrorOr<llvm::Module *> ModuleOrErr = llvm::parseBitcodeFile (bcBuf, *g->ctx );
795
795
if (std::error_code EC = ModuleOrErr.getError ())
796
796
Error (SourcePos (), " Error parsing stdlib bitcode: %s" , EC.message ().c_str ());
@@ -850,7 +850,7 @@ AddBitcodeToModule(const unsigned char *bitcode, int length,
850
850
// architecture and investigate what happened.
851
851
// Generally we allow library DataLayout to be subset of module
852
852
// DataLayout or library DataLayout to be empty.
853
- #if !defined(LLVM_3_2) && !defined(LLVM_3_3) && !defined(LLVM_3_4) // LLVM 3.5+
853
+ #if ISPC_LLVM_VERSION >= ISPC_LLVM_3_5
854
854
if (!VerifyDataLayoutCompatibility (module->getDataLayoutStr (),
855
855
bcModule->getDataLayoutStr ())
856
856
&& warn) {
@@ -880,7 +880,7 @@ AddBitcodeToModule(const unsigned char *bitcode, int length,
880
880
881
881
std::string (linkError);
882
882
if (llvm::Linker::LinkModules (module, bcModule
883
- #if defined(LLVM_3_2) || defined(LLVM_3_3) || defined(LLVM_3_4) || defined(LLVM_3_5)
883
+ #if ISPC_LLVM_VERSION >= ISPC_LLVM_3_2 && ISPC_LLVM_VERSION < ISPC_LLVM_3_6
884
884
, llvm::Linker::DestroySource,
885
885
&linkError))
886
886
Error (SourcePos (), " Error linking stdlib bitcode: %s" , linkError.c_str ());
@@ -917,7 +917,7 @@ lDefineConstantInt(const char *name, int val, llvm::Module *module,
917
917
symbolTable->AddVariable (sym);
918
918
919
919
if (m->diBuilder != NULL ) {
920
- #if defined(LLVM_3_2) || defined(LLVM_3_3) || defined(LLVM_3_4) || defined(LLVM_3_5) || defined(LLVM_3_6)
920
+ #if ISPC_LLVM_VERSION >= ISPC_LLVM_3_2 && ISPC_LLVM_VERSION < ISPC_LLVM_3_7
921
921
llvm::DIFile file;
922
922
llvm::DIType diType = sym->type ->GetDIType (file);
923
923
Assert (diType.Verify ());
@@ -932,15 +932,15 @@ lDefineConstantInt(const char *name, int val, llvm::Module *module,
932
932
// have the DW_AT_artifical attribute. It's not clear if this
933
933
// matters for anything though.
934
934
935
- #if defined(LLVM_3_2) || defined(LLVM_3_3) || defined(LLVM_3_4) || defined(LLVM_3_5)
935
+ #if ISPC_LLVM_VERSION >= ISPC_LLVM_3_2 && ISPC_LLVM_VERSION < ISPC_LLVM_3_6
936
936
llvm::DIGlobalVariable var = m->diBuilder ->createGlobalVariable (
937
937
name,
938
938
file,
939
939
0 /* line */ ,
940
940
diType,
941
941
true /* static */ ,
942
942
sym->storagePtr );
943
- #elif defined(LLVM_3_6)
943
+ #elif ISPC_LLVM_VERSION < ISPC_LLVM_3_7 /* i.e., 3.6 */
944
944
llvm::Constant *sym_const_storagePtr = llvm::dyn_cast<llvm::Constant>(sym->storagePtr );
945
945
Assert (sym_const_storagePtr);
946
946
llvm::DIGlobalVariable var = m->diBuilder ->createGlobalVariable (
@@ -965,10 +965,10 @@ lDefineConstantInt(const char *name, int val, llvm::Module *module,
965
965
true /* static */ ,
966
966
sym_const_storagePtr);
967
967
#endif
968
- #if defined(LLVM_3_2) || defined(LLVM_3_3) || defined(LLVM_3_4) || defined(LLVM_3_5) || defined(LLVM_3_6)
968
+ #if ISPC_LLVM_VERSION >= ISPC_LLVM_3_2 && ISPC_LLVM_VERSION < ISPC_LLVM_3_7
969
969
Assert (var.Verify ());
970
970
#else // LLVM 3.7+
971
- // comming soon
971
+ // coming soon
972
972
#endif
973
973
}
974
974
}
@@ -984,7 +984,7 @@ lDefineConstantIntFunc(const char *name, int val, llvm::Module *module,
984
984
985
985
llvm::Function *func = module->getFunction (name);
986
986
Assert (func != NULL ); // it should be declared already...
987
- #if defined(LLVM_3_2)
987
+ #if ISPC_LLVM_VERSION < ISPC_LLVM_3_3
988
988
func->addFnAttr (llvm::Attributes::AlwaysInline);
989
989
#else // LLVM 3.3+
990
990
func->addFnAttr (llvm::Attribute::AlwaysInline);
@@ -1019,7 +1019,7 @@ lDefineProgramIndex(llvm::Module *module, SymbolTable *symbolTable) {
1019
1019
symbolTable->AddVariable (sym);
1020
1020
1021
1021
if (m->diBuilder != NULL ) {
1022
- #if defined(LLVM_3_2) || defined(LLVM_3_3) || defined(LLVM_3_4) || defined(LLVM_3_5) || defined(LLVM_3_6)
1022
+ #if ISPC_LLVM_VERSION >= ISPC_LLVM_3_2 && ISPC_LLVM_VERSION < ISPC_LLVM_3_7
1023
1023
llvm::DIFile file;
1024
1024
llvm::DIType diType = sym->type ->GetDIType (file);
1025
1025
Assert (diType.Verify ());
@@ -1030,10 +1030,13 @@ lDefineProgramIndex(llvm::Module *module, SymbolTable *symbolTable) {
1030
1030
llvm::DIType *diType = sym->type ->GetDIType (file);
1031
1031
// Assert(diType.Verify());
1032
1032
#endif
1033
- #if defined(LLVM_3_6) // LLVM 3.6+
1033
+ #if ISPC_LLVM_VERSION >= ISPC_LLVM_3_6
1034
1034
llvm::Constant *sym_const_storagePtr = llvm::dyn_cast<llvm::Constant>(sym->storagePtr );
1035
1035
Assert (sym_const_storagePtr);
1036
- llvm::DIGlobalVariable var = m->diBuilder ->createGlobalVariable (
1036
+ #if ISPC_LLVM_VERSION < ISPC_LLVM_3_7
1037
+ llvm::DIGlobalVariable var =
1038
+ #endif
1039
+ m->diBuilder ->createGlobalVariable (
1037
1040
file,
1038
1041
sym->name .c_str (),
1039
1042
sym->name .c_str (),
@@ -1042,7 +1045,7 @@ lDefineProgramIndex(llvm::Module *module, SymbolTable *symbolTable) {
1042
1045
diType,
1043
1046
false /* static */ ,
1044
1047
sym_const_storagePtr);
1045
- #elif defined(LLVM_3_2) || defined(LLVM_3_3) || defined(LLVM_3_4) || defined(LLVM_3_5)
1048
+ #elif ISPC_LLVM_VERSION >= ISPC_LLVM_3_2 /* && ISPC_LLVM_VERSION < ISPC_LLVM_3_6 */
1046
1049
llvm::DIGlobalVariable var = m->diBuilder ->createGlobalVariable (
1047
1050
sym->name .c_str (),
1048
1051
file,
@@ -1063,10 +1066,10 @@ lDefineProgramIndex(llvm::Module *module, SymbolTable *symbolTable) {
1063
1066
false /* static */ ,
1064
1067
sym_const_storagePtr);
1065
1068
#endif
1066
- #if defined(LLVM_3_2) || defined(LLVM_3_3) || defined(LLVM_3_4) || defined(LLVM_3_5) || defined(LLVM_3_6)
1069
+ #if ISPC_LLVM_VERSION >= ISPC_LLVM_3_2 && ISPC_LLVM_VERSION < ISPC_LLVM_3_7
1067
1070
Assert (var.Verify ());
1068
1071
#else // LLVM 3.7+
1069
- // comming soon
1072
+ // coming soon
1070
1073
#endif
1071
1074
}
1072
1075
}
0 commit comments