Mercurial > projects > ldc
changeset 1140:946fad6c96a1
merge
author | Tomas Lindquist Olsen <tomas.l.olsen gmail.com> |
---|---|
date | Tue, 24 Mar 2009 18:22:47 +0100 |
parents | d82cc6e5bb65 (current diff) 4c8bb03e4fbc (diff) |
children | 49421d3ac5a7 |
files | |
diffstat | 1 files changed, 9 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/gen/tollvm.cpp Tue Mar 24 18:22:29 2009 +0100 +++ b/gen/tollvm.cpp Tue Mar 24 18:22:47 2009 +0100 @@ -20,6 +20,7 @@ #include "gen/complex.h" #include "gen/llvmhelpers.h" #include "gen/linkage.h" +#include "gen/llvm-version.h" bool DtoIsPassedByRef(Type* type) { @@ -521,8 +522,16 @@ return LLConstantFP::get(llty, value); else if(llty == LLType::X86_FP80Ty) { uint64_t bits[] = {0, 0}; + #if LLVM_REV < 67562 + // Prior to r67562, the i80 APInt format expected by the APFloat + // constructor was different than the memory layout on the actual + // processor. bits[1] = *(uint16_t*)&value; bits[0] = *(uint64_t*)((uint16_t*)&value + 1); + #else + bits[0] = *(uint64_t*)&value; + bits[1] = *(uint16_t*)((uint64_t*)&value + 1); + #endif return LLConstantFP::get(APFloat(APInt(80, 2, bits))); } else { assert(0 && "Unknown floating point type encountered");