]> granicus.if.org Git - clang/commit
Omit arguments of __builtin_object_size from the CFG.
authorJordan Rose <jordan_rose@apple.com>
Mon, 19 Aug 2013 16:27:28 +0000 (16:27 +0000)
committerJordan Rose <jordan_rose@apple.com>
Mon, 19 Aug 2013 16:27:28 +0000 (16:27 +0000)
commit7d0dcd2de023e2667a3f1f14daff9d087fab9bf7
tree7cd9f0c5a3b4ffc826a83f47f07fc7fde207617c
parent9af20d8187384b841a6244ab81c8a57b010d72d0
Omit arguments of __builtin_object_size from the CFG.

This builtin does not actually evaluate its arguments for side effects,
so we shouldn't include them in the CFG. In the analyzer, rely on the
constant expression evaluator to get the proper semantics, at least for
now. (In the future, we could get ambitious and try to provide path-
sensitive size values.)

In theory, this does pose a problem for liveness analysis: a variable can
be used within the __builtin_object_size argument expression but not show
up as live. However, it is very unlikely that such a value would be used
to compute the object size and not used to access the object in some way.

<rdar://problem/14760817>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@188679 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Analysis/CFG.cpp
lib/StaticAnalyzer/Checkers/BuiltinFunctionChecker.cpp
test/Analysis/builtin-functions.cpp
test/Analysis/cfg.cpp