]> granicus.if.org Git - clang/commit
[ubsan] Diagnose noreturn functions which return
authorVedant Kumar <vsk@apple.com>
Thu, 21 Dec 2017 00:10:25 +0000 (00:10 +0000)
committerVedant Kumar <vsk@apple.com>
Thu, 21 Dec 2017 00:10:25 +0000 (00:10 +0000)
commit817fbca018efa895e6d0361fd98abb5a5b1d2ae1
tree92345f3583d8fe64833b5318b86b531f610197b0
parent5c061b7b668221ce0e5ff6d40cc7bba7374ce83c
[ubsan] Diagnose noreturn functions which return

Diagnose 'unreachable' UB when a noreturn function returns.

  1. Insert a check at the end of functions marked noreturn.

  2. A decl may be marked noreturn in the caller TU, but not marked in
     the TU where it's defined. To diagnose this scenario, strip away the
     noreturn attribute on the callee and insert check after calls to it.

Testing: check-clang, check-ubsan, check-ubsan-minimal, D40700

rdar://33660464

Differential Revision: https://reviews.llvm.org/D40698

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@321231 91177308-0d34-0410-b5e6-96231b3b80d8
docs/UndefinedBehaviorSanitizer.rst
lib/CodeGen/CGBuiltin.cpp
lib/CodeGen/CGCall.cpp
lib/CodeGen/CGExpr.cpp
lib/CodeGen/CGExprCXX.cpp
lib/CodeGen/CodeGenFunction.h
test/CodeGen/ubsan-noreturn.c [new file with mode: 0644]
test/CodeGenCXX/ubsan-unreachable.cpp [new file with mode: 0644]