diff options
author | Zaara Syeda <syzaara@ca.ibm.com> | 2024-10-24 10:16:39 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-10-24 10:16:39 -0400 |
commit | f3131c99bf4816ac2fe48dcb5fa7b1f252b07f20 (patch) | |
tree | 6b8fb9a8892e65263abcc9a5874dd4ddb07756c6 /llvm/lib/CodeGen/GlobalMerge.cpp | |
parent | 2e686d6d17c4cc7608510a856055e6ca79fcb917 (diff) | |
download | llvm-f3131c99bf4816ac2fe48dcb5fa7b1f252b07f20.zip llvm-f3131c99bf4816ac2fe48dcb5fa7b1f252b07f20.tar.gz llvm-f3131c99bf4816ac2fe48dcb5fa7b1f252b07f20.tar.bz2 |
[GlobalMerge] Aggressively merge constants to reduce TOC entries (#111756)
Symbols that get mapped into the read-only section are loaded as part of
the text segment and will always need a TOC entry to be addressable. Add
an option to aggressively merge these read only globals to reduce TOC
usage.
Diffstat (limited to 'llvm/lib/CodeGen/GlobalMerge.cpp')
-rw-r--r-- | llvm/lib/CodeGen/GlobalMerge.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/GlobalMerge.cpp b/llvm/lib/CodeGen/GlobalMerge.cpp index 007bea9..4c6c8c60 100644 --- a/llvm/lib/CodeGen/GlobalMerge.cpp +++ b/llvm/lib/CodeGen/GlobalMerge.cpp @@ -119,6 +119,11 @@ static cl::opt<bool> GlobalMergeGroupByUse( "global-merge-group-by-use", cl::Hidden, cl::desc("Improve global merge pass to look at uses"), cl::init(true)); +static cl::opt<bool> GlobalMergeAllConst( + "global-merge-all-const", cl::Hidden, + cl::desc("Merge all const globals without looking at uses"), + cl::init(false)); + static cl::opt<bool> GlobalMergeIgnoreSingleUse( "global-merge-ignore-single-use", cl::Hidden, cl::desc("Improve global merge pass to ignore globals only used alone"), @@ -263,7 +268,7 @@ bool GlobalMergeImpl::doMerge(SmallVectorImpl<GlobalVariable *> &Globals, }); // If we want to just blindly group all globals together, do so. - if (!GlobalMergeGroupByUse) { + if (!GlobalMergeGroupByUse || (GlobalMergeAllConst && isConst)) { BitVector AllGlobals(Globals.size()); AllGlobals.set(); return doMerge(Globals, AllGlobals, M, isConst, AddrSpace); |