diff options
author | upstream source tree <ports@midipix.org> | 2015-03-15 20:14:05 -0400 |
---|---|---|
committer | upstream source tree <ports@midipix.org> | 2015-03-15 20:14:05 -0400 |
commit | 554fd8c5195424bdbcabf5de30fdc183aba391bd (patch) | |
tree | 976dc5ab7fddf506dadce60ae936f43f58787092 /gcc/testsuite/g++.dg/tree-ssa/pr27291.C | |
download | cbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.bz2 cbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.xz |
obtained gcc-4.6.4.tar.bz2 from upstream website;upstream
verified gcc-4.6.4.tar.bz2.sig;
imported gcc-4.6.4 source tree from verified upstream tarball.
downloading a git-generated archive based on the 'upstream' tag
should provide you with a source tree that is binary identical
to the one extracted from the above tarball.
if you have obtained the source via the command 'git clone',
however, do note that line-endings of files in your working
directory might differ from line-endings of the respective
files in the upstream repository.
Diffstat (limited to 'gcc/testsuite/g++.dg/tree-ssa/pr27291.C')
-rw-r--r-- | gcc/testsuite/g++.dg/tree-ssa/pr27291.C | 363 |
1 files changed, 363 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr27291.C b/gcc/testsuite/g++.dg/tree-ssa/pr27291.C new file mode 100644 index 000000000..b8b5e136a --- /dev/null +++ b/gcc/testsuite/g++.dg/tree-ssa/pr27291.C @@ -0,0 +1,363 @@ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ + +namespace std +{ + template < class _T1, class _T2 > struct pair + { + }; +} +extern "C" +{ + extern "C" + { + typedef int int32_t __attribute__ ((__mode__ (__SI__))); + struct _pthread_fastlock + { + } + pthread_mutexattr_t; + } +} +namespace std +{ + struct __numeric_limits_base + { + }; + template < typename _Tp > + struct numeric_limits:public __numeric_limits_base + { + static const bool is_integer = true; + }; +}; +typedef unsigned int uint32_t; +namespace std +{ + template < typename _Alloc > class allocator; + template < class _CharT > struct char_traits; + template < typename _CharT, typename _Traits = + char_traits < _CharT >, typename _Alloc = + allocator < _CharT > >class basic_string; + typedef basic_string < char >string; +} +namespace __gnu_cxx +{ + template < typename _Tp > class new_allocator + { + }; +} +namespace std +{ + template < typename _Tp > class allocator:public __gnu_cxx::new_allocator < + _Tp > + { + }; + template < typename _CharT, typename _Traits, + typename _Alloc > class basic_string + { + public:inline basic_string (); + basic_string (const _CharT * __s, const _Alloc & __a = _Alloc ()); + }; +} +namespace boost +{ + template < class T > class integer_traits:public std::numeric_limits < T > + { + }; + namespace detail + { + template < class T, T min_val, T max_val > class integer_traits_base + { + }; + } + template <> class integer_traits < int >:public std::numeric_limits < int >, + public detail::integer_traits_base < int, (-2147483647 - 1), 2147483647 > + { + }; + namespace random + { + template < class IntType, IntType m > class const_mod + { + public:static IntType add (IntType x, IntType c) + { + } + static IntType mult (IntType a, IntType x) + { + return mult_schrage (a, x); + } + static IntType mult_add (IntType a, IntType x, IntType c) + { + return add (mult (a, x), c); + } + static IntType mult_schrage (IntType a, IntType value) + { + for (;;) + { + if (value > 0) + break; + value += m; + } + } + }; + template < class IntType, IntType a, IntType c, IntType m, + IntType val > class linear_congruential + { + public:typedef IntType result_type; + static const IntType modulus = m; + explicit linear_congruential (IntType x0 = 1):_modulus (modulus), + _x (_modulus ? (x0 % _modulus) : + x0) + { + } + IntType operator () () + { + _x = const_mod < IntType, m >::mult_add (a, _x, c); + } + private:IntType _modulus; + IntType _x; + }; + } + typedef random::linear_congruential < int32_t, 16807, 0, 2147483647, + 1043618065 > minstd_rand0; + namespace random + { + namespace detail + { + template < class T > struct ptr_helper + { + typedef T value_type; + typedef T & reference_type; + typedef const T & rvalue_type; + static reference_type ref (T & r) + { + } + }; + template < class T > struct ptr_helper <T & > + { + typedef T value_type; + typedef T & rvalue_type; + }; + } + } + template < class UniformRandomNumberGenerator, class RealType = + double >class uniform_01 + { + public:typedef UniformRandomNumberGenerator base_type; + typedef RealType result_type; + explicit uniform_01 (base_type rng):_rng (rng), + _factor (result_type (1) / + (result_type ((_rng.max) () - (_rng.min) ()) + + result_type (std::numeric_limits < + base_result >::is_integer ? 1 : 0))) + { + } + result_type operator () () + { + return result_type (_rng () - (_rng.min) ()) * _factor; + } + private:typedef typename base_type::result_type base_result; + base_type _rng; + result_type _factor; + }; + namespace random + { + namespace detail + { + template < class UniformRandomNumberGenerator > + class pass_through_engine + { + private:typedef ptr_helper < UniformRandomNumberGenerator > + helper_type; + public:typedef typename helper_type::value_type base_type; + typedef typename base_type::result_type result_type; + explicit pass_through_engine (UniformRandomNumberGenerator + rng):_rng (static_cast < + typename helper_type:: + rvalue_type > (rng)) + { + } + result_type min () const + { + } + result_type max () const + { + } + base_type & base () + { + } + result_type operator () () + { + return base ()(); + } + private:UniformRandomNumberGenerator _rng; + }; + } + template < class RealType, int w, unsigned int p, + unsigned int q > class lagged_fibonacci_01 + { + public:typedef RealType result_type; + static const unsigned int long_lag = p; + lagged_fibonacci_01 () + { + seed (); + } + public:void seed (uint32_t value = 331u) + { + minstd_rand0 intgen (value); + seed (intgen); + } + template < class Generator > void seed (Generator & gen) + { + typedef detail::pass_through_engine < Generator & >ref_gen; + uniform_01 < ref_gen, RealType > gen01 = + uniform_01 < ref_gen, RealType > (ref_gen (gen)); + for (unsigned int j = 0; j < long_lag; ++j) + x[j] = gen01 (); + } + RealType x[long_lag]; + }; + } + typedef random::lagged_fibonacci_01 < double, 48, 607, + 273 > lagged_fibonacci607; + namespace random + { + namespace detail + { + template < bool have_int, bool want_int > struct engine_helper; + template <> struct engine_helper <true, true > + { + template < class Engine, class DistInputType > struct impl + { + typedef pass_through_engine < Engine > type; + }; + }; + } + } + template < class Engine, class Distribution > class variate_generator + { + private:typedef random::detail::pass_through_engine < Engine > + decorated_engine; + public:typedef typename decorated_engine::base_type engine_value_type; + typedef Distribution distribution_type; + variate_generator (Engine e, Distribution d):_eng (decorated_engine (e)), + _dist (d) + { + } + private:enum + { + have_int = + std::numeric_limits < + typename decorated_engine::result_type >::is_integer, want_int = + std::numeric_limits < typename Distribution::input_type >::is_integer + }; + typedef typename random::detail::engine_helper < have_int, + want_int >::template impl < decorated_engine, + typename Distribution::input_type >::type internal_engine_type; + internal_engine_type _eng; + distribution_type _dist; + }; + template < class RealType = double >class uniform_real + { + public:typedef RealType input_type; + }; +} +namespace alps +{ + class BufferedRandomNumberGeneratorBase + { + }; + template < class RNG > + class BufferedRandomNumberGenerator:public + BufferedRandomNumberGeneratorBase + { + public: BufferedRandomNumberGenerator ():rng_ (), gen_ (rng_, + boost:: + uniform_real <> ()) + { + } + protected: RNG rng_; + boost::variate_generator < RNG &, boost::uniform_real <> >gen_; + }; +} +namespace boost +{ + namespace detail + { + class sp_counted_base + { + }; + class shared_count + { + private:sp_counted_base * pi_; + public:shared_count ():pi_ (0) + { + } + template < class Y > explicit shared_count (Y * p):pi_ (0) + { + } + }; + } + template < class T > class shared_ptr + { + public:typedef T element_type; + template < class Y > explicit shared_ptr (Y * p):px (p), pn (p) + { + } + T *px; + detail::shared_count pn; + }; +} +namespace std +{ + template < typename _Key, typename _Tp, typename _Compare = + std::allocator < std::pair < const _Key, _Tp > > > class map + { + public:typedef _Key key_type; + typedef _Tp mapped_type; + mapped_type & operator[] (const key_type & __k) + { + } + }; +} +namespace alps +{ + namespace detail + { + template < class BASE > class abstract_creator + { + public:typedef BASE base_type; + virtual base_type *create () const = 0; + }; + template < class BASE, + class T > class creator:public abstract_creator < BASE > + { + public:typedef BASE base_type; + base_type *create () const + { + return new T (); + } + }; + } + template < class KEY, class BASE > class factory + { + public:typedef BASE base_type; + typedef KEY key_type; + typedef boost::shared_ptr < detail::abstract_creator < base_type > + >pointer_type; + template < class T > bool register_type (key_type k) + { + creators_[k] = pointer_type (new detail::creator < BASE, T > ()); + } + private:typedef std::map < key_type, pointer_type > map_type; + map_type creators_; + }; + class RNGFactory:public factory < std::string, + BufferedRandomNumberGeneratorBase > + { + public:RNGFactory (); + }; +} +alps::RNGFactory::RNGFactory () +{ + register_type < BufferedRandomNumberGenerator < boost::lagged_fibonacci607 > + >("lagged_fibonacci607"); +} |