mirror of
https://github.com/Gericom/teak-llvm.git
synced 2025-06-21 04:25:45 -04:00
108 lines
1.4 KiB
C++
108 lines
1.4 KiB
C++
class MyClass
|
|
{
|
|
public:
|
|
int memberResult()
|
|
{
|
|
return 1;
|
|
}
|
|
static int staticResult()
|
|
{
|
|
return 1;
|
|
}
|
|
int externResult();
|
|
};
|
|
|
|
// --
|
|
|
|
int MyClass::externResult()
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
// --
|
|
|
|
MyClass m;
|
|
|
|
// --
|
|
|
|
enum MyEnum {
|
|
myEnumOne = 1,
|
|
myEnumTwo,
|
|
myEnumThree
|
|
};
|
|
|
|
// --
|
|
|
|
class AnotherClass
|
|
{
|
|
public:
|
|
__attribute__ ((always_inline)) int complicatedFunction()
|
|
{
|
|
struct {
|
|
int i;
|
|
} s = { 15 };
|
|
|
|
int numbers[4] = { 2, 3, 4, 5 };
|
|
|
|
for (signed char number: numbers)
|
|
{
|
|
s.i -= number;
|
|
}
|
|
|
|
return s.i;
|
|
}
|
|
};
|
|
|
|
// --
|
|
|
|
class DiamondA
|
|
{
|
|
private:
|
|
struct {
|
|
int m_i;
|
|
};
|
|
public:
|
|
DiamondA(int i) : m_i(i) { }
|
|
int accessor() { return m_i; }
|
|
};
|
|
|
|
// --
|
|
|
|
class DiamondB : public virtual DiamondA
|
|
{
|
|
public:
|
|
DiamondB(int i) : DiamondA(i) { }
|
|
};
|
|
|
|
// --
|
|
|
|
class DiamondC : public virtual DiamondA
|
|
{
|
|
public:
|
|
DiamondC(int i) : DiamondA(i) { }
|
|
};
|
|
|
|
// --
|
|
|
|
class DiamondD : public DiamondB, public DiamondC
|
|
{
|
|
public:
|
|
DiamondD(int i) : DiamondA(i), DiamondB(i), DiamondC(i) { }
|
|
};
|
|
|
|
// --
|
|
|
|
int doTest()
|
|
{
|
|
int accumulator = m.memberResult();
|
|
accumulator += MyClass::staticResult();
|
|
accumulator += m.externResult();
|
|
accumulator += MyEnum::myEnumThree;
|
|
accumulator += myEnumOne;
|
|
accumulator += AnotherClass().complicatedFunction();
|
|
accumulator += DiamondD(3).accessor();
|
|
return accumulator;
|
|
}
|
|
|
|
// --
|