view gcc/testsuite/g++.dg/lto/pr82027_0.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents
children
line wrap: on
line source

// { dg-lto-do run }
// { dg-lto-options { { -O3 -flto } } }

class Position
{
  public:
    Position( void ) {}
    virtual ~Position() {}

    virtual void calcPercent( const char *name,int pos,int size ) {}
};


class Looper
{
  public:
    Looper( Position *cc,int size )
      : m_cc(cc), m_size(size) {}
    virtual ~Looper() {}

    void loop( void )
    {
      for( int pos=0; pos<m_size; pos++ )
      {
        m_cc->calcPercent( "",pos,m_size );
      }
    }

  private:
    Position *m_cc;
    int m_size;
};


class EmptyClass
{
  public:
    EmptyClass( void ) {}
    virtual ~EmptyClass() {}
};


class Combined : public EmptyClass, public Position
{
  public:
    Combined( void ) : m_percent(0) {}
    ~Combined() {}

    void calcPercent( const char *name,int pos,int size )
    {
      int percent = 100*pos/size;
      if( percent!=m_percent )
        m_percent = percent;
    }

  private:
    int m_percent;
};



int main( int argc,char **argv )
{
  Combined *comb = new Combined();
  Looper *looper = new Looper( comb,argc );

  looper->loop();

  delete comb;
  delete looper;

  return( 0 );
}