10b57cec5SDimitry Andric //===-- Utils.cpp - TransformUtils Infrastructure -------------------------===//
20b57cec5SDimitry Andric //
30b57cec5SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
40b57cec5SDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
50b57cec5SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
60b57cec5SDimitry Andric //
70b57cec5SDimitry Andric //===----------------------------------------------------------------------===//
80b57cec5SDimitry Andric //
90b57cec5SDimitry Andric // This file defines the common initialization infrastructure for the
100b57cec5SDimitry Andric // TransformUtils library.
110b57cec5SDimitry Andric //
120b57cec5SDimitry Andric //===----------------------------------------------------------------------===//
130b57cec5SDimitry Andric 
140b57cec5SDimitry Andric #include "llvm/Transforms/Utils.h"
150b57cec5SDimitry Andric #include "llvm-c/Initialization.h"
160b57cec5SDimitry Andric #include "llvm-c/Transforms/Utils.h"
170b57cec5SDimitry Andric #include "llvm/IR/LegacyPassManager.h"
180b57cec5SDimitry Andric #include "llvm/InitializePasses.h"
190b57cec5SDimitry Andric #include "llvm/PassRegistry.h"
200b57cec5SDimitry Andric 
210b57cec5SDimitry Andric using namespace llvm;
220b57cec5SDimitry Andric 
230b57cec5SDimitry Andric /// initializeTransformUtils - Initialize all passes in the TransformUtils
240b57cec5SDimitry Andric /// library.
initializeTransformUtils(PassRegistry & Registry)250b57cec5SDimitry Andric void llvm::initializeTransformUtils(PassRegistry &Registry) {
260b57cec5SDimitry Andric   initializeAddDiscriminatorsLegacyPassPass(Registry);
275ffd83dbSDimitry Andric   initializeAssumeSimplifyPassLegacyPassPass(Registry);
285ffd83dbSDimitry Andric   initializeAssumeBuilderPassLegacyPassPass(Registry);
290b57cec5SDimitry Andric   initializeBreakCriticalEdgesPass(Registry);
300b57cec5SDimitry Andric   initializeCanonicalizeAliasesLegacyPassPass(Registry);
315ffd83dbSDimitry Andric   initializeCanonicalizeFreezeInLoopsPass(Registry);
320b57cec5SDimitry Andric   initializeInstNamerPass(Registry);
330b57cec5SDimitry Andric   initializeLCSSAWrapperPassPass(Registry);
340b57cec5SDimitry Andric   initializeLibCallsShrinkWrapLegacyPassPass(Registry);
350b57cec5SDimitry Andric   initializeLoopSimplifyPass(Registry);
360b57cec5SDimitry Andric   initializeLowerInvokeLegacyPassPass(Registry);
37*af732203SDimitry Andric   initializeLowerSwitchLegacyPassPass(Registry);
380b57cec5SDimitry Andric   initializeNameAnonGlobalLegacyPassPass(Registry);
390b57cec5SDimitry Andric   initializePromoteLegacyPassPass(Registry);
40*af732203SDimitry Andric   initializeStripNonLineTableDebugLegacyPassPass(Registry);
41*af732203SDimitry Andric   initializeUnifyFunctionExitNodesLegacyPassPass(Registry);
420b57cec5SDimitry Andric   initializeMetaRenamerPass(Registry);
43*af732203SDimitry Andric   initializeStripGCRelocatesLegacyPass(Registry);
440b57cec5SDimitry Andric   initializePredicateInfoPrinterLegacyPassPass(Registry);
45480093f4SDimitry Andric   initializeInjectTLIMappingsLegacyPass(Registry);
465ffd83dbSDimitry Andric   initializeFixIrreduciblePass(Registry);
47*af732203SDimitry Andric   initializeUnifyLoopExitsLegacyPassPass(Registry);
480b57cec5SDimitry Andric }
490b57cec5SDimitry Andric 
500b57cec5SDimitry Andric /// LLVMInitializeTransformUtils - C binding for initializeTransformUtilsPasses.
LLVMInitializeTransformUtils(LLVMPassRegistryRef R)510b57cec5SDimitry Andric void LLVMInitializeTransformUtils(LLVMPassRegistryRef R) {
520b57cec5SDimitry Andric   initializeTransformUtils(*unwrap(R));
530b57cec5SDimitry Andric }
540b57cec5SDimitry Andric 
LLVMAddLowerSwitchPass(LLVMPassManagerRef PM)550b57cec5SDimitry Andric void LLVMAddLowerSwitchPass(LLVMPassManagerRef PM) {
560b57cec5SDimitry Andric   unwrap(PM)->add(createLowerSwitchPass());
570b57cec5SDimitry Andric }
580b57cec5SDimitry Andric 
LLVMAddPromoteMemoryToRegisterPass(LLVMPassManagerRef PM)590b57cec5SDimitry Andric void LLVMAddPromoteMemoryToRegisterPass(LLVMPassManagerRef PM) {
600b57cec5SDimitry Andric   unwrap(PM)->add(createPromoteMemoryToRegisterPass());
610b57cec5SDimitry Andric }
620b57cec5SDimitry Andric 
LLVMAddAddDiscriminatorsPass(LLVMPassManagerRef PM)630b57cec5SDimitry Andric void LLVMAddAddDiscriminatorsPass(LLVMPassManagerRef PM) {
640b57cec5SDimitry Andric   unwrap(PM)->add(createAddDiscriminatorsPass());
650b57cec5SDimitry Andric }
66