For PR780:
1. Move IncludeFile.h to System library
2. Move IncludeFile.cpp to System library
3. #1 and #2 required to prevent cyclic library dependencies for libSystem
4. Convert all existing uses of Support/IncludeFile.h to System/IncludeFile.h
5. Add IncludeFile support to various lib/System classes.
6. Add new lib/System classes to LinkAllVMCore.h
All this in an attempt to pull in lib/System to what's required for VMCore


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29287 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/SelectionDAG/Makefile b/lib/CodeGen/SelectionDAG/Makefile
index 306a6ca..6c50288 100644
--- a/lib/CodeGen/SelectionDAG/Makefile
+++ b/lib/CodeGen/SelectionDAG/Makefile
@@ -10,5 +10,6 @@
 LIBRARYNAME = LLVMSelectionDAG
 PARALLEL_DIRS =
 BUILD_ARCHIVE = 1
+DONT_BUILD_RELINKED = 1
 
 include $(LEVEL)/Makefile.common
diff --git a/lib/Support/Dwarf.cpp b/lib/Support/Dwarf.cpp
index 409eadd..35862e8 100644
--- a/lib/Support/Dwarf.cpp
+++ b/lib/Support/Dwarf.cpp
@@ -12,6 +12,7 @@
 //===----------------------------------------------------------------------===//
 
 #include "llvm/Support/Dwarf.h"
+#include "llvm/System/IncludeFile.h"
 
 #include <cassert>
 
@@ -580,3 +581,5 @@
 } // End of namespace dwarf.
 
 } // End of namespace llvm.
+
+DEFINING_FILE_FOR(SupportDwarf)
diff --git a/lib/Support/IncludeFile.cpp b/lib/Support/IncludeFile.cpp
deleted file mode 100644
index d472917..0000000
--- a/lib/Support/IncludeFile.cpp
+++ /dev/null
@@ -1,20 +0,0 @@
-//===- lib/Support/IncludeFile.cpp - Ensure Linking Of Implementation -----===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file was developed by Reid Spencer and is distributed under the 
-// University of Illinois Open Source License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file implements the IncludeFile constructor.
-//
-//===----------------------------------------------------------------------===//
-
-#include "llvm/Support/IncludeFile.h"
-
-using namespace llvm;
-
-// This constructor is used to ensure linking of other modules. See the
-// llvm/Support/IncludeFile.h header for details. 
-IncludeFile::IncludeFile(void*) {}
diff --git a/lib/Support/IsInf.cpp b/lib/Support/IsInf.cpp
index 39c11cd..9b0556f 100644
--- a/lib/Support/IsInf.cpp
+++ b/lib/Support/IsInf.cpp
@@ -8,6 +8,7 @@
 //===----------------------------------------------------------------------===//
 
 #include "llvm/Config/config.h"
+#include "llvm/System/IncludeFile.h"
 
 #if HAVE_ISINF_IN_MATH_H
 # include <math.h>
@@ -43,3 +44,5 @@
 int IsInf (double d) { return isinf (d); }
 
 } // end namespace llvm;
+
+DEFINING_FILE_FOR(SupportIsInf)
diff --git a/lib/Support/IsNAN.cpp b/lib/Support/IsNAN.cpp
index 2ed2b28..5ed3971 100644
--- a/lib/Support/IsNAN.cpp
+++ b/lib/Support/IsNAN.cpp
@@ -12,6 +12,8 @@
 //===----------------------------------------------------------------------===//
 
 #include "llvm/Config/config.h"
+#include "llvm/System/IncludeFile.h"
+
 #if HAVE_ISNAN_IN_MATH_H
 # include <math.h>
 #elif HAVE_ISNAN_IN_CMATH
@@ -32,3 +34,5 @@
 int IsNAN (double d) { return isnan (d); }
 
 } // end namespace llvm;
+
+DEFINING_FILE_FOR(SupportIsNAN)
diff --git a/lib/Support/SlowOperationInformer.cpp b/lib/Support/SlowOperationInformer.cpp
index bfdfe88..c5f2718 100644
--- a/lib/Support/SlowOperationInformer.cpp
+++ b/lib/Support/SlowOperationInformer.cpp
@@ -12,6 +12,7 @@
 //===----------------------------------------------------------------------===//
 
 #include "llvm/Support/SlowOperationInformer.h"
