more cleanup and cmake fixes

This commit is contained in:
Ivan 2017-09-03 14:43:55 +03:00
parent e82aeb67d3
commit cc1e8babbc
2 changed files with 34 additions and 34 deletions

View file

@ -159,20 +159,20 @@ void fixupRtThunks(llvm::Module &newModule,
assert(objectsFixed = thunk2func.size()); assert(objectsFixed = thunk2func.size());
} }
void hideExternalSymbols(llvm::Module &newModule, const GlobalValsMap &filter) { //void hideExternalSymbols(llvm::Module &newModule, const GlobalValsMap &filter) {
std::set<std::string> externalSymbols; // std::set<std::string> externalSymbols;
for (auto&& val: filter) { // for (auto&& val: filter) {
if(GlobalValVisibility::External == val.second) { // if(GlobalValVisibility::External == val.second) {
externalSymbols.emplace(val.first->getName()); // externalSymbols.emplace(val.first->getName());
} // }
} // }
for (auto& obj: newModule.global_objects()) { // for (auto& obj: newModule.global_objects()) {
if ((llvm::GlobalValue::ExternalLinkage == obj.getLinkage()) && // if ((llvm::GlobalValue::ExternalLinkage == obj.getLinkage()) &&
(!contains(externalSymbols, obj.getName()))) { // (!contains(externalSymbols, obj.getName()))) {
obj.setLinkage(llvm::GlobalValue::InternalLinkage); // obj.setLinkage(llvm::GlobalValue::InternalLinkage);
} // }
} // }
} //}
llvm::Constant *getArrayPtr(llvm::Constant *array) { llvm::Constant *getArrayPtr(llvm::Constant *array) {
assert(nullptr != array); assert(nullptr != array);
@ -242,24 +242,24 @@ llvm::Constant *createStringInitializer(llvm::Module &mod,
llvm::Type::getInt8PtrTy(mod.getContext())); llvm::Type::getInt8PtrTy(mod.getContext()));
} }
void createStaticString(llvm::Module& mod, //void createStaticString(llvm::Module& mod,
llvm::GlobalVariable* var, // llvm::GlobalVariable* var,
llvm::GlobalVariable* varLen, //can be null // llvm::GlobalVariable* varLen, //can be null
llvm::StringRef str) { // llvm::StringRef str) {
assert(nullptr != var); // assert(nullptr != var);
const auto dataLen = str.size() + 1; // const auto dataLen = str.size() + 1;
auto gvar = new llvm::GlobalVariable( // auto gvar = new llvm::GlobalVariable(
mod, // mod,
llvm::ArrayType::get(llvm::Type::getInt8Ty(mod.getContext()), dataLen), // llvm::ArrayType::get(llvm::Type::getInt8Ty(mod.getContext()), dataLen),
true, // true,
llvm::GlobalValue::InternalLinkage, // llvm::GlobalValue::InternalLinkage,
llvm::ConstantDataArray::getString(mod.getContext(), str, true), // llvm::ConstantDataArray::getString(mod.getContext(), str, true),
".str"); // ".str");
var->setInitializer(getArrayPtr(gvar)); // var->setInitializer(getArrayPtr(gvar));
if (nullptr != varLen) { // if (nullptr != varLen) {
varLen->setInitializer(llvm::ConstantInt::get(mod.getContext(), APInt(32, dataLen))); // varLen->setInitializer(llvm::ConstantInt::get(mod.getContext(), APInt(32, dataLen)));
} // }
} //}
// struct RtCompileVarList // struct RtCompileVarList
// { // {

View file

@ -12,7 +12,7 @@ if(LDC_RUNTIME_COMPILE)
set(JITRT_EXTRA_FLAGS "/Zl") set(JITRT_EXTRA_FLAGS "/Zl")
else() else()
set(JITRT_EXTRA_FLAGS "-fPIC -O3") set(JITRT_EXTRA_FLAGS "-fPIC -O3 -std=c++11")
endif() endif()
# Sets up the targets for building the D-source jit-rt object files, # Sets up the targets for building the D-source jit-rt object files,
@ -63,7 +63,7 @@ if(LDC_RUNTIME_COMPILE)
ARCHIVE_OUTPUT_DIRECTORY ${output_path} ARCHIVE_OUTPUT_DIRECTORY ${output_path}
LIBRARY_OUTPUT_DIRECTORY ${output_path} LIBRARY_OUTPUT_DIRECTORY ${output_path}
RUNTIME_OUTPUT_DIRECTORY ${output_path} RUNTIME_OUTPUT_DIRECTORY ${output_path}
COMPILE_FLAGS "${c_flags} ${JITRT_EXTRA_FLAGS} /Zl" COMPILE_FLAGS "${c_flags} ${JITRT_EXTRA_FLAGS}"
LINK_FLAGS "${ld_flags} ${JITRT_EXTRA_LDFLAGS}" LINK_FLAGS "${ld_flags} ${JITRT_EXTRA_LDFLAGS}"
) )