xref: /freebsd/contrib/llvm-project/llvm/include/llvm/Transforms/IPO/StripSymbols.h (revision 700637cbb5e582861067a11aaca4d053546871d2)
1 //===- StripSymbols.h - Strip symbols and debug info from a module --------===//
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 // The StripSymbols transformation implements code stripping. Specifically, it
10 // can delete:
11 //
12 //   * names for virtual registers
13 //   * symbols for internal globals and functions
14 //   * debug information
15 //
16 // Note that this transformation makes code much less readable, so it should
17 // only be used in situations where the 'strip' utility would be used, such as
18 // reducing code size or making it harder to reverse engineer code.
19 //
20 //===----------------------------------------------------------------------===//
21 
22 #ifndef LLVM_TRANSFORMS_IPO_STRIPSYMBOLS_H
23 #define LLVM_TRANSFORMS_IPO_STRIPSYMBOLS_H
24 
25 #include "llvm/IR/PassManager.h"
26 #include "llvm/Support/Compiler.h"
27 
28 namespace llvm {
29 
30 struct StripSymbolsPass : PassInfoMixin<StripSymbolsPass> {
31   LLVM_ABI PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM);
32 };
33 
34 struct StripNonDebugSymbolsPass : PassInfoMixin<StripNonDebugSymbolsPass> {
35   LLVM_ABI PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM);
36 };
37 
38 struct StripDebugDeclarePass : PassInfoMixin<StripDebugDeclarePass> {
39   LLVM_ABI PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM);
40 };
41 
42 struct StripDeadDebugInfoPass : PassInfoMixin<StripDeadDebugInfoPass> {
43   LLVM_ABI PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM);
44 };
45 
46 struct StripDeadCGProfilePass : PassInfoMixin<StripDeadCGProfilePass> {
47   LLVM_ABI PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM);
48 };
49 
50 } // end namespace llvm
51 
52 #endif // LLVM_TRANSFORMS_IPO_STRIPSYMBOLS_H
53