New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
New ARM backend #5433
Comments
Comment author: meurer Attached a new patch, which does no longer includes the config.guess/config.sub upgrade (see #5439 for that), therefore only half the size of the previous patch. |
Comment author: @xavierleroy I have a concern about Proc.destroyed_at_oper, case Iop(Iextcall(, true)): the result should really be all_phys_regs as in the original code. Indeed, an allocating extcall can raise a Caml exception, which will not reload any of the callee-save registers. Also, such an extcall can trigger a GC, and if GC roots are stored in callee-save regs across the Iextcall, the GC assumes that these callee-save regs have been saved in memory in a location pointed to by caml_gc_regs (cf. caml_call_gc in asmrun/.S). For both reasons, all Caml values live across a Iextcall(, true) must be stack-allocated, and this is achieved by saying that the Iextcall destroys all registers. |
Comment author: meurer Ok, makes sense. It's fixed in ocaml-arm: |
Comment author: meurer I just merged the latest commit ec5b444c7f of my development repository at https://github.com/bmeurer/ocaml-arm/tree/ec5b444c7f into trunk with revision 12124. |
Original bug ID: 5433
Reporter: meurer
Assigned to: meurer
Status: closed (set by meurer on 2013-05-08T13:26:27Z)
Resolution: fixed
Priority: normal
Severity: major
Platform: ARM
OS: Linux
Version: 3.12.1
Fixed in version: 4.00.0+beta2/+rc1
Category: ~DO NOT USE (was: OCaml general)
Has duplicate: #5404
Monitored by: mehdi @glondu Camarade_Tux @hcarty
Bug description
The following is basically copy&paste from https://github.com/bmeurer/ocaml-arm/wiki:
This patch contains my work on a new ARM backend for the OCaml native code compiler, currently based on the 3.12.1 release. Compared to the old ARM backend, this one does the following:
See https://github.com/bmeurer/ocaml-arm/wiki for up-to-date information about the current state of the patch.
The latest patch is attached, but it's not necessarily the final patch. It's almost a complete rewrite of the ARM backend, so it will need some more testing.
File attachments
The text was updated successfully, but these errors were encountered: