141ba1546eb46030e9994ee14f8052a1981ae2c54Gordon Henriksen//===-- Scalar.cpp --------------------------------------------------------===// 241ba1546eb46030e9994ee14f8052a1981ae2c54Gordon Henriksen// 341ba1546eb46030e9994ee14f8052a1981ae2c54Gordon Henriksen// The LLVM Compiler Infrastructure 441ba1546eb46030e9994ee14f8052a1981ae2c54Gordon Henriksen// 541ba1546eb46030e9994ee14f8052a1981ae2c54Gordon Henriksen// This file is distributed under the University of Illinois Open Source 641ba1546eb46030e9994ee14f8052a1981ae2c54Gordon Henriksen// License. See LICENSE.TXT for details. 741ba1546eb46030e9994ee14f8052a1981ae2c54Gordon Henriksen// 841ba1546eb46030e9994ee14f8052a1981ae2c54Gordon Henriksen//===----------------------------------------------------------------------===// 941ba1546eb46030e9994ee14f8052a1981ae2c54Gordon Henriksen// 10a94d6e87c4c49f2e81b01d66d8bfb591277f8f96Nadav Rotem// This file implements common infrastructure for libLLVMScalarOpts.a, which 111a3d23362168ae6d8e07efd547a92cc36738a789Owen Anderson// implements several scalar transformations over the LLVM intermediate 121a3d23362168ae6d8e07efd547a92cc36738a789Owen Anderson// representation, including the C bindings for that library. 1341ba1546eb46030e9994ee14f8052a1981ae2c54Gordon Henriksen// 1441ba1546eb46030e9994ee14f8052a1981ae2c54Gordon Henriksen//===----------------------------------------------------------------------===// 1541ba1546eb46030e9994ee14f8052a1981ae2c54Gordon Henriksen 16d04a8d4b33ff316ca4cf961e06c9e312eff8e64fChandler Carruth#include "llvm/Transforms/Scalar.h" 171a3d23362168ae6d8e07efd547a92cc36738a789Owen Anderson#include "llvm-c/Initialization.h" 18d04a8d4b33ff316ca4cf961e06c9e312eff8e64fChandler Carruth#include "llvm-c/Transforms/Scalar.h" 19f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar#include "llvm/Analysis/BasicAliasAnalysis.h" 200d9874b48d747298dcea7e4e6385b511c04a7842Rafael Espindola#include "llvm/Analysis/Passes.h" 21f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar#include "llvm/Analysis/ScopedNoAliasAA.h" 22f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar#include "llvm/Analysis/TypeBasedAliasAnalysis.h" 23de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar#include "llvm/Transforms/Scalar/GVN.h" 240b8c9a80f20772c3793201ab5b251d3520b9cea3Chandler Carruth#include "llvm/IR/DataLayout.h" 2536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines#include "llvm/IR/Verifier.h" 26d04a8d4b33ff316ca4cf961e06c9e312eff8e64fChandler Carruth#include "llvm/InitializePasses.h" 27ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines#include "llvm/IR/LegacyPassManager.h" 2841ba1546eb46030e9994ee14f8052a1981ae2c54Gordon Henriksen 2941ba1546eb46030e9994ee14f8052a1981ae2c54Gordon Henriksenusing namespace llvm; 3041ba1546eb46030e9994ee14f8052a1981ae2c54Gordon Henriksen 31a94d6e87c4c49f2e81b01d66d8bfb591277f8f96Nadav Rotem/// initializeScalarOptsPasses - Initialize all passes linked into the 321a3d23362168ae6d8e07efd547a92cc36738a789Owen Anderson/// ScalarOpts library. 331a3d23362168ae6d8e07efd547a92cc36738a789Owen Andersonvoid llvm::initializeScalarOpts(PassRegistry &Registry) { 34f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar initializeADCELegacyPassPass(Registry); 35de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar initializeBDCELegacyPassPass(Registry); 3637ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines initializeAlignmentFromAssumptionsPass(Registry); 37de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar initializeConstantHoistingLegacyPassPass(Registry); 381a3d23362168ae6d8e07efd547a92cc36738a789Owen Anderson initializeConstantPropagationPass(Registry); 391a3d23362168ae6d8e07efd547a92cc36738a789Owen Anderson initializeCorrelatedValuePropagationPass(Registry); 40de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar initializeDCELegacyPassPass(Registry); 411a3d23362168ae6d8e07efd547a92cc36738a789Owen Anderson initializeDeadInstEliminationPass(Registry); 4236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines initializeScalarizerPass(Registry); 43de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar initializeDSELegacyPassPass(Registry); 44de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar initializeGuardWideningLegacyPassPass(Registry); 45de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar initializeGVNLegacyPassPass(Registry); 46ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines initializeEarlyCSELegacyPassPass(Registry); 4737ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines initializeFlattenCFGPassPass(Registry); 48ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines initializeInductiveRangeCheckEliminationPass(Registry); 49de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar initializeIndVarSimplifyLegacyPassPass(Registry); 501a3d23362168ae6d8e07efd547a92cc36738a789Owen Anderson initializeJumpThreadingPass(Registry); 51de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar initializeLegacyLICMPassPass(Registry); 52de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar initializeLoopDataPrefetchPass(Registry); 53de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar initializeLoopDeletionLegacyPassPass(Registry); 54de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar initializeLoopAccessLegacyAnalysisPass(Registry); 55832f61117d69019376c4aabedd4de3831279e288Cameron Zwarich initializeLoopInstSimplifyPass(Registry); 564c5e43da7792f75567b693105cc53e3f1992ad98Pirama Arumuga Nainar initializeLoopInterchangePass(Registry); 57de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar initializeLoopRotateLegacyPassPass(Registry); 581a3d23362168ae6d8e07efd547a92cc36738a789Owen Anderson initializeLoopStrengthReducePass(Registry); 59bebe48dbfe00078329341945bfb11f778ace6d12Hal Finkel initializeLoopRerollPass(Registry); 601a3d23362168ae6d8e07efd547a92cc36738a789Owen Anderson initializeLoopUnrollPass(Registry); 611a3d23362168ae6d8e07efd547a92cc36738a789Owen Anderson initializeLoopUnswitchPass(Registry); 62de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar initializeLoopVersioningLICMPass(Registry); 63de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar initializeLoopIdiomRecognizeLegacyPassPass(Registry); 64de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar initializeLowerAtomicLegacyPassPass(Registry); 659da9934e27dfb48de77b80a3e20ed2d869b52024Jakub Staszak initializeLowerExpectIntrinsicPass(Registry); 66de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar initializeLowerGuardIntrinsicPass(Registry); 67de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar initializeMemCpyOptLegacyPassPass(Registry); 68de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar initializeMergedLoadStoreMotionLegacyPassPass(Registry); 690c7f116bb6950ef819323d855415b2f2b0aad987Pirama Arumuga Nainar initializeNaryReassociatePass(Registry); 70de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar initializePartiallyInlineLibCallsLegacyPassPass(Registry); 71de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar initializeReassociateLegacyPassPass(Registry); 721a3d23362168ae6d8e07efd547a92cc36738a789Owen Anderson initializeRegToMemPass(Registry); 73ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines initializeRewriteStatepointsForGCPass(Registry); 74de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar initializeSCCPLegacyPassPass(Registry); 75de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar initializeIPSCCPLegacyPassPass(Registry); 76f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar initializeSROALegacyPassPass(Registry); 7701d7203ef8316fdd71c3cec59f8e68fb869e0dbfTom Stellard initializeCFGSimplifyPassPass(Registry); 78ad966ea7a81a538425d5319f6d8568e460639e54Matt Arsenault initializeStructurizeCFGPass(Registry); 79de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar initializeSinkingLegacyPassPass(Registry); 801a3d23362168ae6d8e07efd547a92cc36738a789Owen Anderson initializeTailCallElimPass(Registry); 81dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines initializeSeparateConstOffsetFromGEPPass(Registry); 826948897e478cbd66626159776a8017b3c18579b9Pirama Arumuga Nainar initializeSpeculativeExecutionPass(Registry); 83ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines initializeStraightLineStrengthReducePass(Registry); 84c6a4f5e819217e1e12c458aed8e7b122e23a3a58Stephen Hines initializeLoadCombinePass(Registry); 85ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines initializePlaceBackedgeSafepointsImplPass(Registry); 86ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines initializePlaceSafepointsPass(Registry); 87de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar initializeFloat2IntLegacyPassPass(Registry); 886948897e478cbd66626159776a8017b3c18579b9Pirama Arumuga Nainar initializeLoopDistributePass(Registry); 89f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar initializeLoopLoadEliminationPass(Registry); 90de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar initializeLoopSimplifyCFGLegacyPassPass(Registry); 91de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar initializeLoopVersioningPassPass(Registry); 921a3d23362168ae6d8e07efd547a92cc36738a789Owen Anderson} 931a3d23362168ae6d8e07efd547a92cc36738a789Owen Anderson 941a3d23362168ae6d8e07efd547a92cc36738a789Owen Andersonvoid LLVMInitializeScalarOpts(LLVMPassRegistryRef R) { 951a3d23362168ae6d8e07efd547a92cc36738a789Owen Anderson initializeScalarOpts(*unwrap(R)); 961a3d23362168ae6d8e07efd547a92cc36738a789Owen Anderson} 971a3d23362168ae6d8e07efd547a92cc36738a789Owen Anderson 9857c03831ccaabd619d1d7eb164375e7e3027031dChris Lattnervoid LLVMAddAggressiveDCEPass(LLVMPassManagerRef PM) { 9957c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner unwrap(PM)->add(createAggressiveDCEPass()); 10057c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner} 10157c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner 102ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesvoid LLVMAddBitTrackingDCEPass(LLVMPassManagerRef PM) { 103ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines unwrap(PM)->add(createBitTrackingDCEPass()); 104ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines} 105ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines 10637ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hinesvoid LLVMAddAlignmentFromAssumptionsPass(LLVMPassManagerRef PM) { 10737ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines unwrap(PM)->add(createAlignmentFromAssumptionsPass()); 10837ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines} 10937ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines 11057c03831ccaabd619d1d7eb164375e7e3027031dChris Lattnervoid LLVMAddCFGSimplificationPass(LLVMPassManagerRef PM) { 11157c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner unwrap(PM)->add(createCFGSimplificationPass()); 11257c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner} 11357c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner 11457c03831ccaabd619d1d7eb164375e7e3027031dChris Lattnervoid LLVMAddDeadStoreEliminationPass(LLVMPassManagerRef PM) { 11557c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner unwrap(PM)->add(createDeadStoreEliminationPass()); 11657c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner} 11757c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner 11836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesvoid LLVMAddScalarizerPass(LLVMPassManagerRef PM) { 11936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines unwrap(PM)->add(createScalarizerPass()); 12036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines} 12136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 12257c03831ccaabd619d1d7eb164375e7e3027031dChris Lattnervoid LLVMAddGVNPass(LLVMPassManagerRef PM) { 12357c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner unwrap(PM)->add(createGVNPass()); 12457c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner} 12557c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner 12637ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hinesvoid LLVMAddMergedLoadStoreMotionPass(LLVMPassManagerRef PM) { 12737ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines unwrap(PM)->add(createMergedLoadStoreMotionPass()); 12837ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines} 12937ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines 13057c03831ccaabd619d1d7eb164375e7e3027031dChris Lattnervoid LLVMAddIndVarSimplifyPass(LLVMPassManagerRef PM) { 13157c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner unwrap(PM)->add(createIndVarSimplifyPass()); 13241ba1546eb46030e9994ee14f8052a1981ae2c54Gordon Henriksen} 13341ba1546eb46030e9994ee14f8052a1981ae2c54Gordon Henriksen 13441ba1546eb46030e9994ee14f8052a1981ae2c54Gordon Henriksenvoid LLVMAddInstructionCombiningPass(LLVMPassManagerRef PM) { 13541ba1546eb46030e9994ee14f8052a1981ae2c54Gordon Henriksen unwrap(PM)->add(createInstructionCombiningPass()); 13641ba1546eb46030e9994ee14f8052a1981ae2c54Gordon Henriksen} 13741ba1546eb46030e9994ee14f8052a1981ae2c54Gordon Henriksen 13857c03831ccaabd619d1d7eb164375e7e3027031dChris Lattnervoid LLVMAddJumpThreadingPass(LLVMPassManagerRef PM) { 13957c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner unwrap(PM)->add(createJumpThreadingPass()); 14069cf031ee33fc564c3888694cb1cd8ab5dae9fd2Gordon Henriksen} 14169cf031ee33fc564c3888694cb1cd8ab5dae9fd2Gordon Henriksen 14257c03831ccaabd619d1d7eb164375e7e3027031dChris Lattnervoid LLVMAddLICMPass(LLVMPassManagerRef PM) { 14357c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner unwrap(PM)->add(createLICMPass()); 14457c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner} 14557c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner 14657c03831ccaabd619d1d7eb164375e7e3027031dChris Lattnervoid LLVMAddLoopDeletionPass(LLVMPassManagerRef PM) { 14757c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner unwrap(PM)->add(createLoopDeletionPass()); 14857c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner} 14957c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner 15045e1a53efd40a594fa8bb59aee75bb0984770d29Rafael Espindolavoid LLVMAddLoopIdiomPass(LLVMPassManagerRef PM) { 15145e1a53efd40a594fa8bb59aee75bb0984770d29Rafael Espindola unwrap(PM)->add(createLoopIdiomPass()); 15245e1a53efd40a594fa8bb59aee75bb0984770d29Rafael Espindola} 15345e1a53efd40a594fa8bb59aee75bb0984770d29Rafael Espindola 15457c03831ccaabd619d1d7eb164375e7e3027031dChris Lattnervoid LLVMAddLoopRotatePass(LLVMPassManagerRef PM) { 15557c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner unwrap(PM)->add(createLoopRotatePass()); 15657c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner} 15757c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner 158bebe48dbfe00078329341945bfb11f778ace6d12Hal Finkelvoid LLVMAddLoopRerollPass(LLVMPassManagerRef PM) { 159bebe48dbfe00078329341945bfb11f778ace6d12Hal Finkel unwrap(PM)->add(createLoopRerollPass()); 160bebe48dbfe00078329341945bfb11f778ace6d12Hal Finkel} 161bebe48dbfe00078329341945bfb11f778ace6d12Hal Finkel 162de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid LLVMAddLoopSimplifyCFGPass(LLVMPassManagerRef PM) { 163de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar unwrap(PM)->add(createLoopSimplifyCFGPass()); 164de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 165de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 16657c03831ccaabd619d1d7eb164375e7e3027031dChris Lattnervoid LLVMAddLoopUnrollPass(LLVMPassManagerRef PM) { 16757c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner unwrap(PM)->add(createLoopUnrollPass()); 16857c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner} 16957c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner 17057c03831ccaabd619d1d7eb164375e7e3027031dChris Lattnervoid LLVMAddLoopUnswitchPass(LLVMPassManagerRef PM) { 17157c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner unwrap(PM)->add(createLoopUnswitchPass()); 17257c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner} 17357c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner 17457c03831ccaabd619d1d7eb164375e7e3027031dChris Lattnervoid LLVMAddMemCpyOptPass(LLVMPassManagerRef PM) { 17557c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner unwrap(PM)->add(createMemCpyOptPass()); 17657c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner} 17757c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner 178a8a7099c1849fcbb4a68642a292fd0250aa46505Richard Sandifordvoid LLVMAddPartiallyInlineLibCallsPass(LLVMPassManagerRef PM) { 179a8a7099c1849fcbb4a68642a292fd0250aa46505Richard Sandiford unwrap(PM)->add(createPartiallyInlineLibCallsPass()); 180a8a7099c1849fcbb4a68642a292fd0250aa46505Richard Sandiford} 181a8a7099c1849fcbb4a68642a292fd0250aa46505Richard Sandiford 18237ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hinesvoid LLVMAddLowerSwitchPass(LLVMPassManagerRef PM) { 18337ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines unwrap(PM)->add(createLowerSwitchPass()); 18437ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines} 18537ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines 18657c03831ccaabd619d1d7eb164375e7e3027031dChris Lattnervoid LLVMAddPromoteMemoryToRegisterPass(LLVMPassManagerRef PM) { 18757c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner unwrap(PM)->add(createPromoteMemoryToRegisterPass()); 18869cf031ee33fc564c3888694cb1cd8ab5dae9fd2Gordon Henriksen} 18969cf031ee33fc564c3888694cb1cd8ab5dae9fd2Gordon Henriksen 19041ba1546eb46030e9994ee14f8052a1981ae2c54Gordon Henriksenvoid LLVMAddReassociatePass(LLVMPassManagerRef PM) { 19141ba1546eb46030e9994ee14f8052a1981ae2c54Gordon Henriksen unwrap(PM)->add(createReassociatePass()); 19241ba1546eb46030e9994ee14f8052a1981ae2c54Gordon Henriksen} 19341ba1546eb46030e9994ee14f8052a1981ae2c54Gordon Henriksen 19457c03831ccaabd619d1d7eb164375e7e3027031dChris Lattnervoid LLVMAddSCCPPass(LLVMPassManagerRef PM) { 19557c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner unwrap(PM)->add(createSCCPPass()); 19641ba1546eb46030e9994ee14f8052a1981ae2c54Gordon Henriksen} 19741ba1546eb46030e9994ee14f8052a1981ae2c54Gordon Henriksen 19857c03831ccaabd619d1d7eb164375e7e3027031dChris Lattnervoid LLVMAddScalarReplAggregatesPass(LLVMPassManagerRef PM) { 199de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar unwrap(PM)->add(createSROAPass()); 20057c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner} 20157c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner 20245e1a53efd40a594fa8bb59aee75bb0984770d29Rafael Espindolavoid LLVMAddScalarReplAggregatesPassSSA(LLVMPassManagerRef PM) { 203de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar unwrap(PM)->add(createSROAPass()); 20445e1a53efd40a594fa8bb59aee75bb0984770d29Rafael Espindola} 20545e1a53efd40a594fa8bb59aee75bb0984770d29Rafael Espindola 20647a53a6e4ca2e49284c800e9b9e0172e7df7217cNate Begemanvoid LLVMAddScalarReplAggregatesPassWithThreshold(LLVMPassManagerRef PM, 20747a53a6e4ca2e49284c800e9b9e0172e7df7217cNate Begeman int Threshold) { 208de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar unwrap(PM)->add(createSROAPass()); 20947a53a6e4ca2e49284c800e9b9e0172e7df7217cNate Begeman} 21047a53a6e4ca2e49284c800e9b9e0172e7df7217cNate Begeman 21157c03831ccaabd619d1d7eb164375e7e3027031dChris Lattnervoid LLVMAddSimplifyLibCallsPass(LLVMPassManagerRef PM) { 212be87bce32bc9af9bc5918a6e08806b61e3088165Meador Inge // NOTE: The simplify-libcalls pass has been removed. 21357c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner} 21457c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner 21557c03831ccaabd619d1d7eb164375e7e3027031dChris Lattnervoid LLVMAddTailCallEliminationPass(LLVMPassManagerRef PM) { 21657c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner unwrap(PM)->add(createTailCallEliminationPass()); 21757c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner} 21857c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner 21957c03831ccaabd619d1d7eb164375e7e3027031dChris Lattnervoid LLVMAddConstantPropagationPass(LLVMPassManagerRef PM) { 22057c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner unwrap(PM)->add(createConstantPropagationPass()); 22157c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner} 22257c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner 22357c03831ccaabd619d1d7eb164375e7e3027031dChris Lattnervoid LLVMAddDemoteMemoryToRegisterPass(LLVMPassManagerRef PM) { 22457c03831ccaabd619d1d7eb164375e7e3027031dChris Lattner unwrap(PM)->add(createDemoteRegisterToMemoryPass()); 22541ba1546eb46030e9994ee14f8052a1981ae2c54Gordon Henriksen} 22647a53a6e4ca2e49284c800e9b9e0172e7df7217cNate Begeman 22747a53a6e4ca2e49284c800e9b9e0172e7df7217cNate Begemanvoid LLVMAddVerifierPass(LLVMPassManagerRef PM) { 22847a53a6e4ca2e49284c800e9b9e0172e7df7217cNate Begeman unwrap(PM)->add(createVerifierPass()); 22947a53a6e4ca2e49284c800e9b9e0172e7df7217cNate Begeman} 23045e1a53efd40a594fa8bb59aee75bb0984770d29Rafael Espindola 23145e1a53efd40a594fa8bb59aee75bb0984770d29Rafael Espindolavoid LLVMAddCorrelatedValuePropagationPass(LLVMPassManagerRef PM) { 23245e1a53efd40a594fa8bb59aee75bb0984770d29Rafael Espindola unwrap(PM)->add(createCorrelatedValuePropagationPass()); 23345e1a53efd40a594fa8bb59aee75bb0984770d29Rafael Espindola} 23445e1a53efd40a594fa8bb59aee75bb0984770d29Rafael Espindola 23545e1a53efd40a594fa8bb59aee75bb0984770d29Rafael Espindolavoid LLVMAddEarlyCSEPass(LLVMPassManagerRef PM) { 23645e1a53efd40a594fa8bb59aee75bb0984770d29Rafael Espindola unwrap(PM)->add(createEarlyCSEPass()); 23745e1a53efd40a594fa8bb59aee75bb0984770d29Rafael Espindola} 2380d9874b48d747298dcea7e4e6385b511c04a7842Rafael Espindola 2390d9874b48d747298dcea7e4e6385b511c04a7842Rafael Espindolavoid LLVMAddTypeBasedAliasAnalysisPass(LLVMPassManagerRef PM) { 240f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar unwrap(PM)->add(createTypeBasedAAWrapperPass()); 2410d9874b48d747298dcea7e4e6385b511c04a7842Rafael Espindola} 2420d9874b48d747298dcea7e4e6385b511c04a7842Rafael Espindola 24337ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hinesvoid LLVMAddScopedNoAliasAAPass(LLVMPassManagerRef PM) { 244f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar unwrap(PM)->add(createScopedNoAliasAAWrapperPass()); 24537ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines} 24637ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines 2470d9874b48d747298dcea7e4e6385b511c04a7842Rafael Espindolavoid LLVMAddBasicAliasAnalysisPass(LLVMPassManagerRef PM) { 248f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar unwrap(PM)->add(createBasicAAWrapperPass()); 2490d9874b48d747298dcea7e4e6385b511c04a7842Rafael Espindola} 2500335a14ae771ce1793fb5401acfeb2fb59fc1c6fRafael Espindola 2510335a14ae771ce1793fb5401acfeb2fb59fc1c6fRafael Espindolavoid LLVMAddLowerExpectIntrinsicPass(LLVMPassManagerRef PM) { 2520335a14ae771ce1793fb5401acfeb2fb59fc1c6fRafael Espindola unwrap(PM)->add(createLowerExpectIntrinsicPass()); 2530335a14ae771ce1793fb5401acfeb2fb59fc1c6fRafael Espindola} 254