//===- Pass.cpp - LLVM Pass Infrastructure Implementation -----------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
//
// This file implements the LLVM Pass infrastructure. It is primarily
// responsible with ensuring that passes are executed and batched together
// optimally.
//
//===----------------------------------------------------------------------===//
using namespace llvm;
//===----------------------------------------------------------------------===//
// Pass Implementation
//
// Force out-of-line virtual method.
// Force out-of-line virtual method.
;
Pass *
PassManagerType
static std::string
bool
bool
// dumpPassStructure - Implement the -debug-pass=Structure option
void
/// getPassName - Return a nice clean name for a pass. This usually
/// implemented in terms of the name that is registered by one of the
/// Registration templates, but can be overloaded directly.
StringRef
void
PassManagerType
void
void
void
void *
ImmutablePass *
PMDataManager *
void
// print - Print out the internal state of the pass. This is called by Analyze
// to print out the contents of an analysis. Otherwise it is not necessary to
// implement this method.
void
// dump - call print(cerr);
LLVM_DUMP_METHOD void
uint64_t
uint64_t
//===----------------------------------------------------------------------===//
// ImmutablePass Implementation
//
// Force out-of-line virtual method.
;
void
//===----------------------------------------------------------------------===//
// FunctionPass Implementation
//
Pass *
PassManagerType
static std::string
bool
const PassInfo *
const PassInfo *
Pass *
//===----------------------------------------------------------------------===//
// Analysis Group Implementation Code
//===----------------------------------------------------------------------===//
// RegisterAGBase implementation
:
//===----------------------------------------------------------------------===//
// PassRegistrationListener implementation
//
// enumeratePasses - Iterate over the registered passes, calling the
// passEnumerate callback on each PassInfo object.
void
: cl::parser<const PassInfo *>
// This only gets called during static destruction, in which case the
// PassRegistry will have already been destroyed by llvm_shutdown(). So
// attempting to remove the registration listener is an error.
;
//===----------------------------------------------------------------------===//
// AnalysisUsage Class Implementation
//
// end anonymous namespace
// setPreservesCFG - This function should be called to by the pass, iff they do
// not:
//
// 1. Add or remove basic blocks from the function
// 2. Modify terminator instructions in any way.
//
// This function annotates the AnalysisUsage info object to say that analyses
// that only depend on the CFG are preserved by this pass.
void
AnalysisUsage &
AnalysisUsage &
AnalysisUsage &
AnalysisUsage &