On 7/22/2013 2:13 AM, Duncan Sands wrote:
> For example, you could declare every function to return
> two results, the usual one and an additional i1 result. If the i1 value
> returned is 1 then this means that "an exception is being unwound", and the
> caller should jump to the landing pad if there is one; and if there
> isn't then
> it itself should return 1.
The major problem with this is that you would introduce explicit
instructions that would not correspond to any executable code. In
practice it may be nearly impossible to eliminate them.
If all functions that "may-unwind" were only called via invoke, the
landing pad could simply do "resume" to pass control up the call stack.