From b8dc6fc1c253211cfbe9000a08dd1bee7a89b4dd Mon Sep 17 00:00:00 2001 From: Yifan Zhao <yifanz16@illinois.edu> Date: Thu, 23 Jan 2020 19:20:05 -0600 Subject: [PATCH] Removed hardcoding of hpvm-rt.bc path --- .../Transforms/DFG2LLVM_NVPTX/CMakeLists.txt | 2 ++ .../DFG2LLVM_NVPTX/DFG2LLVM_NVPTX.cpp | 22 +++++++++++-------- .../Transforms/DFG2LLVM_X86/CMakeLists.txt | 2 ++ .../Transforms/DFG2LLVM_X86/DFG2LLVM_X86.cpp | 19 +++++++++------- hpvm/lib/Transforms/GenHPVM/CMakeLists.txt | 2 ++ hpvm/lib/Transforms/GenHPVM/GenHPVM.cpp | 19 +++++++++------- 6 files changed, 41 insertions(+), 25 deletions(-) diff --git a/hpvm/lib/Transforms/DFG2LLVM_NVPTX/CMakeLists.txt b/hpvm/lib/Transforms/DFG2LLVM_NVPTX/CMakeLists.txt index ce2d4c80fd..832f6334a4 100644 --- a/hpvm/lib/Transforms/DFG2LLVM_NVPTX/CMakeLists.txt +++ b/hpvm/lib/Transforms/DFG2LLVM_NVPTX/CMakeLists.txt @@ -2,6 +2,8 @@ if(WIN32 OR CYGWIN) set(LLVM_LINK_COMPONENTS Core Support) endif() +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DLLVM_BUILD_DIR=${PROJECT_BINARY_DIR}") + add_llvm_library( LLVMDFG2LLVM_NVPTX MODULE DFG2LLVM_NVPTX.cpp diff --git a/hpvm/lib/Transforms/DFG2LLVM_NVPTX/DFG2LLVM_NVPTX.cpp b/hpvm/lib/Transforms/DFG2LLVM_NVPTX/DFG2LLVM_NVPTX.cpp index f582a9ab6a..d250562043 100644 --- a/hpvm/lib/Transforms/DFG2LLVM_NVPTX/DFG2LLVM_NVPTX.cpp +++ b/hpvm/lib/Transforms/DFG2LLVM_NVPTX/DFG2LLVM_NVPTX.cpp @@ -40,6 +40,14 @@ #include <sstream> +#ifndef LLVM_BUILD_DIR +#error LLVM_BUILD_DIR is not defined +#endif + +#define STR_VALUE(X) #X +#define STRINGIFY(X) STR_VALUE(X) +#define LLVM_BUILD_DIR_STR STRINGIFY(LLVM_BUILD_DIR) + using namespace llvm; using namespace builddfg; using namespace dfg2llvm; @@ -254,14 +262,10 @@ void CGT_NVPTX::initRuntimeAPI() { // Load Runtime API Module SMDiagnostic Err; - char *LLVM_SRC_ROOT = getenv("LLVM_SRC_ROOT"); - assert(LLVM_SRC_ROOT != NULL && "Define LLVM_SRC_ROOT environment variable!"); - - Twine llvmSrcRoot = LLVM_SRC_ROOT; - Twine runtimeAPI = - llvmSrcRoot + "/../build/tools/hpvm/projects/hpvm-rt/hpvm-rt.bc"; + std::string runtimeAPI = std::string(LLVM_BUILD_DIR_STR) + + "/tools/hpvm/projects/hpvm-rt/hpvm-rt.bc"; - runtimeModule = parseIRFile(runtimeAPI.str(), Err, M.getContext()); + runtimeModule = parseIRFile(runtimeAPI, Err, M.getContext()); if (runtimeModule == nullptr) { DEBUG(errs() << Err.getMessage() << " " << runtimeAPI << "\n"); assert(false && "couldn't parse runtime"); @@ -1620,8 +1624,8 @@ void CGT_NVPTX::codeGen(DFLeafNode *N) { } // check that addressspace is 1 // if (GEPIaddrspace != 1) { - // // does not fit this pattern - addrspace of pointer argument - //is not global continue; + // // does not fit this pattern - addrspace of pointer + //argument is not global continue; // } if (!(GEPI->hasOneUse())) { // does not fit this pattern - more than one uses diff --git a/hpvm/lib/Transforms/DFG2LLVM_X86/CMakeLists.txt b/hpvm/lib/Transforms/DFG2LLVM_X86/CMakeLists.txt index b79c6a3bf9..0a3a225f19 100644 --- a/hpvm/lib/Transforms/DFG2LLVM_X86/CMakeLists.txt +++ b/hpvm/lib/Transforms/DFG2LLVM_X86/CMakeLists.txt @@ -2,6 +2,8 @@ if(WIN32 OR CYGWIN) set(LLVM_LINK_COMPONENTS Core Support) endif() +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DLLVM_BUILD_DIR=${PROJECT_BINARY_DIR}") + add_llvm_library( LLVMDFG2LLVM_X86 MODULE DFG2LLVM_X86.cpp diff --git a/hpvm/lib/Transforms/DFG2LLVM_X86/DFG2LLVM_X86.cpp b/hpvm/lib/Transforms/DFG2LLVM_X86/DFG2LLVM_X86.cpp index 21adabf4eb..c0e2b715fa 100644 --- a/hpvm/lib/Transforms/DFG2LLVM_X86/DFG2LLVM_X86.cpp +++ b/hpvm/lib/Transforms/DFG2LLVM_X86/DFG2LLVM_X86.cpp @@ -21,6 +21,14 @@ #include "llvm/Transforms/Utils/Cloning.h" #include "llvm/Transforms/Utils/ValueMapper.h" +#ifndef LLVM_BUILD_DIR +#error LLVM_BUILD_DIR is not defined +#endif + +#define STR_VALUE(X) #X +#define STRINGIFY(X) STR_VALUE(X) +#define LLVM_BUILD_DIR_STR STRINGIFY(LLVM_BUILD_DIR) + using namespace llvm; using namespace builddfg; using namespace dfg2llvm; @@ -157,15 +165,10 @@ void CGT_X86::initRuntimeAPI() { // Load Runtime API Module SMDiagnostic Err; - char *LLVM_SRC_ROOT = getenv("LLVM_SRC_ROOT"); - assert(LLVM_SRC_ROOT != NULL && "Define LLVM_SRC_ROOT environment variable!"); - - Twine llvmSrcRoot = LLVM_SRC_ROOT; - Twine runtimeAPI = - llvmSrcRoot + "/../build/tools/hpvm/projects/hpvm-rt/hpvm-rt.bc"; - - runtimeModule = parseIRFile(runtimeAPI.str(), Err, M.getContext()); + std::string runtimeAPI = std::string(LLVM_BUILD_DIR_STR) + + "/tools/hpvm/projects/hpvm-rt/hpvm-rt.bc"; + runtimeModule = parseIRFile(runtimeAPI, Err, M.getContext()); if (runtimeModule == nullptr) { DEBUG(errs() << Err.getMessage() << " " << runtimeAPI << "\n"); assert(false && "couldn't parse runtime"); diff --git a/hpvm/lib/Transforms/GenHPVM/CMakeLists.txt b/hpvm/lib/Transforms/GenHPVM/CMakeLists.txt index 967766e705..fc4c9fc5a9 100644 --- a/hpvm/lib/Transforms/GenHPVM/CMakeLists.txt +++ b/hpvm/lib/Transforms/GenHPVM/CMakeLists.txt @@ -2,6 +2,8 @@ if(WIN32 OR CYGWIN) set(LLVM_LINK_COMPONENTS Core Support) endif() +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DLLVM_BUILD_DIR=${PROJECT_BINARY_DIR}") + add_llvm_library( LLVMGenHPVM MODULE GenHPVM.cpp diff --git a/hpvm/lib/Transforms/GenHPVM/GenHPVM.cpp b/hpvm/lib/Transforms/GenHPVM/GenHPVM.cpp index 738b39905b..d6ad357a33 100644 --- a/hpvm/lib/Transforms/GenHPVM/GenHPVM.cpp +++ b/hpvm/lib/Transforms/GenHPVM/GenHPVM.cpp @@ -32,6 +32,14 @@ } \ } while (0) +#ifndef LLVM_BUILD_DIR +#error LLVM_BUILD_DIR is not defined +#endif + +#define STR_VALUE(X) #X +#define STRINGIFY(X) STR_VALUE(X) +#define LLVM_BUILD_DIR_STR STRINGIFY(LLVM_BUILD_DIR) + using namespace llvm; using namespace hpvmUtils; @@ -263,16 +271,11 @@ bool GenHPVM::runOnModule(Module &M) { // Load Runtime API Module SMDiagnostic Err; - char *LLVM_SRC_ROOT = getenv("LLVM_SRC_ROOT"); - assert(LLVM_SRC_ROOT != NULL && "Define LLVM_SRC_ROOT environment variable!"); - - Twine llvmSrcRoot = LLVM_SRC_ROOT; - Twine runtimeAPI = - llvmSrcRoot + "/../build/tools/hpvm/projects/hpvm-rt/hpvm-rt.bc"; - DEBUG(errs() << llvmSrcRoot << "\n"); + std::string runtimeAPI = std::string(LLVM_BUILD_DIR_STR) + + "/tools/hpvm/projects/hpvm-rt/hpvm-rt.bc"; std::unique_ptr<Module> runtimeModule = - parseIRFile(runtimeAPI.str(), Err, M.getContext()); + parseIRFile(runtimeAPI, Err, M.getContext()); if (runtimeModule == NULL) { DEBUG(errs() << Err.getMessage() << " " << runtimeAPI << "\n"); -- GitLab