fixes a problem caused by gcc 4.6 optimization (by Paul Pluzhnikov)
This commit is contained in:
parent
6a5a25b1e1
commit
c006f8c12b
|
@ -662,6 +662,13 @@
|
|||
# define GTEST_API_
|
||||
#endif
|
||||
|
||||
#if defined(__GNUC__)
|
||||
// Ask the compiler to never inline a given function.
|
||||
#define GTEST_NO_INLINE_ __attribute__((noinline))
|
||||
#else
|
||||
#define GTEST_NO_INLINE_
|
||||
#endif // __GNUC__
|
||||
|
||||
namespace testing {
|
||||
|
||||
class Message;
|
||||
|
|
|
@ -932,6 +932,11 @@ static int ExecDeathTestChildMain(void* child_arg) {
|
|||
// This could be accomplished more elegantly by a single recursive
|
||||
// function, but we want to guard against the unlikely possibility of
|
||||
// a smart compiler optimizing the recursion away.
|
||||
//
|
||||
// GTEST_NO_INLINE_ is required to prevent GCC 4.6 from inlining
|
||||
// StackLowerThanAddress into StackGrowsDown, which then doesn't give
|
||||
// correct answer.
|
||||
bool StackLowerThanAddress(const void* ptr) GTEST_NO_INLINE_;
|
||||
bool StackLowerThanAddress(const void* ptr) {
|
||||
int dummy;
|
||||
return &dummy < ptr;
|
||||
|
|
Loading…
Reference in New Issue
Block a user