URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Only display areas with differences |
Details |
Blame |
View Log
Rev 305 |
Rev 338 |
// { dg-do assemble }
|
// { dg-do assemble }
|
|
|
class foo_a {
|
class foo_a {
|
protected:
|
protected:
|
double func(int xi) {return 0.0;}
|
double func(int xi) {return 0.0;}
|
public:
|
public:
|
foo_a() {}
|
foo_a() {}
|
};
|
};
|
|
|
class foo_b {
|
class foo_b {
|
public:
|
public:
|
foo_b(int);
|
foo_b(int);
|
foo_b();
|
foo_b();
|
~foo_b();
|
~foo_b();
|
foo_b(const foo_b&);
|
foo_b(const foo_b&);
|
double& operator()(int);
|
double& operator()(int);
|
foo_b& operator=(foo_b&);
|
foo_b& operator=(foo_b&);
|
void bar_a(int);
|
void bar_a(int);
|
};
|
};
|
|
|
foo_b& operator*(foo_b&, foo_b&);
|
foo_b& operator*(foo_b&, foo_b&);
|
foo_b& operator*(double, foo_b&);
|
foo_b& operator*(double, foo_b&);
|
|
|
template
|
template
|
class foo_c {
|
class foo_c {
|
typedef double (TP::* Tmatf)(int);
|
typedef double (TP::* Tmatf)(int);
|
int m;
|
int m;
|
Tmatf* a;
|
Tmatf* a;
|
void foo_cinst (int mm);
|
void foo_cinst (int mm);
|
public:
|
public:
|
foo_c(int mm);
|
foo_c(int mm);
|
foo_c() {m = 0; a = 0;}
|
foo_c() {m = 0; a = 0;}
|
~foo_c() {delete a;}
|
~foo_c() {delete a;}
|
double (TP::*& operator()(int i))(int) {return a[i];}
|
double (TP::*& operator()(int i))(int) {return a[i];}
|
foo_b& bug_func(int);
|
foo_b& bug_func(int);
|
};
|
};
|
|
|
template
|
template
|
foo_b& foo_c::bug_func(int x) {
|
foo_b& foo_c::bug_func(int x) {
|
static foo_b retval(m);
|
static foo_b retval(m);
|
retval.bar_a(m);
|
retval.bar_a(m);
|
for (register int i = 0; i < m; i++)
|
for (register int i = 0; i < m; i++)
|
retval(i) = (*(operator()(i)))(x); // { dg-error "invalid use of unary '\\\*'" }
|
retval(i) = (*(operator()(i)))(x); // { dg-error "invalid use of unary '\\\*'" }
|
return retval;
|
return retval;
|
}
|
}
|
|
|
template
|
template
|
class foo_d {
|
class foo_d {
|
protected:
|
protected:
|
foo_c bar_b;
|
foo_c bar_b;
|
public:
|
public:
|
foo_d() {}
|
foo_d() {}
|
virtual ~foo_d() {}
|
virtual ~foo_d() {}
|
virtual void setfoo_c();
|
virtual void setfoo_c();
|
};
|
};
|
|
|
class foo_e : public foo_a, public foo_d {
|
class foo_e : public foo_a, public foo_d {
|
public:
|
public:
|
foo_e();
|
foo_e();
|
~foo_e() {}
|
~foo_e() {}
|
void setfoo_c();
|
void setfoo_c();
|
};
|
};
|
|
|
void foo_e::setfoo_c() {
|
void foo_e::setfoo_c() {
|
bar_b(0) = func; // { dg-error "" }
|
bar_b(0) = func; // { dg-error "" }
|
}
|
}
|
|
|
template class foo_c;
|
template class foo_c;
|
|
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.