Skip to content
Merged
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions llvm/include/llvm/Support/JSON.h
Original file line number Diff line number Diff line change
Expand Up @@ -482,6 +482,13 @@ class Value {
friend class Object;

template <typename T, typename... U> void create(U &&... V) {
#if defined(LLVM_ADDRESS_SANITIZER_BUILD)
// Unpoisoning to prevent overwriting poisoned object (e.g., annotated short
// string). Objects that have had their memory poisoned may cause an ASan
// error if their memory is reused without calling their destructor.
// Unpoisoning the memory prevents this error from occurring.
__asan_unpoison_memory_region(&Union, sizeof(T));
#endif
new (reinterpret_cast<T *>(&Union)) T(std::forward<U>(V)...);
}
template <typename T> T &as() const {
Expand Down