WebAssembly.h revision 344779
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/// 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); 30ModulePass *createWebAssemblyLowerGlobalDtors(); 31ModulePass *createWebAssemblyAddMissingPrototypes(); 32ModulePass *createWebAssemblyFixFunctionBitcasts(); 33FunctionPass *createWebAssemblyOptimizeReturned(); 34 35// ISel and immediate followup passes. 36FunctionPass *createWebAssemblyISelDag(WebAssemblyTargetMachine &TM, 37 CodeGenOpt::Level OptLevel); 38FunctionPass *createWebAssemblyArgumentMove(); 39FunctionPass *createWebAssemblySetP2AlignOperands(); 40 41// Late passes. 42FunctionPass *createWebAssemblyEHRestoreStackPointer(); 43FunctionPass *createWebAssemblyReplacePhysRegs(); 44FunctionPass *createWebAssemblyPrepareForLiveIntervals(); 45FunctionPass *createWebAssemblyOptimizeLiveIntervals(); 46FunctionPass *createWebAssemblyMemIntrinsicResults(); 47FunctionPass *createWebAssemblyRegStackify(); 48FunctionPass *createWebAssemblyRegColoring(); 49FunctionPass *createWebAssemblyExplicitLocals(); 50FunctionPass *createWebAssemblyFixIrreducibleControlFlow(); 51FunctionPass *createWebAssemblyLateEHPrepare(); 52FunctionPass *createWebAssemblyCFGSort(); 53FunctionPass *createWebAssemblyCFGStackify(); 54FunctionPass *createWebAssemblyLowerBrUnless(); 55FunctionPass *createWebAssemblyRegNumbering(); 56FunctionPass *createWebAssemblyPeephole(); 57FunctionPass *createWebAssemblyCallIndirectFixup(); 58 59// PassRegistry initialization declarations. 60void initializeWebAssemblyAddMissingPrototypesPass(PassRegistry &); 61void initializeWebAssemblyLowerEmscriptenEHSjLjPass(PassRegistry &); 62void initializeLowerGlobalDtorsPass(PassRegistry &); 63void initializeFixFunctionBitcastsPass(PassRegistry &); 64void initializeOptimizeReturnedPass(PassRegistry &); 65void initializeWebAssemblyArgumentMovePass(PassRegistry &); 66void initializeWebAssemblySetP2AlignOperandsPass(PassRegistry &); 67void initializeWebAssemblyEHRestoreStackPointerPass(PassRegistry &); 68void initializeWebAssemblyReplacePhysRegsPass(PassRegistry &); 69void initializeWebAssemblyPrepareForLiveIntervalsPass(PassRegistry &); 70void initializeWebAssemblyOptimizeLiveIntervalsPass(PassRegistry &); 71void initializeWebAssemblyMemIntrinsicResultsPass(PassRegistry &); 72void initializeWebAssemblyRegStackifyPass(PassRegistry &); 73void initializeWebAssemblyRegColoringPass(PassRegistry &); 74void initializeWebAssemblyExplicitLocalsPass(PassRegistry &); 75void initializeWebAssemblyFixIrreducibleControlFlowPass(PassRegistry &); 76void initializeWebAssemblyLateEHPreparePass(PassRegistry &); 77void initializeWebAssemblyExceptionInfoPass(PassRegistry &); 78void initializeWebAssemblyCFGSortPass(PassRegistry &); 79void initializeWebAssemblyCFGStackifyPass(PassRegistry &); 80void initializeWebAssemblyLowerBrUnlessPass(PassRegistry &); 81void initializeWebAssemblyRegNumberingPass(PassRegistry &); 82void initializeWebAssemblyPeepholePass(PassRegistry &); 83void initializeWebAssemblyCallIndirectFixupPass(PassRegistry &); 84 85} // end namespace llvm 86 87#endif 88