llvm-6502/include/llvm/LinkAllVMCore.h
Reid Spencer 6df60a9eff For PR780:
Break the "IncludeFile" mechanism into its own header file and adjust other
files accordingly. Use this facility for the IntrinsicInst problem which
was the subject of PR800.
More to follow on this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28709 91177308-0d34-0410-b5e6-96231b3b80d8
2006-06-07 20:00:19 +00:00

60 lines
2.2 KiB
C++

//===- LinkAllVMCore.h - Reference All VMCore Code --------------*- C++ -*-===//
//
// 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 header file pulls in all analysis passes for tools like analyze and
// bugpoint that need this functionality.
//
//===----------------------------------------------------------------------===//
#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>
namespace {
struct ForceVMCoreLinking {
ForceVMCoreLinking() {
// We must reference the passes 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
}
} ForceVMCoreLinking;
}
#endif