diff options
author | Duncan Sands <baldrick@free.fr> | 2007-11-28 10:36:19 +0000 |
---|---|---|
committer | Duncan Sands <baldrick@free.fr> | 2007-11-28 10:36:19 +0000 |
commit | ff306287fffdc61a487057c18c7db63d4805cdc7 (patch) | |
tree | e2511e902bd0f5007ca02b43d02603495f9f4a9b /llvm/lib | |
parent | 45a0c3265faaf0fc28df23ec251cea4d8926145c (diff) | |
download | bcm5719-llvm-ff306287fffdc61a487057c18c7db63d4805cdc7.tar.gz bcm5719-llvm-ff306287fffdc61a487057c18c7db63d4805cdc7.zip |
My compiler complains that "x always evaluates to true"
in this call:
Result.IntVal = APInt(80, 2, x);
What is x?
uint16_t x[8];
I deduce that the APInt constructor being used is this one:
APInt(uint32_t numBits, uint64_t val, bool isSigned = false);
rather than this one:
APInt(uint32_t numBits, uint32_t numWords, const uint64_t bigVal[]);
That doesn't seem right! This fix compiles but is otherwise completely
untested.
llvm-svn: 44400
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/ExecutionEngine/ExecutionEngine.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/llvm/lib/ExecutionEngine/ExecutionEngine.cpp b/llvm/lib/ExecutionEngine/ExecutionEngine.cpp index 72db4e43603..cc3cc38305b 100644 --- a/llvm/lib/ExecutionEngine/ExecutionEngine.cpp +++ b/llvm/lib/ExecutionEngine/ExecutionEngine.cpp @@ -712,13 +712,17 @@ void ExecutionEngine::LoadValueFromMemory(GenericValue &Result, break; case Type::X86_FP80TyID: { // This is endian dependent, but it will only work on x86 anyway. - uint16_t x[8], *p = (uint16_t*)Ptr; + uint16_t *p = (uint16_t*)Ptr; + union { + uint16_t x[8]; + uint64_t y[2]; + }; x[0] = p[1]; x[1] = p[2]; x[2] = p[3]; x[3] = p[4]; x[4] = p[0]; - Result.IntVal = APInt(80, 2, x); + Result.IntVal = APInt(80, 2, y); break; } default: |