changes to make llvmpy compatible with development branch of llvm

mostly just removing stuff and changing function prototypes.
with these changes, llvmpy compiles and llvm.test() passes.
This commit is contained in:
anthony cantor 2013-08-16 02:33:06 -06:00 • committed by Siu Kwan Lam
commit aa0ee9b6a6
8 changed files with 45 additions and 28 deletions

View file

@ -211,8 +211,10 @@ class CCEnum(Enum):
CC_X86_THISCALL = ID.X86_ThisCall CC_X86_THISCALL = ID.X86_ThisCall
CC_PTX_KERNEL = ID.PTX_Kernel CC_PTX_KERNEL = ID.PTX_Kernel
CC_PTX_DEVICE = ID.PTX_Device CC_PTX_DEVICE = ID.PTX_Device
CC_MBLAZE_INTR = ID.MBLAZE_INTR
CC_MBLAZE_SVOL = ID.MBLAZE_SVOL if llvm.version <= (3, 3):
CC_MBLAZE_INTR = ID.MBLAZE_INTR
CC_MBLAZE_SVOL = ID.MBLAZE_SVOL
CCEnum.declare() CCEnum.declare()

View file

@ -120,13 +120,14 @@ class PassManagerBuilder(llvm.Wrapper):
def disable_unroll_loops(self, disable): def disable_unroll_loops(self, disable):
self._ptr.DisableUnrollLoops = disable self._ptr.DisableUnrollLoops = disable
@property if llvm.version <= (3, 3):
def disable_simplify_lib_calls(self): @property
return self._ptr.DisableSimplifyLibCalls def disable_simplify_lib_calls(self):
return self._ptr.DisableSimplifyLibCalls
@disable_simplify_lib_calls.setter @disable_simplify_lib_calls.setter
def disable_simplify_lib_calls(self, disable): def disable_simplify_lib_calls(self, disable):
self._ptr.DisableSimplifyLibCalls = disable self._ptr.DisableSimplifyLibCalls = disable
def use_inliner_with_threshold(self, threshold): def use_inliner_with_threshold(self, threshold):
self._ptr.Inliner = api.llvm.createFunctionInliningPass(threshold) self._ptr.Inliner = api.llvm.createFunctionInliningPass(threshold)

View file

@ -393,7 +393,8 @@ entry:
# make sure the default is False # make sure the default is False
self.assertFalse(pmb.disable_unit_at_a_time) self.assertFalse(pmb.disable_unit_at_a_time)
self.assertFalse(pmb.disable_unroll_loops) self.assertFalse(pmb.disable_unroll_loops)
self.assertFalse(pmb.disable_simplify_lib_calls) if llvm.version <= (3, 3):
self.assertFalse(pmb.disable_simplify_lib_calls)
pmb.disable_unit_at_a_time = True pmb.disable_unit_at_a_time = True
self.assertTrue(pmb.disable_unit_at_a_time) self.assertTrue(pmb.disable_unit_at_a_time)

View file

@ -1,10 +1,16 @@
from binding import * from binding import *
from .namespace import llvm from .namespace import llvm
ccs = '''
C, Fast, Cold, GHC, FirstTargetCC, X86_StdCall, X86_FastCall,
ARM_APCS, ARM_AAPCS, ARM_AAPCS_VFP, MSP430_INTR, X86_ThisCall,
PTX_Kernel, PTX_Device,
'''
if LLVM_VERSION <= (3, 3):
ccs += "MBLAZE_INTR, MBLAZE_SVOL,"
ccs += 'SPIR_FUNC, SPIR_KERNEL, Intel_OCL_BI'
CallingConv = llvm.Namespace('CallingConv') CallingConv = llvm.Namespace('CallingConv')
ID = CallingConv.Enum('ID', ''' ID = CallingConv.Enum('ID', ccs) # HiPE
C, Fast, Cold, GHC, FirstTargetCC, X86_StdCall, X86_FastCall,
ARM_APCS, ARM_AAPCS, ARM_AAPCS_VFP, MSP430_INTR, X86_ThisCall,
PTX_Kernel, PTX_Device, MBLAZE_INTR, MBLAZE_SVOL, SPIR_FUNC,
SPIR_KERNEL, Intel_OCL_BI
''') # HiPE

View file

