URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Only display areas with differences |
Details |
Blame |
View Log
Rev 305 |
Rev 338 |
// { dg-do run }
|
// { dg-do run }
|
// 980617 bkoz
|
// 980617 bkoz
|
// typeid for local types
|
// typeid for local types
|
// typeid bool vs int and enum vs int
|
// typeid bool vs int and enum vs int
|
|
|
#include
|
#include
|
#ifdef DEBUG_ASSERT
|
#ifdef DEBUG_ASSERT
|
#include
|
#include
|
#endif
|
#endif
|
|
|
// 4: local class in non-main function
|
// 4: local class in non-main function
|
|
|
void test1 (void) {
|
void test1 (void) {
|
bool class_p = false;
|
bool class_p = false;
|
class X2 {
|
class X2 {
|
private:
|
private:
|
unsigned int counter;
|
unsigned int counter;
|
public:
|
public:
|
X2 (unsigned int i = 35): counter(i) {}
|
X2 (unsigned int i = 35): counter(i) {}
|
~X2(){}
|
~X2(){}
|
unsigned int ret_counter() {return counter;}
|
unsigned int ret_counter() {return counter;}
|
};
|
};
|
X2 obj_1;
|
X2 obj_1;
|
class_p = typeid(X2) == typeid(obj_1);
|
class_p = typeid(X2) == typeid(obj_1);
|
}
|
}
|
|
|
int main ()
|
int main ()
|
{
|
{
|
// 1: simple
|
// 1: simple
|
#if 1
|
#if 1
|
bool enum_p = false;
|
bool enum_p = false;
|
enum E { A, B, C };
|
enum E { A, B, C };
|
enum_p = typeid(A) == typeid(E);
|
enum_p = typeid(A) == typeid(E);
|
#ifdef DEBUG_ASSERT
|
#ifdef DEBUG_ASSERT
|
assert (enum_p);
|
assert (enum_p);
|
#endif
|
#endif
|
#endif
|
#endif
|
|
|
// 2: complex
|
// 2: complex
|
#if 0
|
#if 0
|
bool enum2_p = false;
|
bool enum2_p = false;
|
bool int_p = false;
|
bool int_p = false;
|
bool bool_p = false;
|
bool bool_p = false;
|
enum E2 { A2, B2};
|
enum E2 { A2, B2};
|
enum2_p = typeid(A2) == typeid(E2);
|
enum2_p = typeid(A2) == typeid(E2);
|
int_p = typeid(int) == typeid(E2);
|
int_p = typeid(int) == typeid(E2);
|
bool_p = typeid(bool) == typeid(E2);
|
bool_p = typeid(bool) == typeid(E2);
|
#ifdef DEBUG_ASSERT
|
#ifdef DEBUG_ASSERT
|
assert (enum2_p);
|
assert (enum2_p);
|
assert (!int_p);
|
assert (!int_p);
|
assert (!bool_p);
|
assert (!bool_p);
|
#endif
|
#endif
|
#endif
|
#endif
|
|
|
// 3: local class
|
// 3: local class
|
bool class_p = false;
|
bool class_p = false;
|
class X {
|
class X {
|
private:
|
private:
|
unsigned int counter;
|
unsigned int counter;
|
public:
|
public:
|
X (unsigned int i = 35): counter(i) {}
|
X (unsigned int i = 35): counter(i) {}
|
~X(){}
|
~X(){}
|
unsigned int ret_counter() {return counter;}
|
unsigned int ret_counter() {return counter;}
|
};
|
};
|
X obj_1;
|
X obj_1;
|
class_p = typeid(X) == typeid(obj_1);
|
class_p = typeid(X) == typeid(obj_1);
|
|
|
// 4: local class in function
|
// 4: local class in function
|
test1();
|
test1();
|
|
|
return 0;
|
return 0;
|
}
|
}
|
|
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.