//
// 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 is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
-// This header file pulls in all analysis passes for tools like analyze and
-// bugpoint that need this functionality.
+// This header file pulls in all the object modules of the VMCore library so
+// that tools like llc, opt, and lli can ensure they are linked with all symbols
+// from libVMCore.a It should only be used from a tool's main program.
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_LINKALLVMCORE_H
#define LLVM_LINKALLVMCORE_H
-#include <llvm/Support/IncludeFile.h>
-#include <llvm/Module.h>
-#include <llvm/IntrinsicInst.h>
-#include <llvm/IntrinsicInst.h>
-#include <llvm/Instructions.h>
-#include <llvm/Analysis/Dominators.h>
-#include <llvm/Analysis/Verifier.h>
+#include "llvm/LLVMContext.h"
+#include "llvm/Module.h"
+#include "llvm/Instructions.h"
+#include "llvm/IntrinsicInst.h"
+#include "llvm/InlineAsm.h"
+#include "llvm/Analysis/Verifier.h"
+#include "llvm/System/Alarm.h"
+#include "llvm/System/DynamicLibrary.h"
+#include "llvm/System/Memory.h"
+#include "llvm/System/Mutex.h"
+#include "llvm/System/Path.h"
+#include "llvm/System/Process.h"
+#include "llvm/System/Program.h"
+#include "llvm/System/Signals.h"
+#include "llvm/System/TimeValue.h"
+#include "llvm/Support/Dwarf.h"
+#include "llvm/Support/Mangler.h"
+#include "llvm/Support/MathExtras.h"
+#include "llvm/Support/SlowOperationInformer.h"
namespace {
struct ForceVMCoreLinking {
ForceVMCoreLinking() {
- // We must reference the passes in such a way that compilers will not
+ // We must reference VMCore in such a way that compilers will not
// delete it all as dead code, even with whole program optimization,
// yet is effectively a NO-OP. As the compiler isn't smart enough
// to know that getenv() never returns -1, this will do the job.
if (std::getenv("bar") != (char*) -1)
return;
-
- (void)new llvm::LocalDataStructures();
- (void)new llvm::BUDataStructures();
- (void)new llvm::TDDataStructures();
- (void)new llvm::CompleteBUDataStructures();
- (void)new llvm::EquivClassGraphs();
- (void)llvm::createDataStructureStatsPass();
- (void)llvm::createDataStructureGraphCheckerPass();
- (void)llvm::createProfileLoaderPass();
- (void)llvm::createNoProfileInfoPass();
- (void)llvm::createInstCountPass();
- (void)new llvm::IntervalPartition();
- (void)new llvm::ImmediateDominators();
- (void)new llvm::PostDominatorSet();
- (void)new llvm::FindUsedTypes();
- (void)new llvm::ScalarEvolution();
- (void)new llvm::CallTargetFinder();
- ((llvm::Function*)0)->viewCFGOnly();
- llvm::AliasSetTracker X(*(llvm::AliasAnalysis*)0);
- X.add((llvm::Value*)0, 0); // for -print-alias-sets
+ llvm::Module* M = new llvm::Module("", llvm::getGlobalContext());
+ (void)new llvm::UnreachableInst();
+ (void) llvm::createVerifierPass();
+ (void) new llvm::Mangler(*M,"");
}
} ForceVMCoreLinking;
}