terralang / terra

Terra is a low-level system programming language that is embedded in and meta-programmed by the Lua programming language.
terralang.org
Other
2.71k stars 197 forks source link

Enable opaque pointers in LLVM 16 #641

Closed elliottslaughter closed 9 months ago

elliottslaughter commented 11 months ago

If this PR works, then we'll be past the transition and will be able to complete #553.

elliottslaughter commented 11 months ago

I'm hitting a 96% pass rate now (LLVM 16):

96% tests passed, 24 tests failed out of 550

Total Test time (real) =  17.21 sec

The following tests FAILED:
     19 - array.t (SEGFAULT)
     37 - blocking2-fixed.t (SEGFAULT)
     38 - blocking2.t (SEGFAULT)
     39 - blocking3.t (SEGFAULT)
     41 - bounce.t (SEGFAULT)
     53 - call.t (SEGFAULT)
     59 - cconv.t (SEGFAULT)
     65 - class.t (SEGFAULT)
     70 - class6.t (Subprocess aborted)
     90 - coverage3.t (SEGFAULT)
    121 - defercond.t (SEGFAULT)
    129 - diffuse.t (SEGFAULT)
    334 - let2.t (Subprocess aborted)
    348 - luaterramethod.t (SEGFAULT)
    362 - method.t (SEGFAULT)
    401 - overloadmethod.t (SEGFAULT)
    404 - overloadproduct.t (SEGFAULT)
    411 - pattern.t (SEGFAULT)
    452 - scc.t (Subprocess aborted)
    478 - ssimple.t (SEGFAULT)
    482 - stencil.t (SEGFAULT)
    521 - teststd.t (SEGFAULT)
    522 - testvector.t (SEGFAULT)
    523 - torturechain.t (SEGFAULT)

Bizarrely, I had to disable deletion of function bodies when running with opaque pointers or else nearly any test with two or more functions would fail (something like 85% of the test suite). Worked around for now, but I wonder if that's an LLVM bug.

elliottslaughter commented 9 months ago

Superseded by #643.