summaryrefslogtreecommitdiffstats
path: root/clang/test/Analysis/cxx-uninitialized-object.cpp
diff options
context:
space:
mode:
authorKristof Umann <kristof.umann@ericsson.com>2019-04-30 08:47:56 +0000
committerKristof Umann <kristof.umann@ericsson.com>2019-04-30 08:47:56 +0000
commitc21ec00d2852fdbae9cf803602276e4f26ce76c1 (patch)
treedeb26caf30811fc5d30d77799cedfdf54da5ac74 /clang/test/Analysis/cxx-uninitialized-object.cpp
parentf74a4c1f6df9a2ccc2c871113a527c1dc2c874e3 (diff)
downloadbcm5719-llvm-c21ec00d2852fdbae9cf803602276e4f26ce76c1.tar.gz
bcm5719-llvm-c21ec00d2852fdbae9cf803602276e4f26ce76c1.zip
[analyzer][UninitializedObjectChecker] PR41611: Regard vector types as primitive
https://bugs.llvm.org/show_bug.cgi?id=41611 Similarly to D61106, the checker ran over an llvm_unreachable for vector types: struct VectorSizeLong { VectorSizeLong() {} __attribute__((__vector_size__(16))) long x; }; void __vector_size__LongTest() { VectorSizeLong v; } Since, according to my short research, "The vector_size attribute is only applicable to integral and float scalars, although arrays, pointers, and function return values are allowed in conjunction with this construct." [src: https://gcc.gnu.org/onlinedocs/gcc-4.6.1/gcc/Vector-Extensions.html#Vector-Extensions] vector types are safe to regard as primitive. Differential Revision: https://reviews.llvm.org/D61246 llvm-svn: 359539
Diffstat (limited to 'clang/test/Analysis/cxx-uninitialized-object.cpp')
-rw-r--r--clang/test/Analysis/cxx-uninitialized-object.cpp15
1 files changed, 13 insertions, 2 deletions
diff --git a/clang/test/Analysis/cxx-uninitialized-object.cpp b/clang/test/Analysis/cxx-uninitialized-object.cpp
index 86f2ecdd83a..a8113198541 100644
--- a/clang/test/Analysis/cxx-uninitialized-object.cpp
+++ b/clang/test/Analysis/cxx-uninitialized-object.cpp
@@ -1132,7 +1132,7 @@ void fCXX11MemberInitTest2() {
}
//===----------------------------------------------------------------------===//
-// _Atomic tests.
+// "Esoteric" primitive type tests.
//===----------------------------------------------------------------------===//
struct MyAtomicInt {
@@ -1142,6 +1142,17 @@ struct MyAtomicInt {
MyAtomicInt() {} // expected-warning{{1 uninitialized field}}
};
-void entry() {
+void _AtomicTest() {
MyAtomicInt b;
}
+
+struct VectorSizeLong {
+ VectorSizeLong() {}
+ __attribute__((__vector_size__(16))) long x;
+};
+
+void __vector_size__LongTest() {
+ // TODO: Warn for v.x.
+ VectorSizeLong v;
+ v.x[0] = 0;
+}
OpenPOWER on IntegriCloud