[llvm-commits] [llvm] r86897 - /llvm/trunk/lib/CodeGen/AsmPrinter/DwarfException.cpp

Bill Wendling isanbard at gmail.com
Thu Nov 12 11:36:24 PST 2009


On Nov 12, 2009, at 11:27 AM, Duncan Sands wrote:

> Hi Bill,
>
>>> doesn't this mean that if a pointer to a nounwind function is  
>>> passed as a
>>> call parameter (rather than as the callee), then DoesNotThrow is  
>>> set to true?
>>>
>> If such an instruction existed, then I suppose. What's the best way  
>> to determine that it's the "callee" and not a parameter? Do you  
>> have an example to work with?
>
> I actually think the approach is wrong.

I'm not surprised. :)

> A call can be "nounwind" without the
> callee necessarily being nounwind.  Your patch only catches the case  
> of the
> callee being nounwind.  The CallSite doesNotThrow method checks for  
> both of
> these possibilities.  I think what should happen is: at the moment  
> of lowering
> the IR to SDAG nodes, check "doesNotThrow" on calls and set a  
> corresponding
> flag in the SDAG node.  Check this flag when outputting the dwarf  
> table.

Possible. Though at the point of DWARF generation, we don't have the  
SDAG nodes anymore. So it would have to be propagated to the CALL  
instruction.

-bw

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20091112/aeaf5a6a/attachment.html>


More information about the llvm-commits mailing list