diff options
author | Jeff Cohen <jeffc@jolt-lang.org> | 2005-01-06 06:02:53 +0000 |
---|---|---|
committer | Jeff Cohen <jeffc@jolt-lang.org> | 2005-01-06 06:02:53 +0000 |
commit | 4b807e0381be558f3c9173c971ecf640cb9a9176 (patch) | |
tree | abc2cb365e472f5f50d90b87ea3c83d7ee5619bc /include | |
parent | f5e58f8f436259656886161792127b3630ab7bfd (diff) | |
download | external_llvm-4b807e0381be558f3c9173c971ecf640cb9a9176.zip external_llvm-4b807e0381be558f3c9173c971ecf640cb9a9176.tar.gz external_llvm-4b807e0381be558f3c9173c971ecf640cb9a9176.tar.bz2 |
Add project opt to Visual Studio.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19307 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r-- | include/llvm/Transforms/LinkAllPasses.h | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/include/llvm/Transforms/LinkAllPasses.h b/include/llvm/Transforms/LinkAllPasses.h new file mode 100644 index 0000000..5d58064 --- /dev/null +++ b/include/llvm/Transforms/LinkAllPasses.h @@ -0,0 +1,114 @@ +//===- llvm/Transforms/IPO.h - Interprocedural Transformations --*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file was developed by Jeff Cohen and is distributed under the +// University of Illinois Open Source License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This header file is required for building with Microsoft's VC++, as it has +// no way of linking all registered passes into executables other than by +// explicit use. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_TRANSFORMS_LINKALLPASSES_H +#define LLVM_TRANSFORMS_LINKALLPASSES_H + +#include "llvm/Config/config.h" + +#ifdef LLVM_ON_WIN32 + +#include "llvm/Transforms/Instrumentation.h" +#include "llvm/Transforms/IPO.h" +#include "llvm/Transforms/Scalar.h" +#include "llvm/Transforms/Utils/UnifyFunctionExitNodes.h" + +// Trying not to include <windows.h>, though maybe we should... +extern "C" __declspec(dllimport) void* __stdcall GetCurrentProcess(); + +namespace { + struct ForceLinking { + ForceLinking() { + // We must reference the passes in such a way that VC++ 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 GetCurrentProcess() never returns + // INVALID_HANDLE_VALUE, this will do the job. + if (GetCurrentProcess() != (void *) -1) + return; + + std::vector<llvm::BasicBlock*> bbv; + + // The commented out calls below refer to non-existant creation + // functions. They will be uncommented as the functions are added. + + // (void) llvm::createADCEPass(); + // (void) llvm::createArgPromotionPass(); + // (void) llvm::createBasicBlockTracerPass(); + (void) llvm::createBlockExtractorPass(bbv); + // (void) llvm::createBlockPlacementPass(); + // (void) llvm::createBlockProfilerPass(); + (void) llvm::createBreakCriticalEdgesPass(); + // (void) llvm::createCEEPass(); + // (void) llvm::createCFGSimplifyPass(); + (void) llvm::createCombineBranchesPass(); + // (void) llvm::createConstantExpressionsLowerPass(); + (void) llvm::createConstantMergePass(); + (void) llvm::createConstantPropagationPass(); + // (void) llvm::createDAEPass(); + // (void) llvm::createDCEPass(); + // (void) llvm::createDSEPass(); + // (void) llvm::createDTEPass(); + (void) llvm::createDeadInstEliminationPass(); + // (void) llvm::createEdgeProfilerPass(); + (void) llvm::createEmitFunctionTablePass(); + // (void) llvm::createFunctionProfilerPass(); + (void) llvm::createFunctionResolvingPass(); + // (void) llvm::createFunctionTracerPass(); + (void) llvm::createGCSEPass(); + (void) llvm::createGlobalDCEPass(); + (void) llvm::createGlobalOptimizerPass(); + // (void) llvm::createIPCPPass(); + (void) llvm::createIPSCCPPass(); + (void) llvm::createIndVarSimplifyPass(); + // (void) llvm::createInstCombinerPass(); + // (void) llvm::createInstLoopsPass(); + (void) llvm::createInternalizePass(); + (void) llvm::createLICMPass(); + // (void) llvm::createLoopExtractorPass(); + (void) llvm::createLoopSimplifyPass(); + (void) llvm::createLoopStrengthReducePass(); + (void) llvm::createLoopUnrollPass(); + (void) llvm::createLoopUnswitchPass(); + (void) llvm::createLowerAllocationsPass(); + (void) llvm::createLowerGCPass(); + (void) llvm::createLowerInvokePass(); + (void) llvm::createLowerPackedPass(); + (void) llvm::createLowerSelectPass(); + (void) llvm::createLowerSetJmpPass(); + (void) llvm::createLowerSwitchPass(); + // (void) llvm::createPREPass(); + // (void) llvm::createProfilePathsPass(); + // (void) llvm::createPromotePass(); + (void) llvm::createPruneEHPass(); + // (void) llvm::createRPRPass(); + (void) llvm::createRaiseAllocationsPass(); + (void) llvm::createReassociatePass(); + (void) llvm::createSCCPPass(); + // (void) llvm::createSROAPass(); + // (void) llvm::createSimpleInlinerPass(); + (void) llvm::createSingleLoopExtractorPass(); + (void) llvm::createStripSymbolsPass(); + (void) llvm::createTailCallEliminationPass(); + (void) llvm::createTailDuplicationPass(); + // (void) llvm::createTraceBasicBlocksPass(); + (void) llvm::createUnifyFunctionExitNodesPass(); + } + } X; +}; + +#endif // LLVM_ON_WIN32 + +#endif |