[llvm-commits] [PATCH] Newest LandingPad Patch

John McCall rjmccall at apple.com
Mon Aug 8 01:34:23 PDT 2011


On Aug 8, 2011, at 12:03 AM, John McCall wrote:

> 
> On Aug 7, 2011, at 11:58 PM, Chris Lattner wrote:
> 
>> 
>> On Aug 7, 2011, at 11:37 PM, John McCall wrote:
>> 
>>> On Aug 7, 2011, at 10:57 PM, Chris Lattner wrote:
>>>> On Aug 7, 2011, at 7:38 PM, Bill Wendling wrote:
>>>> 
>>>>> Ping?
>>>> 
>>>> Sorry for the delay.  It looks like you haven't updated the patch to match LangRef to know that clauses can't have multiple values.
>>> 
>>> Wait, I could've sworn I reviewed that.  'filter' has to take 0 to N values; there's really no way around it, because nesting is disjunctive and we need conjunction.  The only way we can do it with exactly one value per clause is to require that value to be a ConstantArray — although, come to think of it, that's doable, if ugly.
>> 
>> You're saying that "filter a, b, c" is not the same as "filter a, filter b, filter c"?
> 
> Correct.  The first filters out exceptions they aren't a and aren't b and aren't c, and the second trips on exceptions if they aren't a, or they aren't b, or they aren't c.

Sorry, grammar fail.

An exception specificaiton which lists three types will result in a call to std::unexpected() if an exception is thrown which cannot be caught by any of those types.  Three nested exception specifications listing one type each will result in a call to std::unexpected() if an exception is thrown which cannot be caught by each of those types individually.  Additionally, std::unexpected() can substitute a new exception as long as it passes the tripped exception specification, so the semantics do require individually processing exception specifications unless the outer spec is at least as "forgiving" as the inner spec.

John.



More information about the llvm-commits mailing list