[CFG] Fix CFG for statement-expressions in return values.
authorArtem Dergachev <artem.dergachev@gmail.com>
Thu, 29 Aug 2019 20:37:28 +0000 (20:37 +0000)
committerArtem Dergachev <artem.dergachev@gmail.com>
Thu, 29 Aug 2019 20:37:28 +0000 (20:37 +0000)
commite5c0994ddfcf64bbc7e65ebb68890e98141b84d9
tree24cc6e0a6cfe5c838f51e883c5e1b374acfa2e26
parentfe47ed67fcca1ab5bcb0feb65c6b608137d91140
[CFG] Fix CFG for statement-expressions in return values.

We're building the CFG from bottom to top, so when the return-value expression
has a non-trivial CFG on its own, we need to continue building from the entry
to the return-value expression CFG rather than from the block to which
we've just appended the return statement.

Fixes a false positive warning "control may reach end of non-void function".

llvm-svn: 370406
clang/lib/Analysis/CFG.cpp
clang/test/Analysis/cfg.cpp
clang/test/Sema/return.c