2 // { dg-options "-finline-small-functions -findirect-inlining -finline-function+
5 typedef __mpf_struct mpf_t[1];
6 typedef const __mpf_struct *mpf_srcptr;
7 typedef __mpf_struct *mpf_ptr;
9 void __gmpf_add (mpf_ptr, mpf_srcptr, mpf_srcptr);
14 enum NumType {SpecialType, IntegerType, FractionType, FloatType};
15 virtual NumType type(void) const = 0;
16 virtual _knumber * add(_knumber const & arg2) const = 0;
17 virtual operator long int(void) const = 0;
19 class _knumfloat : public _knumber
21 _knumfloat(double num = 1.0)
23 virtual NumType type(void) const ;
24 virtual _knumber * add(_knumber const & arg2) const;
25 virtual operator long int (void) const;
28 _knumber *_knumfloat::add(_knumber const & arg2) const
30 if (arg2.type() == SpecialType)
31 return arg2.add(*this);
33 _knumfloat tmp_num(arg2);
34 return tmp_num.add(*this);
36 _knumfloat * tmp_num = new _knumfloat();
37 __gmpf_add(tmp_num->_mpf, _mpf,
38 dynamic_cast<_knumfloat const &>(arg2)._mpf);