1193323Sed//===-- Analysis.cpp ------------------------------------------------------===// 2193323Sed// 3193323Sed// The LLVM Compiler Infrastructure 4193323Sed// 5193323Sed// This file is distributed under the University of Illinois Open Source 6193323Sed// License. See LICENSE.TXT for details. 7193323Sed// 8193323Sed//===----------------------------------------------------------------------===// 9193323Sed 10193323Sed#include "llvm-c/Analysis.h" 11226633Sdim#include "llvm-c/Initialization.h" 12249423Sdim#include "llvm/Analysis/Verifier.h" 13218893Sdim#include "llvm/InitializePasses.h" 14251662Sdim#include "llvm/IR/Module.h" 15251662Sdim#include "llvm/PassRegistry.h" 16193323Sed#include <cstring> 17193323Sed 18193323Sedusing namespace llvm; 19193323Sed 20218893Sdim/// initializeAnalysis - Initialize all passes linked into the Analysis library. 21218893Sdimvoid llvm::initializeAnalysis(PassRegistry &Registry) { 22218893Sdim initializeAliasAnalysisAnalysisGroup(Registry); 23218893Sdim initializeAliasAnalysisCounterPass(Registry); 24218893Sdim initializeAAEvalPass(Registry); 25218893Sdim initializeAliasDebuggerPass(Registry); 26218893Sdim initializeAliasSetPrinterPass(Registry); 27218893Sdim initializeNoAAPass(Registry); 28218893Sdim initializeBasicAliasAnalysisPass(Registry); 29226633Sdim initializeBlockFrequencyInfoPass(Registry); 30223017Sdim initializeBranchProbabilityInfoPass(Registry); 31243830Sdim initializeCostModelAnalysisPass(Registry); 32218893Sdim initializeCFGViewerPass(Registry); 33218893Sdim initializeCFGPrinterPass(Registry); 34218893Sdim initializeCFGOnlyViewerPass(Registry); 35218893Sdim initializeCFGOnlyPrinterPass(Registry); 36243830Sdim initializeDependenceAnalysisPass(Registry); 37263508Sdim initializeDelinearizationPass(Registry); 38218893Sdim initializeDominanceFrontierPass(Registry); 39218893Sdim initializeDomViewerPass(Registry); 40218893Sdim initializeDomPrinterPass(Registry); 41218893Sdim initializeDomOnlyViewerPass(Registry); 42218893Sdim initializePostDomViewerPass(Registry); 43218893Sdim initializeDomOnlyPrinterPass(Registry); 44218893Sdim initializePostDomPrinterPass(Registry); 45218893Sdim initializePostDomOnlyViewerPass(Registry); 46218893Sdim initializePostDomOnlyPrinterPass(Registry); 47218893Sdim initializeIVUsersPass(Registry); 48218893Sdim initializeInstCountPass(Registry); 49218893Sdim initializeIntervalPartitionPass(Registry); 50218893Sdim initializeLazyValueInfoPass(Registry); 51218893Sdim initializeLibCallAliasAnalysisPass(Registry); 52218893Sdim initializeLintPass(Registry); 53218893Sdim initializeLoopInfoPass(Registry); 54218893Sdim initializeMemDepPrinterPass(Registry); 55218893Sdim initializeMemoryDependenceAnalysisPass(Registry); 56218893Sdim initializeModuleDebugInfoPrinterPass(Registry); 57218893Sdim initializePostDominatorTreePass(Registry); 58218893Sdim initializeRegionInfoPass(Registry); 59218893Sdim initializeRegionViewerPass(Registry); 60218893Sdim initializeRegionPrinterPass(Registry); 61218893Sdim initializeRegionOnlyViewerPass(Registry); 62218893Sdim initializeRegionOnlyPrinterPass(Registry); 63218893Sdim initializeScalarEvolutionPass(Registry); 64218893Sdim initializeScalarEvolutionAliasAnalysisPass(Registry); 65249423Sdim initializeTargetTransformInfoAnalysisGroup(Registry); 66218893Sdim initializeTypeBasedAliasAnalysisPass(Registry); 67218893Sdim} 68218893Sdim 69218893Sdimvoid LLVMInitializeAnalysis(LLVMPassRegistryRef R) { 70218893Sdim initializeAnalysis(*unwrap(R)); 71218893Sdim} 72218893Sdim 73202375SrdivackyLLVMBool LLVMVerifyModule(LLVMModuleRef M, LLVMVerifierFailureAction Action, 74202375Srdivacky char **OutMessages) { 75193323Sed std::string Messages; 76218893Sdim 77202375Srdivacky LLVMBool Result = verifyModule(*unwrap(M), 78193323Sed static_cast<VerifierFailureAction>(Action), 79193323Sed OutMessages? &Messages : 0); 80218893Sdim 81193323Sed if (OutMessages) 82193323Sed *OutMessages = strdup(Messages.c_str()); 83218893Sdim 84193323Sed return Result; 85193323Sed} 86193323Sed 87202375SrdivackyLLVMBool LLVMVerifyFunction(LLVMValueRef Fn, LLVMVerifierFailureAction Action) { 88193323Sed return verifyFunction(*unwrap<Function>(Fn), 89193323Sed static_cast<VerifierFailureAction>(Action)); 90193323Sed} 91193323Sed 92193323Sedvoid LLVMViewFunctionCFG(LLVMValueRef Fn) { 93193323Sed Function *F = unwrap<Function>(Fn); 94193323Sed F->viewCFG(); 95193323Sed} 96193323Sed 97193323Sedvoid LLVMViewFunctionCFGOnly(LLVMValueRef Fn) { 98193323Sed Function *F = unwrap<Function>(Fn); 99193323Sed F->viewCFGOnly(); 100193323Sed} 101