From e29c3e7e3d3d45651c828b01ae67354b0074ed98 Mon Sep 17 00:00:00 2001 From: Daniel Malea Date: Fri, 28 Jun 2013 21:49:53 +0000 Subject: [PATCH] Fix Windows/Darwin build error in DebugIR unit tests - mistakenly used get_current_dir() linux function - replaced with getcwd/_getcwd as appropriate for current platform llvm-svn: 185225 --- unittests/Transforms/DebugIR/DebugIR.cpp | 28 ++++++++++++++++-------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/unittests/Transforms/DebugIR/DebugIR.cpp b/unittests/Transforms/DebugIR/DebugIR.cpp index 978662a79d5..cf81e7a728d 100644 --- a/unittests/Transforms/DebugIR/DebugIR.cpp +++ b/unittests/Transforms/DebugIR/DebugIR.cpp @@ -32,6 +32,14 @@ #include "gtest/gtest.h" +#if defined(LLVM_ON_WIN32) +#include +#define getcwd_impl _getcwd +#elif defined (HAVE_GETCWD) +#include +#define getcwd_impl getcwd +#endif // LLVM_ON_WIN32 + using namespace llvm; using namespace std; @@ -53,19 +61,21 @@ bool removeIfExists(StringRef Path) { return existed; } +char * current_dir() { +#if defined(LLVM_ON_WIN32) || defined(HAVE_GETCWD) + // calling getcwd (or _getcwd() on windows) with a null buffer makes it + // allocate a sufficiently sized buffer to store the current working dir. + return getcwd_impl(0, 0); +#else + return 0; +#endif +} + class TestDebugIR : public ::testing::Test, public TrivialModuleBuilder { protected: TestDebugIR() : TrivialModuleBuilder(sys::getProcessTriple()) -#ifdef HAVE_GETCWD - , - cwd(get_current_dir_name()) -#else - , - cwd(0) -#endif - { - } + , cwd(current_dir()) {} ~TestDebugIR() { free(cwd); }