Updated for LLVM 2.7 (will not work with LLVM 2.6). Work-in-progress.

git-svn-id: http://llvm-py.googlecode.com/svn/trunk@86 8d1e9007-1d4e-0410-b67e-1979fd6579aa
This commit is contained in:
mdevan.foobar@gmail.com 2010-07-24 18:15:49 +00:00
commit d51eb76fec
10 changed files with 1136 additions and 1012 deletions

View file

@ -51,93 +51,96 @@ TYPE_X86_FP80 = 3
TYPE_FP128 = 4
TYPE_PPC_FP128 = 5
TYPE_LABEL = 6
TYPE_METADATA = 7
TYPE_INTEGER = 8
TYPE_FUNCTION = 9
TYPE_STRUCT = 10
TYPE_ARRAY = 11
TYPE_POINTER = 12
TYPE_OPAQUE = 13
TYPE_VECTOR = 14
TYPE_INTEGER = 7
TYPE_FUNCTION = 8
TYPE_STRUCT = 9
TYPE_ARRAY = 10
TYPE_POINTER = 11
TYPE_OPAQUE = 12
TYPE_VECTOR = 13
TYPE_METADATA = 14
TYPE_UNION = 15
# value IDs (llvm::Value::ValueTy enum)
VALUE_ARGUMENT = 0
VALUE_BASIC_BLOCK = 1
VALUE_FUNCTION = 2
VALUE_GLOBAL_ALIAS = 3
VALUE_GLOBAL_VARIABLE = 4
VALUE_UNDEF_VALUE = 5
VALUE_CONSTANT_EXPR = 6
VALUE_CONSTANT_AGGREGATE_ZERO = 7
VALUE_CONSTANT_INT = 8
VALUE_CONSTANT_FP = 9
VALUE_CONSTANT_ARRAY = 10
VALUE_CONSTANT_STRUCT = 11
VALUE_CONSTANT_VECTOR = 12
VALUE_CONSTANT_POINTER_NULL = 13
VALUE_MD_NODE = 14
VALUE_MD_STRING = 15
VALUE_NAMED_MD_NODE = 16
VALUE_INLINE_ASM = 17
VALUE_PSEUDO_SOURCE_VALUE = 18
VALUE_INSTRUCTION = 19
VALUE_ARGUMENT = 0
VALUE_BASIC_BLOCK = 1
VALUE_FUNCTION = 2
VALUE_GLOBAL_ALIAS = 3
VALUE_GLOBAL_VARIABLE = 4
VALUE_UNDEF_VALUE = 5
VALUE_BLOCK_ADDRESS = 6
VALUE_CONSTANT_EXPR = 7
VALUE_CONSTANT_AGGREGATE_ZERO = 8
VALUE_CONSTANT_INT = 9
VALUE_CONSTANT_FP = 10
VALUE_CONSTANT_ARRAY = 11
VALUE_CONSTANT_STRUCT = 12
VALUE_CONSTANT_UNION = 13
VALUE_CONSTANT_VECTOR = 14
VALUE_CONSTANT_POINTER_NULL = 15
VALUE_MD_NODE = 16
VALUE_MD_STRING = 17
VALUE_NAMED_MD_NODE = 18
VALUE_INLINE_ASM = 19
VALUE_PSEUDO_SOURCE_VALUE = 20
VALUE_FIXED_STACK_PSEUDO_SOURCE_VALUE = 21
VALUE_INSTRUCTION = 22
# instruction opcodes (from include/llvm/Instruction.def)
OPCODE_RET = 1
OPCODE_BR = 2
OPCODE_SWITCH = 3
OPCODE_INVOKE = 4
OPCODE_UNWIND = 5
OPCODE_UNREACHABLE = 6
OPCODE_ADD = 7
OPCODE_FADD = 8
OPCODE_SUB = 9
OPCODE_FSUB = 10
OPCODE_MUL = 11
OPCODE_FMUL = 12
OPCODE_UDIV = 13
OPCODE_SDIV = 14
OPCODE_FDIV = 15
OPCODE_UREM = 16
OPCODE_SREM = 17
OPCODE_FREM = 18
OPCODE_SHL = 19
OPCODE_LSHR = 20
OPCODE_ASHR = 21
OPCODE_AND = 22
OPCODE_OR = 23
OPCODE_XOR = 24
OPCODE_MALLOC = 25
OPCODE_FREE = 26
OPCODE_ALLOCA = 27
OPCODE_LOAD = 28
OPCODE_STORE = 29
OPCODE_GETELEMENTPTR = 30
OPCODE_TRUNC = 31
OPCODE_ZEXT = 32
OPCODE_SEXT = 33
OPCODE_FPTOUI = 34
OPCODE_FPTOSI = 35
OPCODE_UITOFP = 36
OPCODE_SITOFP = 37
OPCODE_FPTRUNC = 38
OPCODE_FPEXT = 39
OPCODE_PTRTOINT = 40
OPCODE_INTTOPTR = 41
OPCODE_BITCAST = 42
OPCODE_ICMP = 43
OPCODE_FCMP = 44
OPCODE_PHI = 45
OPCODE_CALL = 46
OPCODE_SELECT = 47
OPCODE_USEROP1 = 48
OPCODE_USEROP2 = 49
OPCODE_VAARG = 50
OPCODE_EXTRACTELEMENT = 51
OPCODE_INSERTELEMENT = 52
OPCODE_SHUFFLEVECTOR = 53
OPCODE_EXTRACTVALUE = 54
OPCODE_INSERTVALUE = 55
OPCODE_INDIRECT_BR = 4
OPCODE_INVOKE = 5
OPCODE_UNWIND = 6
OPCODE_UNREACHABLE = 7
OPCODE_ADD = 8
OPCODE_FADD = 9
OPCODE_SUB = 10
OPCODE_FSUB = 11
OPCODE_MUL = 12
OPCODE_FMUL = 13
OPCODE_UDIV = 14
OPCODE_SDIV = 15
OPCODE_FDIV = 16
OPCODE_UREM = 17
OPCODE_SREM = 18
OPCODE_FREM = 19
OPCODE_SHL = 20
OPCODE_LSHR = 21
OPCODE_ASHR = 22
OPCODE_AND = 23
OPCODE_OR = 24
OPCODE_XOR = 25
OPCODE_ALLOCA = 26
OPCODE_LOAD = 27
OPCODE_STORE = 28
OPCODE_GETELEMENTPTR = 29
OPCODE_TRUNC = 30
OPCODE_ZEXT = 31
OPCODE_SEXT = 32
OPCODE_FPTOUI = 33
OPCODE_FPTOSI = 34
OPCODE_UITOFP = 35
OPCODE_SITOFP = 36
OPCODE_FPTRUNC = 37
OPCODE_FPEXT = 38
OPCODE_PTRTOINT = 39
OPCODE_INTTOPTR = 40
OPCODE_BITCAST = 41
OPCODE_ICMP = 42
OPCODE_FCMP = 43
OPCODE_PHI = 44
OPCODE_CALL = 45
OPCODE_SELECT = 46
OPCODE_USEROP1 = 47
OPCODE_USEROP2 = 48
OPCODE_VAARG = 59
OPCODE_EXTRACTELEMENT = 50
OPCODE_INSERTELEMENT = 51
OPCODE_SHUFFLEVECTOR = 52
OPCODE_EXTRACTVALUE = 53
OPCODE_INSERTVALUE = 54
# calling conventions
CC_C = 0
@ -206,7 +209,7 @@ RPRED_ULE = FCMP_ULE
RPRED_UNE = FCMP_UNE
RPRED_TRUE = FCMP_TRUE
# linkages
# linkages (see llvm-c/Core.h)
LINKAGE_EXTERNAL = 0
LINKAGE_AVAILABLE_EXTERNALLY = 1
LINKAGE_LINKONCE_ANY = 2
@ -216,39 +219,41 @@ LINKAGE_WEAK_ODR = 5
LINKAGE_APPENDING = 6
LINKAGE_INTERNAL = 7
LINKAGE_PRIVATE = 8
LINKAGE_LINKER_PRIVATE = 9
LINKAGE_DLLIMPORT = 10
LINKAGE_DLLEXPORT = 11
LINKAGE_EXTERNAL_WEAK = 12
LINKAGE_GHOST = 13
LINKAGE_COMMON = 14
LINKAGE_DLLIMPORT = 9
LINKAGE_DLLEXPORT = 10
LINKAGE_EXTERNAL_WEAK = 11
LINKAGE_GHOST = 12
LINKAGE_COMMON = 13
LINKAGE_LINKER_PRIVATE = 14
# visibility
VISIBILITY_DEFAULT = 0
VISIBILITY_HIDDEN = 1
# visibility (see llvm/GlobalValue.h)
VISIBILITY_DEFAULT = 0
VISIBILITY_HIDDEN = 1
VISIBILITY_PROTECTED = 2
# parameter attributes (see llvm/Attributes.h)
ATTR_ZEXT = 1
ATTR_SEXT = 2
ATTR_NO_RETURN = 4
ATTR_IN_REG = 8
ATTR_STRUCT_RET = 16
ATTR_NO_UNWIND = 32
ATTR_NO_ALIAS = 64
ATTR_BY_VAL = 128
ATTR_NEST = 256
ATTR_READ_NONE = 512
ATTR_READONLY = 1024
ATTR_NO_INLINE = 1<<11
ATTR_ALWAYS_INLINE = 1<<12
ATTR_OPTIMIZE_FOR_SIZE = 1<<13
ATTR_STACK_PROTECT = 1<<14
ATTR_STACK_PROTECT_REQ = 1<<15
ATTR_NO_CAPTURE = 1<<21
ATTR_NO_REDZONE = 1<<22
ATTR_NO_IMPLICIT_FLOAT = 1<<23
ATTR_NAKED = 1<<24
ATTR_NONE = 0
ATTR_ZEXT = 1
ATTR_SEXT = 2
ATTR_NO_RETURN = 4
ATTR_IN_REG = 8
ATTR_STRUCT_RET = 16
ATTR_NO_UNWIND = 32
ATTR_NO_ALIAS = 64
ATTR_BY_VAL = 128
ATTR_NEST = 256
ATTR_READ_NONE = 512
ATTR_READONLY = 1024
ATTR_NO_INLINE = 1<<11
ATTR_ALWAYS_INLINE = 1<<12
ATTR_OPTIMIZE_FOR_SIZE = 1<<13
ATTR_STACK_PROTECT = 1<<14
ATTR_STACK_PROTECT_REQ = 1<<15
ATTR_NO_CAPTURE = 1<<21
ATTR_NO_REDZONE = 1<<22
ATTR_NO_IMPLICIT_FLOAT = 1<<23
ATTR_NAKED = 1<<24
ATTR_INLINE_HINT = 1<<25
# intrinsic IDs
from llvm._intrinsic_ids import *
@ -439,6 +444,14 @@ class Module(llvm.Ownable, llvm.Cacheable):
"""
_core.LLVMDeleteTypeName(self.ptr, name)
def get_type_named(self, name):
"""Return a Type object with the given name."""
ptr = _core.LLVMGetTypeByName(self.ptr, name)
if ptr:
kind = _core.LLVMGetTypeKind(ptr)
return _make_type(ptr, kind)
return None
def add_global_variable(self, ty, name):
"""Add a global variable of given type with given name."""
return GlobalVariable.new(self, ty, name)