[PATCH] D138958: [clang] Better UX for Clang’s unwind-affecting attributes
Roman Lebedev via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Dec 1 13:41:31 PST 2022
lebedev.ri marked an inline comment as done.
lebedev.ri added inline comments.
================
Comment at: clang/lib/Analysis/CFG.cpp:2725
NoReturn = true;
- if (FD->hasAttr<NoThrowAttr>())
+ if (FD->hasAttr<NoUnwindAttr>() || FD->hasAttr<NoThrowAttr>())
AddEHEdge = false;
----------------
erichkeane wrote:
> lebedev.ri wrote:
> > erichkeane wrote:
> > > I find myself thinking we should probably have a function in FunctionDecl that tests for the various states of the function, rather than keep checking the attribute's presence.
> > Yes, we have a huge spaghetti code spread through clang
> > that tries to answer the same two question:
> > 1. i'm a caller, if i call this function, might it throw?
> > 1. i'm a callee, what should i do with exceptions that try to unwind out of me?
> >
> > I don't know how to improve that, and i don't think just moving this into FunctionDecl would help.
> >
> `FunctionDecl::WontThrow` and `FunctionDecl::ShouldUnwind` ?
As noted in the RFC, there are 3 possible behaviors on unwind.
If we want to improve interface, we should account for all of them.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D138958/new/
https://reviews.llvm.org/D138958
More information about the cfe-commits
mailing list