#ifndef LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYMACHINEFUNCTIONINFO_H
#define LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYMACHINEFUNCTIONINFO_H
#include "MCTargetDesc/WebAssemblyMCTargetDesc.h"
#include "llvm/CodeGen/MIRYamlMapping.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/MC/MCSymbolWasm.h"
namespace llvm {
class WebAssemblyTargetLowering;
struct WasmEHFuncInfo;
namespace yaml {
struct WebAssemblyFunctionInfo;
}
class WebAssemblyFunctionInfo final : public MachineFunctionInfo { … };
void computeLegalValueVTs(const WebAssemblyTargetLowering &TLI,
LLVMContext &Ctx, const DataLayout &DL, Type *Ty,
SmallVectorImpl<MVT> &ValueVTs);
void computeLegalValueVTs(const Function &F, const TargetMachine &TM, Type *Ty,
SmallVectorImpl<MVT> &ValueVTs);
void computeSignatureVTs(const FunctionType *Ty, const Function *TargetFunc,
const Function &ContextFunc, const TargetMachine &TM,
SmallVectorImpl<MVT> &Params,
SmallVectorImpl<MVT> &Results);
void valTypesFromMVTs(ArrayRef<MVT> In, SmallVectorImpl<wasm::ValType> &Out);
wasm::WasmSignature *signatureFromMVTs(MCContext &Ctx,
const SmallVectorImpl<MVT> &Results,
const SmallVectorImpl<MVT> &Params);
namespace yaml {
BBNumberMap;
struct WebAssemblyFunctionInfo final : public yaml::MachineFunctionInfo { … };
template <> struct MappingTraits<WebAssemblyFunctionInfo> { … };
template <> struct CustomMappingTraits<BBNumberMap> { … };
}
}
#endif