]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/Analysis/cxx11-crashes.cpp
Vendor import of clang release_34 branch r197841 (effectively, 3.4 RC3):
[FreeBSD/FreeBSD.git] / test / Analysis / cxx11-crashes.cpp
1 // RUN: %clang_cc1 -analyze -analyzer-checker=core -std=c++11 -verify %s
2 // expected-no-diagnostics
3
4 // radar://11485149, PR12871
5 class PlotPoint {
6   bool valid;
7 };
8
9 PlotPoint limitedFit () {
10   PlotPoint fit0;
11   fit0 = limitedFit ();
12   return fit0;
13 }
14
15 // radar://11487541, NamespaceAlias
16 namespace boost {namespace filesystem3 {
17 class path {
18 public:
19  path(){}
20 };
21
22 }}
23 namespace boost
24 {
25   namespace filesystem
26   {
27     using filesystem3::path;
28   }
29 }
30
31 void radar11487541() {
32   namespace fs = boost::filesystem;
33   fs::path p;
34 }
35
36 // PR12873 radar://11499139
37 void testFloatInitializer() {
38   const float ysize={0.015}, xsize={0.01};
39 }
40
41
42 // PR12874, radar://11487525
43 template<class T> struct addr_impl_ref {
44   T & v_;
45   inline addr_impl_ref( T & v ): v_( v ) {
46   }
47   inline operator T& () const {return v_;}
48 };
49 template<class T> struct addressof_impl {
50   static inline T * f( T & v, long )     {
51     return reinterpret_cast<T*>(&const_cast<char&>(reinterpret_cast<const volatile char &>(v)));
52   }
53 };
54 template<class T> T * addressof( T & v ) {
55   return addressof_impl<T>::f( addr_impl_ref<T>( v ), 0 );
56 }
57 void testRadar11487525_1(){
58   bool s[25];
59   addressof(s);
60 }
61
62 // radar://11487525 Don't crash on CK_LValueBitCast.
63 bool begin(double *it) {
64   typedef bool type[25];
65   bool *a = reinterpret_cast<type &>(*( reinterpret_cast<char *>( it )));
66   return *a;
67 }
68
69 // radar://14164698 Don't crash on "assuming" a ComoundVal.
70 class JSONWireProtocolInputStream {
71 public:
72   virtual ~JSONWireProtocolInputStream();
73 };
74 class JSONWireProtocolReader {
75 public:
76   JSONWireProtocolReader(JSONWireProtocolInputStream& istream)
77   : _istream{istream} {} // On evaluating a bind here,
78                          // the dereference checker issues an assume on a CompoundVal.
79 ~JSONWireProtocolReader();
80 private:
81 JSONWireProtocolInputStream& _istream;
82 };
83 class SocketWireProtocolStream : public JSONWireProtocolInputStream {
84 };
85 void test() {
86   SocketWireProtocolStream stream{};
87   JSONWireProtocolReader reader{stream};
88 }
89
90 // This crashed because the analyzer did not understand AttributedStmts.
91 void fallthrough() {
92   switch (1) {
93     case 1:
94       [[clang::fallthrough]];
95   }
96 }