URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Only display areas with differences |
Details |
Blame |
View Log
Rev 301 |
Rev 338 |
// Test that conversions to base classes happen when calling
|
// Test that conversions to base classes happen when calling
|
// operators.
|
// operators.
|
|
|
// { dg-do run }
|
// { dg-do run }
|
|
|
extern "C" void abort ();
|
extern "C" void abort ();
|
|
|
struct B1;
|
struct B1;
|
struct B2;
|
struct B2;
|
|
|
B2* p;
|
B2* p;
|
B1* p2;
|
B1* p2;
|
|
|
struct B1 {
|
struct B1 {
|
virtual void f () {}
|
virtual void f () {}
|
};
|
};
|
|
|
struct B2 {
|
struct B2 {
|
int i;
|
int i;
|
bool operator!() { if (this != p) abort (); return true; }
|
bool operator!() { if (this != p) abort (); return true; }
|
operator void*() { if (this != p) abort (); return this; }
|
operator void*() { if (this != p) abort (); return this; }
|
};
|
};
|
|
|
struct B3 : public B1, public B2 {
|
struct B3 : public B1, public B2 {
|
};
|
};
|
|
|
int main () {
|
int main () {
|
B3 b;
|
B3 b;
|
p = (B2*) &b;
|
p = (B2*) &b;
|
p2 = (B1*) &b;
|
p2 = (B1*) &b;
|
bool b1 = b;
|
bool b1 = b;
|
bool b2 = !b;
|
bool b2 = !b;
|
}
|
}
|
|
|
|
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.