1//===- llvm/Transforms/IPO.h - Interprocedural Transformations --*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8//
9// This header file defines prototypes for accessor functions that expose passes
10// in the IPO transformations library.
11//
12//===----------------------------------------------------------------------===//
13
14#ifndef LLVM_TRANSFORMS_IPO_H
15#define LLVM_TRANSFORMS_IPO_H
16
17#include "llvm/Support/Compiler.h"
18
19namespace llvm {
20
21class ModulePass;
22class Pass;
23class raw_ostream;
24
25//===----------------------------------------------------------------------===//
26/// createDeadArgEliminationPass - This pass removes arguments from functions
27/// which are not used by the body of the function.
28///
29LLVM_ABI ModulePass *createDeadArgEliminationPass();
30
31//===----------------------------------------------------------------------===//
32/// createBarrierNoopPass - This pass is purely a module pass barrier in a pass
33/// manager.
34LLVM_ABI ModulePass *createBarrierNoopPass();
35
36/// What to do with the summary when running passes that operate on it.
37enum class PassSummaryAction {
38 None, ///< Do nothing.
39 Import, ///< Import information from summary.
40 Export, ///< Export information to summary.
41};
42
43} // End llvm namespace
44
45#endif
46