mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-01-10 01:55:08 +00:00
4fb586c349
When an object's class provides no destructor, it's less important to materialize that object properly because we don't have to model the destructor correctly, so previously we skipped the support for these syntax patterns. Additionally, fix support for construction contexts of "static temporaries" (temporaries that are lifetime-extended by static references) because it turned out that we only had tests for them without destructors, which caused us to regress when we re-introduced the construction context for such temporaries. Differential Revision: https://reviews.llvm.org/D47658 llvm-svn: 335796
32 lines
858 B
C++
32 lines
858 B
C++
// RUN: %clang_cc1 -analyze -analyzer-checker=debug.AnalysisOrder -analyzer-config debug.AnalysisOrder:Bind=true -analyzer-config debug.AnalysisOrder:RegionChanges=true %s 2>&1 | FileCheck %s
|
|
|
|
struct Super {
|
|
virtual void m();
|
|
};
|
|
struct Sub : Super {
|
|
virtual void m() {}
|
|
};
|
|
|
|
void testTemporaries() {
|
|
// This triggers RegionChanges once for zero-initialization of the structure.
|
|
Sub().m();
|
|
}
|
|
|
|
void seeIfCheckBindWorks() {
|
|
// This should trigger checkBind. The rest of the code shouldn't.
|
|
// This also triggers checkRegionChanges after that.
|
|
// Note that this function is analyzed first, so the messages would be on top.
|
|
int x = 1;
|
|
}
|
|
|
|
// seeIfCheckBindWorks():
|
|
// CHECK: Bind
|
|
// CHECK-NEXT: RegionChanges
|
|
|
|
// testTemporaries():
|
|
// CHECK-NEXT: RegionChanges
|
|
|
|
// Make sure there's no further output.
|
|
// CHECK-NOT: Bind
|
|
// CHECK-NOT: RegionChanges
|