diff options
author | Mingming Liu <mingmingl@google.com> | 2025-09-16 12:01:21 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-09-16 12:01:21 -0700 |
commit | 027bccc4692923d0f1ba3d4d970071f747c2255c (patch) | |
tree | d147847551d3b6c40065a8fd746e5857bb43518c /llvm/lib/CodeGen/CodeGenPrepare.cpp | |
parent | 95388b2f2370d02fbe0b3c191470714edc179e44 (diff) | |
download | llvm-027bccc4692923d0f1ba3d4d970071f747c2255c.zip llvm-027bccc4692923d0f1ba3d4d970071f747c2255c.tar.gz llvm-027bccc4692923d0f1ba3d4d970071f747c2255c.tar.bz2 |
[NFCI][Globals] In GlobalObjects::setSectionPrefix, do conditional update if existing prefix is not equivalent to the new one. Returns whether prefix changed. (#158460)
Before this change, `setSectionPrefix` overwrites existing section
prefix with new one unconditionally.
After this change, `setSectionPrefix` checks for equivalences, updates
conditionally and returns whether an update happens.
Update the existing callers to make use of the return value. [PR
155337](https://github.com/llvm/llvm-project/pull/155337/files#diff-cc0c67ac89807f4453f0cfea9164944a4650cd6873a468a0f907e7158818eae9)
is a motivating use case whether the 'update' semantic is needed.
Diffstat (limited to 'llvm/lib/CodeGen/CodeGenPrepare.cpp')
-rw-r--r-- | llvm/lib/CodeGen/CodeGenPrepare.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/llvm/lib/CodeGen/CodeGenPrepare.cpp b/llvm/lib/CodeGen/CodeGenPrepare.cpp index 9db4c9e..92d8768 100644 --- a/llvm/lib/CodeGen/CodeGenPrepare.cpp +++ b/llvm/lib/CodeGen/CodeGenPrepare.cpp @@ -583,23 +583,23 @@ bool CodeGenPrepare::_run(Function &F) { // if requested. if (BBSectionsGuidedSectionPrefix && BBSectionsProfileReader && BBSectionsProfileReader->isFunctionHot(F.getName())) { - F.setSectionPrefix("hot"); + EverMadeChange |= F.setSectionPrefix("hot"); } else if (ProfileGuidedSectionPrefix) { // The hot attribute overwrites profile count based hotness while profile // counts based hotness overwrite the cold attribute. // This is a conservative behabvior. if (F.hasFnAttribute(Attribute::Hot) || PSI->isFunctionHotInCallGraph(&F, *BFI)) - F.setSectionPrefix("hot"); + EverMadeChange |= F.setSectionPrefix("hot"); // If PSI shows this function is not hot, we will placed the function // into unlikely section if (1) PSI shows this is a cold function, or // (2) the function has a attribute of cold. else if (PSI->isFunctionColdInCallGraph(&F, *BFI) || F.hasFnAttribute(Attribute::Cold)) - F.setSectionPrefix("unlikely"); + EverMadeChange |= F.setSectionPrefix("unlikely"); else if (ProfileUnknownInSpecialSection && PSI->hasPartialSampleProfile() && PSI->isFunctionHotnessUnknown(F)) - F.setSectionPrefix("unknown"); + EverMadeChange |= F.setSectionPrefix("unknown"); } /// This optimization identifies DIV instructions that can be |