forked from OSchip/llvm-project
[LTO] Discard names for Values that are not global.
This is not on by default (but it might be in the future). The knob to enable the optimization is -lto-discard-value-names. llvm-svn: 266953
This commit is contained in:
parent
3e6be4c27a
commit
3c0410d09d
|
@ -58,6 +58,7 @@ struct Configuration {
|
|||
bool Demangle = true;
|
||||
bool DisableVerify;
|
||||
bool DiscardAll;
|
||||
bool DiscardValueNames;
|
||||
bool DiscardLocals;
|
||||
bool DiscardNone;
|
||||
bool EhFrameHdr;
|
||||
|
|
|
@ -289,6 +289,7 @@ void LinkerDriver::readConfigs(opt::InputArgList &Args) {
|
|||
Config->Demangle = !Args.hasArg(OPT_no_demangle);
|
||||
Config->DisableVerify = Args.hasArg(OPT_disable_verify);
|
||||
Config->DiscardAll = Args.hasArg(OPT_discard_all);
|
||||
Config->DiscardValueNames = Args.hasArg(OPT_lto_discard_value_names);
|
||||
Config->DiscardLocals = Args.hasArg(OPT_discard_locals);
|
||||
Config->DiscardNone = Args.hasArg(OPT_discard_none);
|
||||
Config->EhFrameHdr = Args.hasArg(OPT_eh_frame_hdr);
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#ifndef LLD_ELF_LTO_H
|
||||
#define LLD_ELF_LTO_H
|
||||
|
||||
#include "Config.h"
|
||||
#include "lld/Core/LLVM.h"
|
||||
#include "llvm/ADT/SmallString.h"
|
||||
#include "llvm/ADT/StringSet.h"
|
||||
|
@ -41,6 +42,7 @@ public:
|
|||
|
||||
BitcodeCompiler()
|
||||
: Combined(new llvm::Module("ld-temp.o", Context)), Mover(*Combined) {
|
||||
Context.setDiscardValueNames(Config->DiscardValueNames);
|
||||
Context.enableDebugTypeODRUniquing();
|
||||
}
|
||||
|
||||
|
|
|
@ -238,6 +238,7 @@ def G : Separate<["-"], "G">;
|
|||
def alias_version_script_version_script : Joined<["--"], "version-script=">, Alias<version_script>;
|
||||
|
||||
// LTO-related options.
|
||||
def lto_discard_value_names : Flag<["-"], "lto-discard-value-names">;
|
||||
def lto_jobs : Joined<["--"], "lto-jobs=">,
|
||||
HelpText<"Number of threads to run codegen">;
|
||||
def disable_verify : Flag<["-"], "disable-verify">;
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
; RUN: llvm-as %s -o %t.o
|
||||
|
||||
; RUN: ld.lld -m elf_x86_64 -shared -save-temps %t.o -o %t2.o
|
||||
; RUN: llvm-dis < %t2.o.lto.bc | FileCheck %s
|
||||
|
||||
; RUN: ld.lld -m elf_x86_64 -lto-discard-value-names -shared -save-temps %t.o -o %t2.o
|
||||
; RUN: llvm-dis < %t2.o.lto.bc | FileCheck --check-prefix=NONAME %s
|
||||
|
||||
; CHECK: @GlobalValueName
|
||||
; CHECK: @foo(i32 %in)
|
||||
; CHECK: somelabel:
|
||||
; CHECK: %GV = load i32, i32* @GlobalValueName
|
||||
; CHECK: %add = add i32 %in, %GV
|
||||
; CHECK: ret i32 %add
|
||||
|
||||
; NONAME: @GlobalValueName
|
||||
; NONAME: @foo(i32)
|
||||
; NONAME-NOT: somelabel:
|
||||
; NONAME: %2 = load i32, i32* @GlobalValueName
|
||||
; NONAME: %3 = add i32 %0, %2
|
||||
; NONAME: ret i32 %3
|
||||
|
||||
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
||||
target triple = "x86_64-unknown-linux-gnu"
|
||||
|
||||
@GlobalValueName = global i32 0
|
||||
|
||||
define i32 @foo(i32 %in) {
|
||||
somelabel:
|
||||
%GV = load i32, i32* @GlobalValueName
|
||||
%add = add i32 %in, %GV
|
||||
ret i32 %add
|
||||
}
|
Loading…
Reference in New Issue