mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-01-15 12:39:19 +00:00
574d78e78e
rdar://13729267 Differential Revision: https://reviews.llvm.org/D51323 llvm-svn: 340986
36 lines
814 B
C++
36 lines
814 B
C++
// RUN: %clang_analyze_cc1 -analyzer-checker=core.builtin -verify -DCHECK_FOR_CRASH %s
|
|
// RUN: %clang_analyze_cc1 -analyzer-checker=core -verify -analyzer-output=text %s
|
|
|
|
#ifdef CHECK_FOR_CRASH
|
|
// expected-no-diagnostics
|
|
#endif
|
|
|
|
namespace PerformTrivialCopyForUndefs {
|
|
struct A {
|
|
int x;
|
|
};
|
|
|
|
struct B {
|
|
A a;
|
|
};
|
|
|
|
struct C {
|
|
B b;
|
|
};
|
|
|
|
void foo() {
|
|
C c1;
|
|
C *c2;
|
|
#ifdef CHECK_FOR_CRASH
|
|
// If the value of variable is not defined and checkers that check undefined
|
|
// values are not enabled, performTrivialCopy should be able to handle the
|
|
// case with undefined values, too.
|
|
c1.b.a = c2->b.a;
|
|
#else
|
|
c1.b.a = c2->b.a; // expected-warning{{1st function call argument is an uninitialized value}}
|
|
// expected-note@-1{{1st function call argument is an uninitialized value}}
|
|
#endif
|
|
}
|
|
}
|
|
|