Skip to content

Commit 814c65d

Browse files
committed
ExecutionDomainFix - fix static analyzer out of range shift warnings.
Repeat the assertion that we already have in hasDomain for addDomain and setSingleDomain.
1 parent c52f839 commit 814c65d

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

llvm/include/llvm/CodeGen/ExecutionDomainFix.h

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,10 +81,20 @@ struct DomainValue {
8181
}
8282

8383
/// Mark domain as available.
84-
void addDomain(unsigned domain) { AvailableDomains |= 1u << domain; }
84+
void addDomain(unsigned domain) {
85+
assert(domain <
86+
static_cast<unsigned>(std::numeric_limits<unsigned>::digits) &&
87+
"undefined behavior");
88+
AvailableDomains |= 1u << domain;
89+
}
8590

8691
// Restrict to a single domain available.
87-
void setSingleDomain(unsigned domain) { AvailableDomains = 1u << domain; }
92+
void setSingleDomain(unsigned domain) {
93+
assert(domain <
94+
static_cast<unsigned>(std::numeric_limits<unsigned>::digits) &&
95+
"undefined behavior");
96+
AvailableDomains = 1u << domain;
97+
}
8898

8999
/// Return bitmask of domains that are available and in mask.
90100
unsigned getCommonDomains(unsigned mask) const {

0 commit comments

Comments
 (0)