[LLVMdev] LLVMdev Digest, Vol 86, Issue 5

Peter Lawrence peterl95124 at sbcglobal.net
Thu Aug 4 14:58:08 PDT 2011


Bill,
         I suspect we're talking about two different aspects,
I think you are saying that there is an ability for the DWARF Actions  
Table
to contain multiple lists, including multiple filter lists - no  
disagreement
there,
I am saying that for any one landing-pad it might not make sense
for it to be able to have more than one filter list.


-Peter Lawrence.


On Aug 4, 2011, at 2:38 PM, Bill Wendling wrote:

> On Aug 4, 2011, at 2:03 PM, Peter Lawrence wrote:
>
>> Bill et al,
>>                 I haven't really thought this through (I've never  
>> been a fan of exception specifications),
>> but it seems that inlining functions that do have exception  
>> specifications, and hence filter
>> operands in their landing-pads, isn't so obvious...
>>
>> if  you want to  inline
>>
>> 	void foo () throw() { ... }		// empty throw() list means "no-throw"
>>
>> into a function that does allow exceptions to be propagated out,  
>> then you'll have a hard time
>> combining their landing pads !
>>
>> it seems, at least on first thought, that having more than one  
>> filter list in a landing pad isn't
>> useful ?  (assuming the only way to get more than one is from  
>> inlining ?)
>>
> The exception tables are set up to allow for multiple exception  
> specifications per function. So if we inline a function with  
> exception spec of A, B, C into one with an exception spec of D, E  
> then it's totally doable. The table will look something like this:
>
>   A
>   B
>   C
>   0
>   D
>   E
>   0
>
> And the "action" part of the table will point to the correct  
> exception spec start (A or D) depending on what state the exception  
> is at a given time. (I.e., is it in a "resume" situation or "catch"  
> situation.)
>
> -bw
>




More information about the llvm-dev mailing list