mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 20:51:52 +01:00
Now that llvm always does the right thing with private, use it.
llvm-svn: 201625
This commit is contained in:
parent
e24a4a66da
commit
e5f011f1b1
@ -561,19 +561,13 @@ static size_t TypeSizeToSizeIndex(uint32_t TypeSize) {
|
|||||||
static GlobalVariable *createPrivateGlobalForString(
|
static GlobalVariable *createPrivateGlobalForString(
|
||||||
Module &M, StringRef Str, bool AllowMerging) {
|
Module &M, StringRef Str, bool AllowMerging) {
|
||||||
Constant *StrConst = ConstantDataArray::getString(M.getContext(), Str);
|
Constant *StrConst = ConstantDataArray::getString(M.getContext(), Str);
|
||||||
// For module-local strings that can be merged with another one we set the
|
// We use private linkage for module-local strings. If they can be merged
|
||||||
// private linkage and the unnamed_addr attribute.
|
// with another one, we set 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;
|
|
||||||
GlobalVariable *GV =
|
GlobalVariable *GV =
|
||||||
new GlobalVariable(M, StrConst->getType(), true,
|
new GlobalVariable(M, StrConst->getType(), true,
|
||||||
linkage, StrConst, kAsanGenPrefix);
|
GlobalValue::PrivateLinkage, StrConst, kAsanGenPrefix);
|
||||||
if (AllowMerging) GV->setUnnamedAddr(true);
|
if (AllowMerging)
|
||||||
|
GV->setUnnamedAddr(true);
|
||||||
GV->setAlignment(1); // Strings may not be merged w/o setting align 1.
|
GV->setAlignment(1); // Strings may not be merged w/o setting align 1.
|
||||||
return GV;
|
return GV;
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ target triple = "x86_64-unknown-linux-gnu"
|
|||||||
; module ctor/dtor
|
; module ctor/dtor
|
||||||
|
|
||||||
; CHECK: llvm.global_ctors
|
; CHECK: llvm.global_ctors
|
||||||
|
; CHECK: @__asan_gen_ = private constant [8 x i8] c"<stdin>\00", align 1
|
||||||
; CHECK: llvm.global_dtors
|
; CHECK: llvm.global_dtors
|
||||||
|
|
||||||
; Test that we don't instrument global arrays with static initializer
|
; Test that we don't instrument global arrays with static initializer
|
||||||
|
Loading…
x
Reference in New Issue
Block a user