diff --git a/clang/lib/AST/Interp/ByteCodeEmitter.cpp b/clang/lib/AST/Interp/ByteCodeEmitter.cpp index b67e6969c37e1b..ff2136d34872f8 100644 --- a/clang/lib/AST/Interp/ByteCodeEmitter.cpp +++ b/clang/lib/AST/Interp/ByteCodeEmitter.cpp @@ -163,10 +163,8 @@ static void emit(Program &P, std::vector &Code, const T &Val, } if constexpr (!std::is_pointer_v) { - // Construct the value directly into our storage vector. - size_t ValPos = Code.size(); - Code.resize(Code.size() + Size); - new (Code.data() + ValPos) T(Val); + const char *Data = reinterpret_cast(&Val); + Code.insert(Code.end(), Data, Data + Size); } else { uint32_t ID = P.getOrCreateNativePointer(Val); const char *Data = reinterpret_cast(&ID);