[PATCH] D94633: [FunctionAttrs] Infer willreturn for functions without loops
Nikita Popov via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Jan 14 10:01:00 PST 2021
nikic marked an inline comment as done.
nikic added inline comments.
================
Comment at: lib/Transforms/IPO/FunctionAttrs.cpp:1441
+ SmallVector<std::pair<const BasicBlock *, const BasicBlock *>> Backedges;
+ FindFunctionBackedges(F, Backedges);
+ if (!Backedges.empty())
----------------
fhahn wrote:
> We do not really need to find all back edges, wouldn't it be sufficient to just traverse the CFG and exit once we found a cycle?
I don't think FindFunctionBackedges is expensive enough to warrant reimplementing it here. Note that just keeping a visited set doesn't cut it, as that would detect any join point. You need to perform a DFS search, and doing that non-recursively is ugly enough that I'd rather not repeat it.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D94633/new/
https://reviews.llvm.org/D94633
More information about the llvm-commits
mailing list