Home - Summaries: (main) : (py3.11) : Everything - Nightly builds - Benchmarks - RPython - Builders - About

jit/backend/aarch64/test/test_ztranslation_basic.py::TestTranslationAarch64::()::test_stuff_translates

self = <rpython.jit.backend.aarch64.test.test_ztranslation_basic.TestTranslationAarch64 object at 0x0000000170a734e8>

        def test_stuff_translates(self):
            # this is a basic test that tries to hit a number of features and their
            # translation:
            # - jitting of loops and bridges
            # - two virtualizable types
            # - set_param interface
            # - profiler
            # - full optimizer
            # - floats neg and abs
            # - cast_int_to_float
            # - llexternal with macro=True
            # - extra place for the zero after STR instances
    
            class BasicFrame(object):
                _virtualizable_ = ['i']
    
                def __init__(self, i):
                    self.i = i
    
            class Frame(BasicFrame):
                pass
    
            eci = ExternalCompilationInfo(post_include_bits=['''
    #define pypy_my_fabs(x)  fabs(x)
    '''], includes=['math.h'])
            myabs1 = rffi.llexternal('pypy_my_fabs', [lltype.Float],
                                     lltype.Float, macro=True, releasegil=False,
                                     compilation_info=eci)
            myabs2 = rffi.llexternal('pypy_my_fabs', [lltype.Float],
                                     lltype.Float, macro=True, releasegil=True,
                                     compilation_info=eci)
    
            @jl.returns(jl.MP_FILENAME,
                        jl.MP_LINENO,
                        jl.MP_INDEX)
            def get_location():
                return ("/home.py",0,0)
    
            jitdriver = JitDriver(greens = [],
                                  reds = ['total', 'frame', 'prev_s', 'j'],
                                  virtualizables = ['frame'],
                                  get_location = get_location)
            def f(i, j):
                for param, _ in unroll_parameters:
                    defl = PARAMETERS[param]
                    set_param(jitdriver, param, defl)
                set_param(jitdriver, "threshold", 3)
                set_param(jitdriver, "trace_eagerness", 2)
                total = 0
                frame = Frame(i)
                j = float(j)
                prev_s = rstr.mallocstr(16)
                while frame.i > 3:
                    jitdriver.can_enter_jit(frame=frame, total=total, j=j,
                                            prev_s=prev_s)
                    jitdriver.jit_merge_point(frame=frame, total=total, j=j,
                                              prev_s=prev_s)
                    _get_virtualizable_token(frame)
                    total += frame.i
                    if frame.i >= 20:
                        frame.i -= 2
                    frame.i -= 1
                    j *= -0.712
                    if j + (-j):    raise ValueError
                    j += frame.i
                    k = myabs1(myabs2(j))
                    if k - abs(j):  raise ValueError
                    if k - abs(-j): raise ValueError
                    s = rstr.mallocstr(16)
                    rgc.ll_write_final_null_char(s)
                    rgc.ll_write_final_null_char(prev_s)
                    if (frame.i & 3) == 0:
                        prev_s = s
                return chr(total % 253)
            #
            class Virt2(object):
                _virtualizable_ = ['i']
                def __init__(self, i):
                    self.i = i
            from rpython.rlib.libffi import types, CDLL, ArgChain
            from rpython.rlib.test.test_clibffi import get_libm_name
            libm_name = get_libm_name(sys.platform)
            jitdriver2 = JitDriver(greens=[], reds = ['v2', 'func', 'res', 'x'],
                                   virtualizables = ['v2'])
            def libffi_stuff(i, j):
                lib = CDLL(libm_name)
                func = lib.getpointer('fabs', [types.double], types.double)
                res = 0.0
                x = float(j)
                v2 = Virt2(i)
                while v2.i > 0:
                    jitdriver2.jit_merge_point(v2=v2, res=res, func=func, x=x)
                    promote(func)
                    argchain = ArgChain()
                    argchain.arg(x)
                    res = func.call(argchain, rffi.DOUBLE)
                    v2.i -= 1
                return res
            #
            def main(i, j):
                a_char = f(i, j)
                a_float = libffi_stuff(i, j)
                return ord(a_char) * 10 + int(a_float)
            expected = main(40, -49)
