[LLVMdev] [cfe-dev] Unwind behaviour in Clang/LLVM
Renato Golin
renato.golin at linaro.org
Tue Feb 11 01:40:44 PST 2014
On 10 February 2014 14:44, Rafael EspĂndola <rafael.espindola at gmail.com> wrote:
> Just that: unwind tables are output for the function, even if nothing
> else seems to say they are necessary.
Right, I shall rely on that behaviour when preparing my patch and we
shall see how it behaves on EHABI land. Maybe shouldEmitMoves will
have to change, but I'm hoping it doesn't.
> The semantics uwtable is just "make sure it is possible to unwind past
> this function". It doesn't include anything more,
> like the ability to run destructors. It is used for ABIs that require
> it for use in debuggers and profilers.
Well, that meaning fails when you have both uwtable and nounwind,
which means: "generate a CantUnwind table".
> I am not too sure about nounwind. I think it is more about using
> unwind for control flow in the language. Having it allows us
> to prune information used for exception handling.
nounwind translates into "doesNotThrow()", which is *also* used on
"needsUnwindTables()" which is used in "needsCFIMoves()".
It's not simple. ;)
cheers,
--renato
More information about the llvm-dev
mailing list