mirror of https://github.com/m-labs/artiq.git
Always load the personality library in JIT testbench, if available.
This commit is contained in:
parent
14c7b15785
commit
47f13bf921
|
@ -1,5 +1,4 @@
|
|||
import sys, fileinput
|
||||
from ctypes import CFUNCTYPE
|
||||
import os, sys, fileinput, ctypes
|
||||
from pythonparser import diagnostic
|
||||
from llvmlite import binding as llvm
|
||||
from .. import Module
|
||||
|
@ -10,10 +9,9 @@ llvm.initialize_native_asmprinter()
|
|||
llvm.check_jit_execution()
|
||||
|
||||
def main():
|
||||
while sys.argv[1].startswith("+"):
|
||||
if sys.argv[1] == "+load":
|
||||
llvm.load_library_permanently(sys.argv[2])
|
||||
del sys.argv[1:3]
|
||||
libartiq_personality = os.getenv('LIBARTIQ_PERSONALITY')
|
||||
if libartiq_personality is not None:
|
||||
llvm.load_library_permanently(libartiq_personality)
|
||||
|
||||
def process_diagnostic(diag):
|
||||
print("\n".join(diag.render()))
|
||||
|
@ -34,7 +32,7 @@ def main():
|
|||
lljit = llvm.create_mcjit_compiler(llparsedmod, llmachine)
|
||||
lljit.finalize_object()
|
||||
llmain = lljit.get_pointer_to_global(llparsedmod.get_function(llmod.name + ".__modinit__"))
|
||||
CFUNCTYPE(None)(llmain)()
|
||||
ctypes.CFUNCTYPE(None)(llmain)()
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
|
|
@ -789,7 +789,7 @@ class ARTIQIRGenerator(algorithm.Visitor):
|
|||
lambda: self.alloc_exn(builtins.TValueError(),
|
||||
ir.Constant("slice size {0} is larger than iterable length {1}",
|
||||
builtins.TStr()),
|
||||
slice_size, iterable_len))
|
||||
slice_size, length))
|
||||
|
||||
if self.current_assign is None:
|
||||
is_neg_size = self.append(ir.Compare(ast.Lt(loc=None),
|
||||
|
|
|
@ -103,12 +103,14 @@ class LLVMIRGenerator:
|
|||
linkage = "private"
|
||||
unnamed_addr = True
|
||||
|
||||
llstrty = ll.ArrayType(ll.IntType(8), len(as_bytes))
|
||||
llconst = ll.GlobalVariable(self.llmodule, llstrty, name)
|
||||
llconst.global_constant = True
|
||||
llconst.initializer = ll.Constant(llstrty, bytearray(as_bytes))
|
||||
llconst.linkage = linkage
|
||||
llconst.unnamed_addr = unnamed_addr
|
||||
llconst = self.llmodule.get_global(name)
|
||||
if llconst is None:
|
||||
llstrty = ll.ArrayType(ll.IntType(8), len(as_bytes))
|
||||
llconst = ll.GlobalVariable(self.llmodule, llstrty, name)
|
||||
llconst.global_constant = True
|
||||
llconst.initializer = ll.Constant(llstrty, bytearray(as_bytes))
|
||||
llconst.linkage = linkage
|
||||
llconst.unnamed_addr = unnamed_addr
|
||||
|
||||
return llconst.bitcast(ll.IntType(8).as_pointer())
|
||||
else:
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# RUN: %python -m artiq.compiler.testbench.jit +load %personality %s
|
||||
# RUN: %python -m artiq.compiler.testbench.jit %s
|
||||
# REQUIRES: exceptions
|
||||
|
||||
1/0
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# RUN: %python -m artiq.compiler.testbench.jit %s
|
||||
# RUN: %python %s
|
||||
# REQUIRES: exceptions
|
||||
|
||||
assert -(-1) == 1
|
||||
assert -(-1.0) == 1.0
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# RUN: %python -m artiq.compiler.testbench.jit %s
|
||||
# RUN: %python %s
|
||||
# REQUIRES: exceptions
|
||||
|
||||
assert bool() is False
|
||||
# bool(x) is tested in bool.py
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# RUN: %python -m artiq.compiler.testbench.jit %s
|
||||
# RUN: %python %s
|
||||
# REQUIRES: exceptions
|
||||
|
||||
[x, y] = [1, 2]
|
||||
assert (x, y) == (1, 2)
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# RUN: %python -m artiq.compiler.testbench.jit %s
|
||||
# RUN: %python %s
|
||||
# REQUIRES: exceptions
|
||||
|
||||
lst = list(range(10))
|
||||
assert lst[0] == 0
|
||||
|
|
|
@ -18,6 +18,6 @@ if os.name == 'posix':
|
|||
lit_config.fatal("Unable to build JIT support library")
|
||||
|
||||
personality_lib = os.path.join(personality_build, 'libartiq_personality.so')
|
||||
config.substitutions.append( ('%personality', personality_lib) )
|
||||
config.environment['LIBARTIQ_PERSONALITY'] = personality_lib
|
||||
|
||||
config.available_features.add('exceptions')
|
||||
|
|
Loading…
Reference in New Issue