WebAssembly.h revision 314564
1//===-- WebAssembly.h - Top-level interface for WebAssembly  ----*- C++ -*-===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9///
10/// \file
11/// \brief This file contains the entry points for global functions defined in
12/// the LLVM WebAssembly back-end.
13///
14//===----------------------------------------------------------------------===//
15
16#ifndef LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLY_H
17#define LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLY_H
18
19#include "llvm/PassRegistry.h"
20#include "llvm/Support/CodeGen.h"
21
22namespace llvm {
23
24class WebAssemblyTargetMachine;
25class ModulePass;
26class FunctionPass;
27
28// LLVM IR passes.
29ModulePass *createWebAssemblyLowerEmscriptenEHSjLj(bool DoEH, bool DoSjLj);
30void initializeWebAssemblyLowerEmscriptenEHSjLjPass(PassRegistry &);
31ModulePass *createWebAssemblyFixFunctionBitcasts();
32FunctionPass *createWebAssemblyOptimizeReturned();
33
34// ISel and immediate followup passes.
35FunctionPass *createWebAssemblyISelDag(WebAssemblyTargetMachine &TM,
36                                       CodeGenOpt::Level OptLevel);
37FunctionPass *createWebAssemblyArgumentMove();
38FunctionPass *createWebAssemblySetP2AlignOperands();
39
40// Late passes.
41FunctionPass *createWebAssemblyReplacePhysRegs();
42FunctionPass *createWebAssemblyPrepareForLiveIntervals();
43FunctionPass *createWebAssemblyOptimizeLiveIntervals();
44FunctionPass *createWebAssemblyStoreResults();
45FunctionPass *createWebAssemblyRegStackify();
46FunctionPass *createWebAssemblyRegColoring();
47FunctionPass *createWebAssemblyExplicitLocals();
48FunctionPass *createWebAssemblyFixIrreducibleControlFlow();
49FunctionPass *createWebAssemblyCFGStackify();
50FunctionPass *createWebAssemblyLowerBrUnless();
51FunctionPass *createWebAssemblyRegNumbering();
52FunctionPass *createWebAssemblyPeephole();
53FunctionPass *createWebAssemblyCallIndirectFixup();
54
55} // end namespace llvm
56
57#endif
58