summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Bytecode/Reader/Reader.cpp
diff options
context:
space:
mode:
authorReid Spencer <rspencer@reidspencer.com>2004-07-25 21:36:26 +0000
committerReid Spencer <rspencer@reidspencer.com>2004-07-25 21:36:26 +0000
commit9a5f371ce9e48ebb82690db5ff4e959a821b0299 (patch)
treedf18d3155752ff20193fdb928a46515a3f1f6c08 /llvm/lib/Bytecode/Reader/Reader.cpp
parentbd729203312a470bf1c07359034121ea5068603a (diff)
downloadbcm5719-llvm-9a5f371ce9e48ebb82690db5ff4e959a821b0299.tar.gz
bcm5719-llvm-9a5f371ce9e48ebb82690db5ff4e959a821b0299.zip
Always write FP values correctly.
Adjust for new Module.h interface for dependent libraries. Excise unused backwards compatibility flag. llvm-svn: 15220
Diffstat (limited to 'llvm/lib/Bytecode/Reader/Reader.cpp')
-rw-r--r--llvm/lib/Bytecode/Reader/Reader.cpp56
1 files changed, 21 insertions, 35 deletions
diff --git a/llvm/lib/Bytecode/Reader/Reader.cpp b/llvm/lib/Bytecode/Reader/Reader.cpp
index d19651ffb4a..8186a77b015 100644
--- a/llvm/lib/Bytecode/Reader/Reader.cpp
+++ b/llvm/lib/Bytecode/Reader/Reader.cpp
@@ -156,38 +156,30 @@ inline void BytecodeReader::read_data(void *Ptr, void *End) {
/// Read a float value in little-endian order
inline void BytecodeReader::read_float(float& FloatVal) {
- if (hasPlatformSpecificFloatingPoint) {
- read_data(&FloatVal, &FloatVal+1);
- } else {
- /// FIXME: This isn't optimal, it has size problems on some platforms
- /// where FP is not IEEE.
- union {
- float f;
- uint32_t i;
- } FloatUnion;
- FloatUnion.i = At[0] | (At[1] << 8) | (At[2] << 16) | (At[3] << 24);
- At+=sizeof(uint32_t);
- FloatVal = FloatUnion.f;
- }
+ /// FIXME: This isn't optimal, it has size problems on some platforms
+ /// where FP is not IEEE.
+ union {
+ float f;
+ uint32_t i;
+ } FloatUnion;
+ FloatUnion.i = At[0] | (At[1] << 8) | (At[2] << 16) | (At[3] << 24);
+ At+=sizeof(uint32_t);
+ FloatVal = FloatUnion.f;
}
/// Read a double value in little-endian order
inline void BytecodeReader::read_double(double& DoubleVal) {
- if (hasPlatformSpecificFloatingPoint) {
- read_data(&DoubleVal, &DoubleVal+1);
- } else {
- /// FIXME: This isn't optimal, it has size problems on some platforms
- /// where FP is not IEEE.
- union {
- double d;
- uint64_t i;
- } DoubleUnion;
- DoubleUnion.i = At[0] | (At[1] << 8) | (At[2] << 16) | (At[3] << 24) |
- (uint64_t(At[4]) << 32) | (uint64_t(At[5]) << 40) |
- (uint64_t(At[6]) << 48) | (uint64_t(At[7]) << 56);
- At+=sizeof(uint64_t);
- DoubleVal = DoubleUnion.d;
- }
+ /// FIXME: This isn't optimal, it has size problems on some platforms
+ /// where FP is not IEEE.
+ union {
+ double d;
+ uint64_t i;
+ } DoubleUnion;
+ DoubleUnion.i = At[0] | (At[1] << 8) | (At[2] << 16) | (At[3] << 24) |
+ (uint64_t(At[4]) << 32) | (uint64_t(At[5]) << 40) |
+ (uint64_t(At[6]) << 48) | (uint64_t(At[7]) << 56);
+ At+=sizeof(uint64_t);
+ DoubleVal = DoubleUnion.d;
}
/// Read a block header and obtain its type and size
@@ -1853,7 +1845,7 @@ void BytecodeReader::ParseModuleGlobalInfo() {
std::string dep_lib;
while( num_dep_libs-- ) {
dep_lib = read_str();
- TheModule->linsert(dep_lib);
+ TheModule->addLibrary(dep_lib);
}
// Read target triple and place into the module
@@ -1894,7 +1886,6 @@ void BytecodeReader::ParseVersionInfo() {
hasRestrictedGEPTypes = false;
hasTypeDerivedFromValue = false;
hasLongBlockHeaders = false;
- hasPlatformSpecificFloatingPoint = false;
has32BitTypes = false;
hasNoDependentLibraries = false;
@@ -1934,11 +1925,6 @@ void BytecodeReader::ParseVersionInfo() {
/// bits for block type.
hasLongBlockHeaders = true;
- /// LLVM 1.2 and earlier wrote floating point values in a platform specific
- /// bit ordering. This was fixed in LLVM 1.3, but we still need to be backwards
- /// compatible.
- hasPlatformSpecificFloatingPoint = true;
-
/// LLVM 1.2 and earlier wrote type slot numbers as vbr_uint32. In LLVM 1.3
/// this has been reduced to vbr_uint24. It shouldn't make much difference
/// since we haven't run into a module with > 24 million types, but for safety
OpenPOWER on IntegriCloud