teak-llvm/lldb/packages/Python/lldbsuite/test/lang/cpp/breakpoint-commands/nested.cpp
Jim Ingham 1bf7d30469 Make all the Function implementations different so the compiler won't share them.
Clang on ARM64 was making the three Function methods with identical bodies have
one implementation that was shared.  That threw off the count of breakpoints, since
we don't count as separate locations three functions with the same address.

I also cleaned up the test case while I was at it.

<rdar://problem/27001915>

llvm-svn: 279800
2016-08-26 01:27:50 +00:00

77 lines
1.4 KiB
C++

#include <stdio.h>
namespace Foo
{
namespace Bar
{
class Baz
{
public:
Baz (int value):m_value(value) {}
int Function ()
{
printf ("%s returning: %d.\n", __FUNCTION__, m_value);
return m_value + 1;
}
private:
int m_value;
};
class Baz2
{
public:
Baz2 (int value):m_value(value) {}
int Function ()
{
printf ("%s returning: %d.\n", __FUNCTION__, m_value);
return m_value + 2;
}
private:
int m_value;
};
static int bar_value = 20;
int Function ()
{
printf ("%s returning: %d.\n", __FUNCTION__, bar_value);
return bar_value + 3;
}
}
}
class Baz
{
public:
Baz (int value):m_value(value) {}
int Function ()
{
printf ("%s returning: %d.\n", __FUNCTION__, m_value);
return m_value + 4;
}
private:
int m_value;
};
int
Function ()
{
printf ("I am a global function, I return 333.\n");
return 333;
}
int main ()
{
Foo::Bar::Baz mine(200);
Foo::Bar::Baz2 mine2(300);
::Baz bare_baz (500);
printf ("Yup, got %d from Baz.\n", mine.Function());
printf ("Yup, got %d from Baz.\n", mine2.Function());
printf ("Yup, got %d from Baz.\n", bare_baz.Function());
printf ("And got %d from Bar.\n", Foo::Bar::Function());
printf ("And got %d from ::.\n", ::Function());
return 0;
}