diff options
Diffstat (limited to 'test/Analysis/cxx11-crashes.cpp')
-rw-r--r-- | test/Analysis/cxx11-crashes.cpp | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/test/Analysis/cxx11-crashes.cpp b/test/Analysis/cxx11-crashes.cpp new file mode 100644 index 0000000..16bfc89 --- /dev/null +++ b/test/Analysis/cxx11-crashes.cpp @@ -0,0 +1,66 @@ +// RUN: %clang_cc1 -analyze -analyzer-checker=core -std=c++11 -verify %s + +// radar://11485149, PR12871 +class PlotPoint { + bool valid; +}; + +PlotPoint limitedFit () { + PlotPoint fit0; + fit0 = limitedFit (); + return fit0; +} + +// radar://11487541, NamespaceAlias +namespace boost {namespace filesystem3 { +class path { +public: + path(){} +}; + +}} +namespace boost +{ + namespace filesystem + { + using filesystem3::path; + } +} + +void radar11487541() { + namespace fs = boost::filesystem; + fs::path p; +} + +// PR12873 radar://11499139 +void testFloatInitializer() { + const float ysize={0.015}, xsize={0.01}; +} + + +// PR12874, radar://11487525 +template<class T> struct addr_impl_ref { + T & v_; + inline addr_impl_ref( T & v ): v_( v ) { + } + inline operator T& () const {return v_;} +}; +template<class T> struct addressof_impl { + static inline T * f( T & v, long ) { + return reinterpret_cast<T*>(&const_cast<char&>(reinterpret_cast<const volatile char &>(v))); + } +}; +template<class T> T * addressof( T & v ) { + return addressof_impl<T>::f( addr_impl_ref<T>( v ), 0 ); +} +void testRadar11487525_1(){ + bool s[25]; + addressof(s); +} + +// radar://11487525 Don't crash on CK_LValueBitCast. +bool begin(double *it) { + typedef bool type[25]; + bool *a = reinterpret_cast<type &>(*( reinterpret_cast<char *>( it ))); + return *a; +} |