[m-rev.] Where to check foreign_proc attributes?
Ben Schmidt
b.schmidt at ugrad.unimelb.edu.au
Fri Jan 12 19:15:17 AEDT 2007
Hi,
I need to implement some checking of foreign_proc attributes. Certain
combinations of attributes need to generate compile-time warnings or
errors. They should be errors in agc grades and warnings in other
grades. They don't really depend on anything except for the list of
attributes and the grade. So...
1. It could probably be done at parsing-time, while conflicting
attributes are checked for (prog_io_pragma.m), except there isn't a way
to access globals there, so I couldn't differentiate between warnings
and errors based on the gc method, or at least, not as far as I can
tell. And actually, I'm not sure warnings can be output at all at this
stage.
2. It could be done at code-generation time (while converting
HLDS->MLDS; ml_code_gen.m), but that's not really the right place to be
detecting errors, and they won't be detected at all unless the right
backend is being used.
3. They could be done as checks on the HLDS...but where should they be
incorporated (submodule of check_hlds.m)? They are not type, mode or
determinism checks, nor are they various code simplifications or
module-level checks. One thought is to incorporate them in
clause_to_proc.m, as they are essentially procedure-based
checks...but...as that operation is abstracted away from implementation
detail, the globals and hence gc method aren't available there either,
so the warning/error distinction can't be drawn.
4. Maybe they could be done in an optimisation pass
(transform_hlds.m)--but is there an appropriate one which can't be
turned off (or can all of them be turned off), as they are semantic
errors that need to be picked up? dead_proc_elim.m is potentially a
place it could be done, I think, but it may be turned off. I don't think
the tiny amount of checking that needs to be done warrants an extra pass.
So...I'm a bit stuck as to where is the best place to slot this in.
Anyone have any ideas?
Ben.
--------------------------------------------------------------------------
mercury-reviews mailing list
Post messages to: mercury-reviews at csse.unimelb.edu.au
Administrative Queries: owner-mercury-reviews at csse.unimelb.edu.au
Subscriptions: mercury-reviews-request at csse.unimelb.edu.au
--------------------------------------------------------------------------
More information about the reviews
mailing list