Skip to content

Commit

Permalink
[MemProf] Make hasSingleAllocType helper non-static
Browse files Browse the repository at this point in the history
As suggested in D140908, make the hasSingleAllocType helper non-static
so that it can be used in other files. Add unit testing.

Differential Revision: https://reviews.llvm.org/D144318
  • Loading branch information
teresajohnson committed Feb 21, 2023
1 parent 1d7dad8 commit 5fd82ca
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 1 deletion.
3 changes: 3 additions & 0 deletions llvm/include/llvm/Analysis/MemoryProfileInfo.h
Expand Up @@ -37,6 +37,9 @@ MDNode *getMIBStackNode(const MDNode *MIB);
/// Returns the allocation type from an MIB metadata node.
AllocationType getMIBAllocType(const MDNode *MIB);

/// True if the AllocTypes bitmask contains just a single type.
bool hasSingleAllocType(uint8_t AllocTypes);

/// Class to build a trie of call stack contexts for a particular profiled
/// allocation call, along with their associated allocation types.
/// The allocation will be at the root of the trie, which is then used to
Expand Down
2 changes: 1 addition & 1 deletion llvm/lib/Analysis/MemoryProfileInfo.cpp
Expand Up @@ -91,7 +91,7 @@ static void addAllocTypeAttribute(LLVMContext &Ctx, CallBase *CI,
CI->addFnAttr(A);
}

static bool hasSingleAllocType(uint8_t AllocTypes) {
bool llvm::memprof::hasSingleAllocType(uint8_t AllocTypes) {
const unsigned NumAllocTypes = llvm::popcount(AllocTypes);
assert(NumAllocTypes != 0);
return NumAllocTypes == 1;
Expand Down
9 changes: 9 additions & 0 deletions llvm/unittests/Analysis/MemoryProfileInfoTest.cpp
Expand Up @@ -86,6 +86,15 @@ TEST_F(MemoryProfileInfoTest, GetAllocType) {
AllocationType::NotCold);
}

// Test the hasSingleAllocType helper.
TEST_F(MemoryProfileInfoTest, SingleAllocType) {
uint8_t NotCold = (uint8_t)AllocationType::NotCold;
uint8_t Cold = (uint8_t)AllocationType::Cold;
EXPECT_TRUE(hasSingleAllocType(NotCold));
EXPECT_TRUE(hasSingleAllocType(Cold));
EXPECT_FALSE(hasSingleAllocType(NotCold | Cold));
}

// Test buildCallstackMetadata helper.
TEST_F(MemoryProfileInfoTest, BuildCallStackMD) {
LLVMContext C;
Expand Down

0 comments on commit 5fd82ca

Please sign in to comment.