responses to the Exception Handling Proposal are "all over the map", including at least....
1. what are the semantics of the various high level languages, and how are these constructs
to be lowered into an IR
2. what should the IR be
3. what should the final output code format and layout be, and to what extent can/should
this be compatible with any existing runtime environments and ABIs
4. what exception specific optimizations can be done on this IR
5. what "zero cost when no exception is thrown" degree of achievement is possible
concerning #2, I have a question relative to the "Proposal", is a "region" a basic block or not ?
I ask because it is not clear at least to me what the proposer intended, and it is crucial...
All the existing analysis and optimization phases are designed to operate on basic blocks,
and the definition of a basic block is not flexible, you cannot leave a basic block from the
middle of it (if you can then for example a register allocator cannot know where within
a basic block spill/fill code for global registers can be inserted because you cannot know
if any specific location within the block will actually be executed before you "leave"
from the block).
I believe other folks have already tried to raise this question, but when formulated in terms of
phi nodes or what ever neither the question nor the answer are as clear as when it is formulated
in terms of basic blocks.....
sincerely,
Peter Lawrence.