OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.2.2/] [gcc/] [testsuite/] [g++.old-deja/] [g++.robertl/] [eb127.C] - Diff between revs 149 and 154

Only display areas with differences | Details | Blame | View Log

Rev 149 Rev 154
// { dg-do assemble  }
// { dg-do assemble  }
// Gets ICE 40.
// Gets ICE 40.
#include 
#include 
#include
#include
#include 
#include 
using namespace std;
using namespace std;
class ODEsolver
class ODEsolver
{
{
    private:
    private:
        void eulerODE(vector& y, double& t, double& dt);
        void eulerODE(vector& y, double& t, double& dt);
        void midpointODE(vector& y, double& t, double& dt);
        void midpointODE(vector& y, double& t, double& dt);
    protected:
    protected:
        void (ODEsolver::*useMethod)(vector&, double&, double&);
        void (ODEsolver::*useMethod)(vector&, double&, double&);
        void init();
        void init();
    public:
    public:
        ODEsolver();
        ODEsolver();
        void timeloop(vector& y, double ts, double te, double dt);
        void timeloop(vector& y, double ts, double te, double dt);
};
};
ODEsolver::ODEsolver()
ODEsolver::ODEsolver()
{
{
  init();
  init();
}
}
void ODEsolver::eulerODE(vector& y, double& t, double& dt)
void ODEsolver::eulerODE(vector& y, double& t, double& dt)
{
{
  y[0] = dt * 2.;
  y[0] = dt * 2.;
}
}
void ODEsolver::midpointODE(vector& y, double& t, double& dt)
void ODEsolver::midpointODE(vector& y, double& t, double& dt)
{
{
  y[0] = dt * 3.;
  y[0] = dt * 3.;
}
}
void ODEsolver::init()
void ODEsolver::init()
{
{
  ODEsolver::useMethod = &ODEsolver::midpointODE;
  ODEsolver::useMethod = &ODEsolver::midpointODE;
}
}
void ODEsolver::timeloop(vector& y, double ts, double te, double dt)
void ODEsolver::timeloop(vector& y, double ts, double te, double dt)
{
{
  (ODEsolver::useMethod)(y,ts,dt); // { dg-error "" } should use this->*
  (ODEsolver::useMethod)(y,ts,dt); // { dg-error "" } should use this->*
}
}
int main (int nargs, char** args)
int main (int nargs, char** args)
{
{
  ODEsolver solver;
  ODEsolver solver;
  vector y(2);  double t_start=5.;  double t_end=7.;  double dt=2.;
  vector y(2);  double t_start=5.;  double t_end=7.;  double dt=2.;
  solver.timeloop(y,t_start,t_end,dt);
  solver.timeloop(y,t_start,t_end,dt);
  cout << y[0] << endl;
  cout << y[0] << endl;
  return(0);
  return(0);
}
}
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.