mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-28 07:05:03 +00:00
Now that llvm always does the right thing with private, use it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@201625 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f2ce8f7874
commit
070b5745ae
@ -561,19 +561,13 @@ static size_t TypeSizeToSizeIndex(uint32_t TypeSize) {
|
||||
static GlobalVariable *createPrivateGlobalForString(
|
||||
Module &M, StringRef Str, bool AllowMerging) {
|
||||
Constant *StrConst = ConstantDataArray::getString(M.getContext(), Str);
|
||||
// For module-local strings that can be merged with another one we set the
|
||||
// private linkage and the unnamed_addr attribute.
|
||||
// Non-mergeable strings are made linker_private to remove them from the
|
||||
// symbol table. "private" linkage doesn't work for Darwin, where the
|
||||
// "L"-prefixed globals end up in __TEXT,__const section
|
||||
// (see http://llvm.org/bugs/show_bug.cgi?id=17976 for more info).
|
||||
GlobalValue::LinkageTypes linkage =
|
||||
AllowMerging ? GlobalValue::PrivateLinkage
|
||||
: GlobalValue::LinkerPrivateLinkage;
|
||||
// We use private linkage for module-local strings. If they can be merged
|
||||
// with another one, we set the unnamed_addr attribute.
|
||||
GlobalVariable *GV =
|
||||
new GlobalVariable(M, StrConst->getType(), true,
|
||||
linkage, StrConst, kAsanGenPrefix);
|
||||
if (AllowMerging) GV->setUnnamedAddr(true);
|
||||
GlobalValue::PrivateLinkage, StrConst, kAsanGenPrefix);
|
||||
if (AllowMerging)
|
||||
GV->setUnnamedAddr(true);
|
||||
GV->setAlignment(1); // Strings may not be merged w/o setting align 1.
|
||||
return GV;
|
||||
}
|
||||
|
@ -7,6 +7,7 @@ target triple = "x86_64-unknown-linux-gnu"
|
||||
; module ctor/dtor
|
||||
|
||||
; CHECK: llvm.global_ctors
|
||||
; CHECK: @__asan_gen_ = private constant [8 x i8] c"<stdin>\00", align 1
|
||||
; CHECK: llvm.global_dtors
|
||||
|
||||
; Test that we don't instrument global arrays with static initializer
|
||||
|
Loading…
Reference in New Issue
Block a user