Skip to content

Commit df81082

Browse files
committed
Do not use uint32_t(Opaque) for getting 32 upper bits of Opaque
1 parent cfb3afe commit df81082

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

clang/include/clang/AST/Type.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
#include <cstddef>
5353
#include <cstdint>
5454
#include <cstring>
55+
#include <limits>
5556
#include <optional>
5657
#include <string>
5758
#include <type_traits>
@@ -423,8 +424,9 @@ class Qualifiers {
423424
// Deserialize qualifiers from an opaque representation.
424425
static Qualifiers fromOpaqueValue(uint64_t Opaque) {
425426
Qualifiers Qs;
426-
Qs.Mask = uint32_t(Opaque);
427-
Qs.PtrAuth = PointerAuthQualifier::fromOpaqueValue(uint32_t(Opaque >> 32));
427+
constexpr uint32_t U32Max = std::numeric_limits<uint32_t>::max();
428+
Qs.Mask = Opaque & U32Max;
429+
Qs.PtrAuth = PointerAuthQualifier::fromOpaqueValue((Opaque >> 32) & U32Max);
428430
return Qs;
429431
}
430432

0 commit comments

Comments
 (0)