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 limitedFit()9PlotPoint 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: path()19 path(){} 20 }; 21 22 }} 23 namespace boost 24 { 25 namespace filesystem 26 { 27 using filesystem3::path; 28 } 29 } 30 radar11487541()31void radar11487541() { 32 namespace fs = boost::filesystem; 33 fs::path p; 34 } 35 36 // PR12873 radar://11499139 testFloatInitializer()37void 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_; addr_impl_refaddr_impl_ref45 inline addr_impl_ref( T & v ): v_( v ) { 46 } operator T&addr_impl_ref47 inline operator T& () const {return v_;} 48 }; 49 template<class T> struct addressof_impl { faddressof_impl50 static inline T * f( T & v, long ) { 51 return reinterpret_cast<T*>(&const_cast<char&>(reinterpret_cast<const volatile char &>(v))); 52 } 53 }; addressof(T & v)54template<class T> T * addressof( T & v ) { 55 return addressof_impl<T>::f( addr_impl_ref<T>( v ), 0 ); 56 } testRadar11487525_1()57void testRadar11487525_1(){ 58 bool s[25]; 59 addressof(s); 60 } 61 62 // radar://11487525 Don't crash on CK_LValueBitCast. begin(double * it)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. 70 class JSONWireProtocolInputStream { 71 public: 72 virtual ~JSONWireProtocolInputStream(); 73 }; 74 class JSONWireProtocolReader { 75 public: JSONWireProtocolReader(JSONWireProtocolInputStream & istream)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 }; test()85void test() { 86 SocketWireProtocolStream stream{}; 87 JSONWireProtocolReader reader{stream}; 88 } 89 90 // This crashed because the analyzer did not understand AttributedStmts. fallthrough()91void fallthrough() { 92 switch (1) { 93 case 1: 94 [[clang::fallthrough]]; 95 } 96 } 97