summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorDuncan Sands <baldrick@free.fr>2007-11-28 10:36:19 +0000
committerDuncan Sands <baldrick@free.fr>2007-11-28 10:36:19 +0000
commitff306287fffdc61a487057c18c7db63d4805cdc7 (patch)
treee2511e902bd0f5007ca02b43d02603495f9f4a9b /llvm/lib
parent45a0c3265faaf0fc28df23ec251cea4d8926145c (diff)
downloadbcm5719-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.cpp8
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:
OpenPOWER on IntegriCloud