+#include "llvm/System/IncludeFile.h"
 #include "llvm/System/Alarm.h"
 #include <iostream>
 #include <sstream>
@@ -64,3 +65,5 @@
   std::cout << ToPrint+OS.str() << std::flush;
   return false;
 }
+
+DEFINING_FILE_FOR(SupportSlowOperationInformer)
diff --git a/lib/System/IncludeFile.cpp b/lib/System/IncludeFile.cpp
index d472917..2ba9595 100644
--- a/lib/System/IncludeFile.cpp
+++ b/lib/System/IncludeFile.cpp
@@ -1,4 +1,4 @@
-//===- lib/Support/IncludeFile.cpp - Ensure Linking Of Implementation -----===//
+//===- lib/System/IncludeFile.cpp - Ensure Linking Of Implementation -----===//
 //
 //                     The LLVM Compiler Infrastructure
 //
@@ -11,10 +11,10 @@
 //
 //===----------------------------------------------------------------------===//
 
-#include "llvm/Support/IncludeFile.h"
+#include "llvm/System/IncludeFile.h"
 
 using namespace llvm;
 
 // This constructor is used to ensure linking of other modules. See the
-// llvm/Support/IncludeFile.h header for details. 
+// llvm/System/IncludeFile.h header for details. 
 IncludeFile::IncludeFile(void*) {}
diff --git a/lib/System/Memory.cpp b/lib/System/Memory.cpp
index e951e3c..3788abe 100644
--- a/lib/System/Memory.cpp
+++ b/lib/System/Memory.cpp
@@ -14,6 +14,7 @@
 
 #include "llvm/System/Memory.h"
 #include "llvm/Config/config.h"
+#include "llvm/System/IncludeFile.h"
 
 namespace llvm {
 using namespace sys;
@@ -33,3 +34,4 @@
 #include "Win32/Memory.inc"
 #endif
 
+DEFINING_FILE_FOR(SystemMemory)
diff --git a/lib/System/Mutex.cpp b/lib/System/Mutex.cpp
index abcf77e..44e3332 100644
--- a/lib/System/Mutex.cpp
+++ b/lib/System/Mutex.cpp
@@ -13,6 +13,7 @@
 
 #include "llvm/Config/config.h"
 #include "llvm/System/Mutex.h"
+#include "llvm/System/IncludeFile.h"
 
 //===----------------------------------------------------------------------===//
 //=== WARNING: Implementation here must contain only TRULY operating system
@@ -157,3 +158,5 @@
 #warning Neither LLVM_ON_UNIX nor LLVM_ON_WIN32 was set in System/Mutex.cpp
 #endif
 #endif
+
+DEFINING_FILE_FOR(SystemMutex)
diff --git a/lib/VMCore/Verifier.cpp b/lib/VMCore/Verifier.cpp
index 635f5a2..3dac3f1 100644
--- a/lib/VMCore/Verifier.cpp
+++ b/lib/VMCore/Verifier.cpp
@@ -105,7 +105,7 @@
       // returning back to the pass manager, or else the pass manager may try to
       // run other passes on the broken module.
       if (RealPass)
-        abortIfBroken();
+        return abortIfBroken();
       return false;
     }
 
@@ -119,7 +119,7 @@
       // returning back to the pass manager, or else the pass manager may try to
       // run other passes on the broken module.
       if (RealPass)
-        abortIfBroken();
+        return abortIfBroken();
 
       return false;
     }
@@ -138,8 +138,7 @@
         visitGlobalVariable(*I);
 
       // If the module is broken, abort at this time.
-      abortIfBroken();
-      return false;
+      return abortIfBroken();
     }
 
     virtual void getAnalysisUsage(AnalysisUsage &AU) const {
@@ -151,7 +150,7 @@
     /// abortIfBroken - If the module is broken and we are supposed to abort on
     /// this condition, do so.
     ///
-    void abortIfBroken() {
+    bool abortIfBroken() {
       if (Broken) {
         msgs << "Broken module found, ";
         switch (action) {
@@ -162,11 +161,13 @@
           case PrintMessageAction:
             msgs << "verification continues.\n";
             std::cerr << msgs.str();
-            break;
+            return false;
           case ReturnStatusAction:
-            break;
+            msgs << "compilation terminated.\n";
+            return Broken;
         }
       }
+      return false;
     }