@ -6,7 +6,7 @@ DIBuilder = llvm.Class()
from .Module import Module from .Module import Module
from .Value import Value, MDNode, Function, BasicBlock from .Value import Value, MDNode, Function, BasicBlock
from .Instruction import Instruction from .Instruction import Instruction
from .DebugInfo import DIFile, DIEnumerator, DIType, DIBasicType, DIDerivedType from .DebugInfo import DIFile, DIEnumerator, DIType, DIBasicType, DIDerivedType, DICompositeType
from .DebugInfo import DIDescriptor, DIArray, DISubrange, DIGlobalVariable from .DebugInfo import DIDescriptor, DIArray, DISubrange, DIGlobalVariable
from .DebugInfo import DIVariable, DISubprogram, DINameSpace, DILexicalBlockFile from .DebugInfo import DIVariable, DISubprogram, DINameSpace, DILexicalBlockFile
from .DebugInfo import DILexicalBlock from .DebugInfo import DILexicalBlock
@ -25,7 +25,8 @@ class DIBuilder:
new = Constructor(ref(Module)) new = Constructor(ref(Module))
delete = Destructor() delete = Destructor()
getCU = Method(const(ptr(MDNode))) if LLVM_VERSION <= (3, 3):
getCU = Method(const(ptr(MDNode)))
finalize = Method() finalize = Method()
createCompileUnit = Method(Void, createCompileUnit = Method(Void,
@ -46,12 +47,16 @@ class DIBuilder:
createEnumerator = Method(DIEnumerator, createEnumerator = Method(DIEnumerator,
stringref_arg, # Name stringref_arg, # Name
uint64_arg, # Val uint64_arg if LLVM_VERSION <= (3, 3) else int64_arg, # Val
) )
createNullPtrType = Method(DIType, if LLVM_VERSION <= (3, 3):
stringref_arg, # Name createNullPtrType = Method(DIType,
) stringref_arg, # Name
)
else:
createNullPtrType = Method(DIBasicType)
createBasicType = Method(DIType, createBasicType = Method(DIType,
stringref_arg, # Name stringref_arg, # Name
@ -85,7 +90,7 @@ class DIBuilder:
ref(DIDescriptor), # Context ref(DIDescriptor), # Context
) )
createFriend = Method(DIType, createFriend = Method(DIType if LLVM_VERSION <= (3, 3) else DIDerivedType,
ref(DIType), # Ty ref(DIType), # Ty
ref(DIType), # FriendTy ref(DIType), # FriendTy
) )
@ -169,7 +174,7 @@ class DIBuilder:
ref(DIArray), # Subscripts ref(DIArray), # Subscripts
) )
createVectorType = Method(DIType, createVectorType = Method(DIType if LLVM_VERSION <= (3, 3) else DICompositeType,
uint64_arg, # Size uint64_arg, # Size
uint64_arg, # AlignInBits uint64_arg, # AlignInBits
ref(DIType), # Ty ref(DIType), # Ty
@ -275,7 +280,7 @@ class DIBuilder:
stringref_arg, # LinkageName stringref_arg, # LinkageName
ref(DIFile), # File ref(DIFile), # File
unsigned_arg, # LineNo unsigned_arg, # LineNo
ref(DIType), # Ty ref(DIType if LLVM_VERSION <= (3, 3) else DICompositeType), # Ty
bool_arg, # isLocalToUnit bool_arg, # isLocalToUnit
bool_arg, # isDefinition bool_arg, # isDefinition
unsigned_arg, # ScopeLine unsigned_arg, # ScopeLine
@ -293,7 +298,7 @@ class DIBuilder:
stringref_arg, # LinkageName stringref_arg, # LinkageName
ref(DIFile), # File ref(DIFile), # File
unsigned_arg, # LineNo unsigned_arg, # LineNo
ref(DIType), # Ty ref(DIType if LLVM_VERSION <= (3, 3) else DICompositeType), # Ty
bool_arg, # isLocalToUnit bool_arg, # isLocalToUnit
bool_arg, # isDefinition bool_arg, # isDefinition
unsigned_arg, # Virtuality=0 unsigned_arg, # Virtuality=0

View file

@ -44,7 +44,7 @@ class DIFile:
@DIEnumerator @DIEnumerator
class DIEnumerator: class DIEnumerator:
getName = Method(return_stringref) getName = Method(return_stringref)
getEnumValue = Method(cast(Uint64, int)) getEnumValue = Method(cast(Uint64 if LLVM_VERSION <= (3, 3) else Int64, int))
Verify = Method(return_bool) Verify = Method(return_bool)
@DIType @DIType

View file

@ -33,7 +33,9 @@ class PassManagerBuilder:
return Attr(getter=cast(Bool, bool), return Attr(getter=cast(Bool, bool),
setter=cast(bool, Bool)) setter=cast(bool, Bool))
DisableSimplifyLibCalls = _attr_bool() if LLVM_VERSION <= (3, 3):
DisableSimplifyLibCalls = _attr_bool()
DisableUnitAtATime = _attr_bool() DisableUnitAtATime = _attr_bool()
DisableUnrollLoops = _attr_bool() DisableUnrollLoops = _attr_bool()
if LLVM_VERSION >= (3, 3): if LLVM_VERSION >= (3, 3):

View file

@ -63,7 +63,7 @@ def auto_intrinsic_gen(incdir):
print("Generate intrinsic IDs") print("Generate intrinsic IDs")
from tools import intrgen from tools import intrgen
if llvm_version.startswith('3.3'): if llvm_version.startswith('3.3') or llvm_version.startswith('3.4'):
path = "%s/llvm/IR/Intrinsics.gen" % incdir path = "%s/llvm/IR/Intrinsics.gen" % incdir
else: else:
path = "%s/llvm/Intrinsics.gen" % incdir path = "%s/llvm/Intrinsics.gen" % incdir