Suppresses the tail-call optimization of StackGrowsDown() in GCC4.6 (by Paul Pluzhnikov).

git-svn-id: http://googletest.googlecode.com/svn/trunk@585 861a406c-534a-0410-8894-cb66d6ee9925
diff --git a/src/gtest-death-test.cc b/src/gtest-death-test.cc
index 8b2e413..44ff6b2 100644
--- a/src/gtest-death-test.cc
+++ b/src/gtest-death-test.cc
@@ -936,15 +936,17 @@
 // 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) {
+void StackLowerThanAddress(const void* ptr, bool* result) GTEST_NO_INLINE_;
+void StackLowerThanAddress(const void* ptr, bool* result) {
   int dummy;
-  return &dummy < ptr;
+  *result = (&dummy < ptr);
 }
 
 bool StackGrowsDown() {
   int dummy;
-  return StackLowerThanAddress(&dummy);
+  bool result;
+  StackLowerThanAddress(&dummy, &result);
+  return result;
 }
 
 // A threadsafe implementation of fork(2) for threadsafe-style death tests