1// RUN: %clang_cc1 -analyze -analyzer-checker=core -std=c++11 -verify %s 2// expected-no-diagnostics 3 4// radar://11485149, PR12871 5class PlotPoint { 6 bool valid; 7}; 8 9PlotPoint limitedFit () { 10 PlotPoint fit0; 11 fit0 = limitedFit (); 12 return fit0; 13} 14 15// radar://11487541, NamespaceAlias 16namespace boost {namespace filesystem3 { 17class path { 18public: 19 path(){} 20}; 21 22}} 23namespace boost 24{ 25 namespace filesystem 26 { 27 using filesystem3::path; 28 } 29} 30 31void radar11487541() { 32 namespace fs = boost::filesystem; 33 fs::path p; 34} 35 36// PR12873 radar://11499139 37void testFloatInitializer() { 38 const float ysize={0.015}, xsize={0.01}; 39} 40 41 42// PR12874, radar://11487525 43template<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}; 49template<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}; 54template<class T> T * addressof( T & v ) { 55 return addressof_impl<T>::f( addr_impl_ref<T>( v ), 0 ); 56} 57void testRadar11487525_1(){ 58 bool s[25]; 59 addressof(s); 60} 61 62// radar://11487525 Don't crash on CK_LValueBitCast. 63bool 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. 70class JSONWireProtocolInputStream { 71public: 72 virtual ~JSONWireProtocolInputStream(); 73}; 74class JSONWireProtocolReader { 75public: 76 JSONWireProtocolReader(JSONWireProtocolInputStream& istream) 77 : _istream{istream} {} // On evaluating a bind here, 78 // the dereference checker issues an assume on a CompoundVal. 79~JSONWireProtocolReader(); 80private: 81JSONWireProtocolInputStream& _istream; 82}; 83class SocketWireProtocolStream : public JSONWireProtocolInputStream { 84}; 85void test() { 86 SocketWireProtocolStream stream{}; 87 JSONWireProtocolReader reader{stream}; 88} 89 90// This crashed because the analyzer did not understand AttributedStmts. 91void fallthrough() { 92 switch (1) { 93 case 1: 94 [[clang::fallthrough]]; 95 } 96} 97