forked from OSchip/llvm-project
NCF: use bit_cast in IntervalMap
This use is sketchy because it basically reinterprets a pointer to another pointer, but right now it's hiding in a union. After this change it'll be easy to grep for bit_cast of a pointer and un-sketch things if we want. This patch therefore obeys the law of conservation of sketch, with minor improvement. llvm-svn: 341900
This commit is contained in:
parent
a9076e35d4
commit
c0d77e80ac
|
@ -101,6 +101,7 @@
|
|||
|
||||
#include "llvm/ADT/PointerIntPair.h"
|
||||
#include "llvm/ADT/SmallVector.h"
|
||||
#include "llvm/ADT/bit.h"
|
||||
#include "llvm/Support/AlignOf.h"
|
||||
#include "llvm/Support/Allocator.h"
|
||||
#include "llvm/Support/RecyclingAllocator.h"
|
||||
|
@ -977,15 +978,10 @@ private:
|
|||
// Allocator used for creating external nodes.
|
||||
Allocator &allocator;
|
||||
|
||||
/// dataAs - Represent data as a node type without breaking aliasing rules.
|
||||
/// Represent data as a node type without breaking aliasing rules.
|
||||
template <typename T>
|
||||
T &dataAs() const {
|
||||
union {
|
||||
const char *d;
|
||||
T *t;
|
||||
} u;
|
||||
u.d = data.buffer;
|
||||
return *u.t;
|
||||
return *bit_cast<T *>(const_cast<char *>(data.buffer));
|
||||
}
|
||||
|
||||
const RootLeaf &rootLeaf() const {
|
||||
|
|
Loading…
Reference in New Issue