Revert "Provide a way of accessing the ThinLTO module import map in rustc."
This reverts commit 9df56ca0ee
.
This commit is contained in:
parent
5c0110f44b
commit
d992090a70
3 changed files with 1 additions and 132 deletions
|
@ -798,11 +798,6 @@ LLVMRustPGOAvailable() {
|
|||
#endif
|
||||
}
|
||||
|
||||
// We encode the ThinLTO module import map as a nested null-terminated list to
|
||||
// get it into Rust.
|
||||
typedef const char* LLVMRustThinLTOModuleName;
|
||||
typedef LLVMRustThinLTOModuleName* LLVMRustThinLTOModuleImports;
|
||||
|
||||
#if LLVM_VERSION_GE(4, 0)
|
||||
|
||||
// Here you'll find an implementation of ThinLTO as used by the Rust compiler
|
||||
|
@ -1104,52 +1099,6 @@ LLVMRustPrepareThinLTOImport(const LLVMRustThinLTOData *Data, LLVMModuleRef M) {
|
|||
return true;
|
||||
}
|
||||
|
||||
/// Converts the LLVMRustThinLTOData::ImportLists map into a nested list. The
|
||||
/// first level is a null-terminated array with an entry for each module. Each
|
||||
/// entry is a pointer that points to a null-termined array of module names. The
|
||||
/// first entry is always the name of the *importing* module, the following
|
||||
/// entries are the names of the modules it imports from. Each module name is
|
||||
/// a regular C string.
|
||||
extern "C" LLVMRustThinLTOModuleImports*
|
||||
LLVMRustGetThinLTOModuleImports(const LLVMRustThinLTOData *Data) {
|
||||
// Allocate number of module +1. This is a null-terminated array.
|
||||
LLVMRustThinLTOModuleImports* thinLTOModuleImports =
|
||||
new LLVMRustThinLTOModuleImports[Data->ImportLists.size() + 1];
|
||||
size_t module_index = 0;
|
||||
|
||||
for (const auto & module : Data->ImportLists) {
|
||||
StringRef module_id = module.getKey();
|
||||
const auto& imports = module.getValue();
|
||||
|
||||
// Allocate number of imported module + 2, one extra for the name of the
|
||||
// importing module and another one for null-termination.
|
||||
LLVMRustThinLTOModuleImports imports_array =
|
||||
new LLVMRustThinLTOModuleName[imports.size() + 2];
|
||||
|
||||
// The first value is always the name of the *importing* module.
|
||||
imports_array[0] = strndup(module_id.data(), module_id.size());
|
||||
|
||||
size_t imports_array_index = 1;
|
||||
for (const auto imported_module_id : imports.keys()) {
|
||||
// The following values are the names of the imported modules.
|
||||
imports_array[imports_array_index] = strndup(imported_module_id.data(),
|
||||
imported_module_id.size());
|
||||
imports_array_index += 1;
|
||||
}
|
||||
|
||||
assert(imports_array_index == imports.size() + 1);
|
||||
imports_array[imports_array_index] = nullptr;
|
||||
|
||||
thinLTOModuleImports[module_index] = imports_array;
|
||||
module_index += 1;
|
||||
}
|
||||
|
||||
assert(module_index == Data->ImportLists.size());
|
||||
thinLTOModuleImports[module_index] = nullptr;
|
||||
|
||||
return thinLTOModuleImports;
|
||||
}
|
||||
|
||||
// This struct and various functions are sort of a hack right now, but the
|
||||
// problem is that we've got in-memory LLVM modules after we generate and
|
||||
// optimize all codegen-units for one compilation in rustc. To be compatible
|
||||
|
@ -1331,11 +1280,6 @@ LLVMRustPrepareThinLTOImport(const LLVMRustThinLTOData *Data, LLVMModuleRef M) {
|
|||
report_fatal_error("ThinLTO not available");
|
||||
}
|
||||
|
||||
extern "C" LLVMRustThinLTOModuleImports
|
||||
LLVMRustGetLLVMRustThinLTOModuleImports(const LLVMRustThinLTOData *Data) {
|
||||
report_fatal_error("ThinLTO not available");
|
||||
}
|
||||
|
||||
extern "C" void
|
||||
LLVMRustFreeThinLTOData(LLVMRustThinLTOData *Data) {
|
||||
report_fatal_error("ThinLTO not available");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue