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
Extended static exceptions for 4.05 #524
Conversation
e24b932
to
7d2e76a
Compare
Rebased on latest trunk. |
7d2e76a
to
f3fd41d
Compare
This is pure bikeshedding, but I would suggest something like |
(I am going to review this GPR in detail) |
We decided to leave the name change until later. I've reviewed this carefully and discussed the details with Pierre. I have pushed code review comments to the recursive_static_exceptions branch on my Github account. Once Pierre attends to these, which are generally fairly minor things, I think this is OK to merge. @xavierleroy Are you happy with this? |
f3fd41d
to
b406daa
Compare
The changed discussed have been made. Also rebased. |
I forgot to push an update of the testsuite parser, here it is. By the way, the travis CI rightfully failed, but not appveyor. Is it not running the testsuite ? Apparently it is skipping the asmcomp part of the testsuite. Is there any reason for that ? |
@chambart Can we get this into trunk? |
No, it's not mergeable, there are conflicts that must be resolved... |
343ca8f
to
02526fe
Compare
This is now rebased on current trunk. The main conflics where comming from spacetime integration. |
02526fe
to
4b5a397
Compare
Rebased again against lastest trunk (cmm debuginfo conflicts mainly). This branch clearly wins the title of my most rebased branche. |
When this flag is Nonrecursive, we can avoid iterating on various passes. This makes exponential time cases more unlikely.
4b5a397
to
0fba416
Compare
I believe this is ok for 4.05 following previous discussions and code review. |
Co-authored-by: Thibaut Mattio <thibaut.mattio@gmail.com>
This branch is an update of #98 for 4.04
This only contains the part about extending the Cmm Ccatch construction to allow recursive cases and the handling in further backend passes.
As noted by @xavierleroy in the other pull request, the name of this construction should change, but for patch maintanability, I'd prefer to do that in a separate patch if this one is accepted.
I didn't change it yet, but I'd like to require a
rec
annotation for recursive cases. Mainly for being more explicit and allow to be a bit faster in the passes that needs to reach a fixpoint in the recursive case.Notice that now, registers are a bit more typed. Currently this patch only accept registers of type
val
as arguments (as before), but we might need to put anything in there (in particular values built with Ctuple). There are multiple possibilities to do that, but I don't want to finish implementing any before having received some feedback on what would be prefered.Val
annotation everywhere).Note that for testing purpose I extended a bit the cmm parser to accept actual output of
-dcmm
and be a bit more convenient.Nothing except the backend change is provided here, in particular, the generated code won't benefit for any optimisation yet. There is a small difference in the output of Selectgen as recursive cases might require an additionnal register move (as shown in the following swap example). When this is not required, the register allocator should coalesce the intermediate temporary registers and the generated code shouldn't differ.
The first thing to do after a potential merge of this is a cleanup: rename the constructors, remove the Cloop construction, then propagate those constructions up to flambda.