diff options
author | Erik Verbruggen <erik.verbruggen@digia.com> | 2016-01-15 11:34:21 +0100 |
---|---|---|
committer | Erik Verbruggen <erik.verbruggen@theqtcompany.com> | 2016-01-20 09:10:32 +0000 |
commit | b2a49880317d66418c7d7a6be2e8eee515155213 (patch) | |
tree | f1495f7958d7c7a5afd457c8865bb0a4037d7bfa /src/qml | |
parent | 68beab39a76d567e153e631838a067db8fb7a7c4 (diff) |
Remove a case of type-punning.
This is officially undefined behavior.
Change-Id: I74d7d7d6cf6a774bc6f90c5a0362ce5ba07768f8
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Diffstat (limited to 'src/qml')
-rw-r--r-- | src/qml/jit/qv4assembler_p.h | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/src/qml/jit/qv4assembler_p.h b/src/qml/jit/qv4assembler_p.h index e175acbecd..a5028bc683 100644 --- a/src/qml/jit/qv4assembler_p.h +++ b/src/qml/jit/qv4assembler_p.h @@ -1084,12 +1084,10 @@ public: { if (IR::Const *c = e->asConst()) { #ifdef QV4_USE_64_BIT_VALUE_ENCODING - union { - double d; - int64_t i; - } u; - u.d = c->value; - move(TrustedImm64(u.i), ReturnValueRegister); + Q_STATIC_ASSERT(sizeof(int64_t) == sizeof(double)); + int64_t i; + memcpy(&i, &c->value, sizeof(double)); + move(TrustedImm64(i), ReturnValueRegister); move64ToDouble(ReturnValueRegister, target); #else JSC::MacroAssembler::loadDouble(constantTable().loadValueAddress(c, ScratchRegister), target); |