Implement: Linker/2003-08-24-InheritPtrSize.ll
authorChris Lattner <sabre@nondot.org>
Sun, 24 Aug 2003 19:26:42 +0000 (19:26 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 24 Aug 2003 19:26:42 +0000 (19:26 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8129 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Linker/LinkModules.cpp
lib/Transforms/Utils/Linker.cpp
lib/VMCore/Linker.cpp

index 2bf095aa55fd8454035d62ec79f791227a2b5246..c6adff258675e47d5fcf2a8bbef3194683dfa126 100644 (file)
@@ -761,9 +761,16 @@ static bool LinkAppendingVars(Module *M,
 // shouldn't be relied on to be consistent.
 //
 bool LinkModules(Module *Dest, const Module *Src, std::string *ErrorMsg) {
-  if (Dest->getEndianness() != Src->getEndianness())
+  if (Dest->getEndianness() == Module::AnyEndianness)
+    Dest->setEndianness(Src->getEndianness());
+  if (Dest->getPointerSize() == Module::AnyPointerSize)
+    Dest->setPointerSize(Src->getPointerSize());
+
+  if (Src->getEndianness() != Module::AnyEndianness &&
+      Dest->getEndianness() != Src->getEndianness())
     std::cerr << "WARNING: Linking two modules of different endianness!\n";
-  if (Dest->getPointerSize() != Src->getPointerSize())
+  if (Src->getPointerSize() != Module::AnyPointerSize &&
+      Dest->getPointerSize() != Src->getPointerSize())
     std::cerr << "WARNING: Linking two modules of different pointer size!\n";
 
   // LinkTypes - Go through the symbol table of the Src module and see if any
index 2bf095aa55fd8454035d62ec79f791227a2b5246..c6adff258675e47d5fcf2a8bbef3194683dfa126 100644 (file)
@@ -761,9 +761,16 @@ static bool LinkAppendingVars(Module *M,
 // shouldn't be relied on to be consistent.
 //
 bool LinkModules(Module *Dest, const Module *Src, std::string *ErrorMsg) {
-  if (Dest->getEndianness() != Src->getEndianness())
+  if (Dest->getEndianness() == Module::AnyEndianness)
+    Dest->setEndianness(Src->getEndianness());
+  if (Dest->getPointerSize() == Module::AnyPointerSize)
+    Dest->setPointerSize(Src->getPointerSize());
+
+  if (Src->getEndianness() != Module::AnyEndianness &&
+      Dest->getEndianness() != Src->getEndianness())
     std::cerr << "WARNING: Linking two modules of different endianness!\n";
-  if (Dest->getPointerSize() != Src->getPointerSize())
+  if (Src->getPointerSize() != Module::AnyPointerSize &&
+      Dest->getPointerSize() != Src->getPointerSize())
     std::cerr << "WARNING: Linking two modules of different pointer size!\n";
 
   // LinkTypes - Go through the symbol table of the Src module and see if any
index 2bf095aa55fd8454035d62ec79f791227a2b5246..c6adff258675e47d5fcf2a8bbef3194683dfa126 100644 (file)
@@ -761,9 +761,16 @@ static bool LinkAppendingVars(Module *M,
 // shouldn't be relied on to be consistent.
 //
 bool LinkModules(Module *Dest, const Module *Src, std::string *ErrorMsg) {
-  if (Dest->getEndianness() != Src->getEndianness())
+  if (Dest->getEndianness() == Module::AnyEndianness)
+    Dest->setEndianness(Src->getEndianness());
+  if (Dest->getPointerSize() == Module::AnyPointerSize)
+    Dest->setPointerSize(Src->getPointerSize());
+
+  if (Src->getEndianness() != Module::AnyEndianness &&
+      Dest->getEndianness() != Src->getEndianness())
     std::cerr << "WARNING: Linking two modules of different endianness!\n";
-  if (Dest->getPointerSize() != Src->getPointerSize())
+  if (Src->getPointerSize() != Module::AnyPointerSize &&
+      Dest->getPointerSize() != Src->getPointerSize())
     std::cerr << "WARNING: Linking two modules of different pointer size!\n";
 
   // LinkTypes - Go through the symbol table of the Src module and see if any