>           res = self.meta_interp(main, [40, -49])

jit/backend/llsupport/test/ztranslation_test.py:127: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
jit/backend/test/support.py:75: in meta_interp
    return self._compile_and_run(t, entry_point, entry_point_graph, args)
jit/backend/test/support.py:132: in _compile_and_run
    exe_name = cbuilder.compile()
translator/c/genc.py:341: in compile
    extra_opts)
translator/platform/posix.py:277: in execute_makefile
    self._handle_error(returncode, stdout, stderr, path.join('make'))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <Darwin_arm64 cc=clang>, returncode = 2
stdout = 'clang -O3 -fomit-frame-pointer -Wno-duplicate-decl-specifier -mmacosx-version-min=10.13 -arch arm64 -mdynamic-no-pic ...ld/rpython"/rlib/rjitlog/src -I"/Users/matti/build-worker-arm64/rpython-macos-arm64/build/rpython"/rlib/rvmprof/src \n'
stderr = "testing_1.c:58:2: warning: 'GC_all_interior_pointers' is deprecated [-Wdeprecated-declarations]\n   58 |         GC_a...memcpy;\n       |                  ^ ~~~~~~\n1 error generated.\nmake: *** [rpython_jit_backend_llsupport.o] Error 1\n"
outname = local('/tmp/buildbot-arm64/usession-pytest3.10-886/testing_1/make')

    def _handle_error(self, returncode, stdout, stderr, outname):
        if returncode != 0:
            errorfile = outname.new(ext='errors')
            errorfile.write(stderr, 'wb')
            if self.log_errors:
                stderrlines = stderr.splitlines()
                for line in stderrlines:
                    log.Error(line)
                # ^^^ don't use ERROR, because it might actually be fine.
                # Also, ERROR confuses lib-python/conftest.py.
>           raise CompilationError(stdout, stderr)
E           CompilationError: CompilationError(err="""
E           	testing_1.c:58:2: warning: 'GC_all_interior_pointers' is deprecated [-Wdeprecated-declarations]
E           	   58 |         GC_all_interior_pointers = 0;
E           	      |         ^
E           	/opt/homebrew/Cellar/bdw-gc/8.2.12/include/gc/gc.h:193:8: note: 'GC_all_interior_pointers' has been explicitly marked deprecated here
E           	  193 | GC_API GC_ATTR_DEPRECATED int GC_all_interior_pointers;
E           	      |        ^
E           	/opt/homebrew/Cellar/bdw-gc/8.2.12/include/gc/gc_config_macros.h:309:46: note: expanded from macro 'GC_ATTR_DEPRECATED'
E           	  309 | #   define GC_ATTR_DEPRECATED __attribute__((__deprecated__))
E           	      |                                              ^
E           	1 warning generated.
E           	rpython_jit_backend_llsupport.c:13167:11: error: incompatible function pointer types assigning to 'void (*)(void *, void *, size_t)' (aka 'void (*)(void *, void *, unsigned long)') from 'void *(void *, const void *, unsigned long)' [-Wincompatible-function-pointer-types]
E           	 13167 |         l_v30166 = memcpy;
E           	       |                  ^ ~~~~~~
E           	1 error generated.
E           	make: *** [rpython_jit_backend_llsupport.o] Error 1
E           	""")

translator/platform/__init__.py:155: CompilationError
 (somefailed=True in jit/backend/aarch64/test/test_ztranslation_basic.py)
builder: rpython-macos-arm64 build #265+
test: jit/backend/aarch64/test/test_ztranslation_basic.py::TestTranslationAarch64::()::test_stuff_translates