else if (memcmp (token, "-g", 2) == 0)
{
#ifndef LLVM_OLDER_THAN_3_8
- token = "-debug-info-kind=line-tables-only";
+ token = "-dwarf-column-info -debug-info-kind=limited " \
+ "-dwarf-version=4 -debugger-tuning=gdb";
#endif
}
else if (memcmp (token, "-D", 2) == 0 || memcmp (token, "-I", 2) == 0)
#ifdef LLVM_OLDER_THAN_3_9
(*mod)->setPICLevel(PICLevel::Large);
-#else
- (*mod)->setPICLevel(PICLevel::BigPIC);
- (*mod)->setPIELevel(PIELevel::Large);
#endif
linked_module->setDataLayout(libmodule->getDataLayout());
#ifdef LLVM_OLDER_THAN_3_9
linked_module->setPICLevel(PICLevel::Large);
-#else
- linked_module->setPICLevel(PICLevel::BigPIC);
- linked_module->setPIELevel(PIELevel::Large);
#endif
#else
llvm::Module::const_named_metadata_iterator mi,me;
for (mi=lib->named_metadata_begin(), me=lib->named_metadata_end();
mi != me; mi++) {
- const NamedMDNode &NMD=*mi;
- /* This causes problems, because multiple wchar_size */
- if (NMD.getName() == StringRef("llvm.module.flags"))
- continue;
- /* This causes problems with NVidia,
- * and is regenerated by pocl-ptx-gen anyway */
- if (NMD.getName() == StringRef("nvvm.annotations"))
- continue;
- DB_PRINT(" %s:\n", NMD.getName().data());
- NamedMDNode *NewNMD=program->getOrInsertNamedMetadata(NMD.getName());
- for (unsigned i=0, e=NMD.getNumOperands(); i != e; ++i)
- NewNMD->addOperand(MapMetadata(NMD.getOperand(i), vvm));
+ const NamedMDNode &NMD = *mi;
+ // This causes problems with NVidia, and is regenerated by pocl-ptx-gen
+ // anyway.
+ if (NMD.getName() == StringRef("nvvm.annotations"))
+ continue;
+ DB_PRINT(" %s:\n", NMD.getName().data());
+ if (NamedMDNode *Old = program->getNamedMetadata(NMD.getName())) {
+ // Let's not overwrite existing metadata such as llvm.module.flags and
+ // opencl.ocl.version.
+ continue;
+ }
+ NamedMDNode *NewNMD = program->getOrInsertNamedMetadata(NMD.getName());
+ for (unsigned i = 0, e = NMD.getNumOperands(); i != e; ++i)
+ NewNMD->addOperand(MapMetadata(NMD.getOperand(i), vvm));
}
-
}
int link(llvm::Module *program, const llvm::Module *lib, std::string &log) {