[LTO] Add a function `LTOCodeGenerator::getMergedModule`

One of the uses of `LTOCodeGenerator` is to take it as a middle+back end. Sometimes
it is very helpful to access, especially get information from the optimized module.
If the information can be changed in optimization, it cannot be get before the
module is added to `LTOCodeGenerator`. This patch adds a function
`LTOCodeGenerator::getMergedModule` to access the `MergedModule`.

Reviewed By: steven_wu

Differential Revision: https://reviews.llvm.org/D114201
This commit is contained in:
Shilei Tian 2021-12-20 20:01:37 -05:00
parent bb56c2b366
commit 75a5eaf7c6
3 changed files with 31 additions and 2 deletions

View File

@ -193,6 +193,8 @@ struct LTOCodeGenerator {
void resetMergedModule() { MergedModule.reset(); }
void DiagnosticHandler(const DiagnosticInfo &DI);
Module &getMergedModule() { return *MergedModule; }
private:
/// Verify the merged module on first call.
///

View File

@ -0,0 +1,14 @@
; RUN: llvm-as < %s > %t1
; RUN: llvm-lto --dump-linked-module %t1 2>&1 | FileCheck %s
; CHEKCK: target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
; CHECK: define void @f() {
define void @f() {
; CHECK-NEXT: entry:
entry:
; CHECK-NEXT: ret void
ret void
; CHECK-NEXT: }
}

View File

@ -197,6 +197,11 @@ static cl::opt<bool>
cl::desc("Write merged LTO module to file before CodeGen"),
cl::cat(LTOCategory));
static cl::opt<bool>
DumpLinkedModule("dump-linked-module", cl::init(false),
cl::desc("Dump linked LTO module before optimize"),
cl::cat(LTOCategory));
static cl::list<std::string> InputFilenames(cl::Positional, cl::OneOrMore,
cl::desc("<input bitcode files>"),
cl::cat(LTOCategory));
@ -1115,6 +1120,14 @@ int main(int argc, char **argv) {
error("error compiling the code");
} else {
if (DumpLinkedModule) {
if (SaveLinkedModuleFile)
error(": -dump-linked-module must be used without -dump-linked-module");
Module &M = CodeGen.getMergedModule();
M.dump();
}
if (Parallelism != 1)
error("-j must be specified together with -o");