Skip to content

Commit

Permalink
[NFC][HWASAN] Move getUARTag into the Entry
Browse files Browse the repository at this point in the history
Reviewed By: kstoimenov, eugenis

Differential Revision: https://reviews.llvm.org/D149221
  • Loading branch information
vitalybuka committed Apr 26, 2023
1 parent 6e8b2a8 commit b6da4bf
Showing 1 changed file with 6 additions and 7 deletions.
13 changes: 6 additions & 7 deletions llvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -305,7 +305,7 @@ class HWAddressSanitizer {
void tagAlloca(IRBuilder<> &IRB, AllocaInst *AI, Value *Tag, size_t Size);
Value *tagPointer(IRBuilder<> &IRB, Type *Ty, Value *PtrLong, Value *Tag);
Value *untagPointer(IRBuilder<> &IRB, Value *PtrLong);
bool instrumentStack(memtag::StackInfo &Info, Value *StackTag,
bool instrumentStack(memtag::StackInfo &Info, Value *StackTag, Value *UARTag,
const DominatorTree &DT, const PostDominatorTree &PDT,
const LoopInfo &LI);
Value *readRegister(IRBuilder<> &IRB, StringRef Name);
Expand Down Expand Up @@ -1047,7 +1047,7 @@ Value *HWAddressSanitizer::getNextTagWithCall(IRBuilder<> &IRB) {

Value *HWAddressSanitizer::getStackBaseTag(IRBuilder<> &IRB) {
if (ClGenerateTagsWithCalls)
return getNextTagWithCall(IRB);
return nullptr;
if (StackBaseTag)
return StackBaseTag;
// Extract some entropy from the stack pointer for the tags.
Expand Down Expand Up @@ -1276,7 +1276,7 @@ static bool isLifetimeIntrinsic(Value *V) {
}

bool HWAddressSanitizer::instrumentStack(memtag::StackInfo &SInfo,
Value *StackTag,
Value *StackTag, Value *UARTag,
const DominatorTree &DT,
const PostDominatorTree &PDT,
const LoopInfo &LI) {
Expand Down Expand Up @@ -1342,7 +1342,6 @@ bool HWAddressSanitizer::instrumentStack(memtag::StackInfo &SInfo,

auto TagEnd = [&](Instruction *Node) {
IRB.SetInsertPoint(Node);
Value *UARTag = getUARTag(IRB);
// When untagging, use the `AlignedSize` because we need to set the tags
// for the entire alloca to zero. If we used `Size` here, we would
// keep the last granule tagged, and store zero in the last byte of the
Expand Down Expand Up @@ -1446,9 +1445,9 @@ void HWAddressSanitizer::sanitizeFunction(Function &F,
const DominatorTree &DT = FAM.getResult<DominatorTreeAnalysis>(F);
const PostDominatorTree &PDT = FAM.getResult<PostDominatorTreeAnalysis>(F);
const LoopInfo &LI = FAM.getResult<LoopAnalysis>(F);
Value *StackTag =
ClGenerateTagsWithCalls ? nullptr : getStackBaseTag(EntryIRB);
instrumentStack(SInfo, StackTag, DT, PDT, LI);
Value *StackTag = getStackBaseTag(EntryIRB);
Value *UARTag = getUARTag(EntryIRB);
instrumentStack(SInfo, StackTag, UARTag, DT, PDT, LI);
}

// If we split the entry block, move any allocas that were originally in the
Expand Down

0 comments on commit b6da4bf

Please sign in to comment.