1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 10:42:39 +01:00

Add LLVM_ATTRIBUTE_USED to fix problems which could be exposed by aggressive global pointer variable removal

Note to BuryPointer.cpp:GraveYard. 'unused' cannot prevent (1) dead store
elimination and (2) removal of the global pointer variable (D69428) but 'used' can.

Discovered when comparing link maps between HEAD+D69428 and HEAD.

Reviewed By: lattner

Differential Revision: https://reviews.llvm.org/D101217
This commit is contained in:
Fangrui Song 2021-04-26 13:31:37 -07:00
parent 4cb0dafe51
commit e5c758dcf3
2 changed files with 2 additions and 2 deletions

View File

@ -19,7 +19,7 @@ void BuryPointer(const void *Ptr) {
// will not be properly buried and a leak detector will report a leak, which
// is what we want in such case.
static const size_t kGraveYardMaxSize = 16;
LLVM_ATTRIBUTE_UNUSED static const void *GraveYard[kGraveYardMaxSize];
LLVM_ATTRIBUTE_USED static const void *GraveYard[kGraveYardMaxSize];
static std::atomic<unsigned> GraveYardSize;
unsigned Idx = GraveYardSize++;
if (Idx >= kGraveYardMaxSize)

View File

@ -255,7 +255,7 @@ static struct {
// stack if we remove our signal handlers; that can't be done reliably if
// someone else is also trying to do the same thing.
static stack_t OldAltStack;
static void* NewAltStackPointer;
LLVM_ATTRIBUTE_USED static void *NewAltStackPointer;
static void CreateSigAltStack() {
const size_t AltStackSize = MINSIGSTKSZ + 64 * 1024;