It was previously reverted by8406839d19. --- This flag was introduced by6818991d71commit6818991d71Author: Ted Kremenek <kremenek@apple.com> Date: Mon Dec 7 22:06:12 2009 +0000 Add clang-cc option '-analyzer-opt-analyze-nested-blocks' to treat block literals as an entry point for analyzer checks. The last reference was removed by this commit:5c32dfc5fbcommit5c32dfc5fbAuthor: Anna Zaks <ganna@apple.com> Date: Fri Dec 21 01:19:15 2012 +0000 [analyzer] Add blocks and ObjC messages to the call graph. This paves the road for constructing a better function dependency graph. If we analyze a function before the functions it calls and inlines, there is more opportunity for optimization. Note, we add call edges to the called methods that correspond to function definitions (declarations with bodies). Consequently, we should remove this dead flag. However, this arises a couple of burning questions. - Should the `cc1` frontend still accept this flag - to keep tools/users passing this flag directly to `cc1` (which is unsupported, unadvertised) working. - If we should remain backward compatible, how long? - How can we get rid of deprecated and obsolete flags at some point? Reviewed By: martong Differential Revision: https://reviews.llvm.org/D126067
21 lines
875 B
C++
21 lines
875 B
C++
// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin9 -analyzer-checker=core,osx -verify -fblocks %s
|
|
// expected-no-diagnostics
|
|
|
|
// Test handling of OSAtomicCompareAndSwap when C++ inserts "no-op" casts and we
|
|
// do a forced load and binding to the environment on an expression that would regularly
|
|
// not have an environment binding. This previously triggered a crash (<rdar://problem/9339920>).
|
|
// NOTE: It is critical that the function called is OSAtomicCompareAndSwapIntBarrier.
|
|
bool OSAtomicCompareAndSwapIntBarrier( int __oldValue, int __newValue, volatile int *__theValue ) ;
|
|
static int _rdar9339920_x = 0;
|
|
int rdar9339920_aux();
|
|
|
|
int rdar9339920_test() {
|
|
int rdar9339920_x = rdar9339920_aux();
|
|
if (rdar9339920_x != _rdar9339920_x) {
|
|
if (OSAtomicCompareAndSwapIntBarrier(_rdar9339920_x, rdar9339920_x, &_rdar9339920_x))
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
|