Coverage Report

Created: 2019-07-24 05:18

/Users/buildslave/jenkins/workspace/clang-stage2-coverage-R/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.h
Line
Count
Source
1
// WebAssemblyTargetMachine.h - Define TargetMachine for WebAssembly -*- 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
/// \file
10
/// This file declares the WebAssembly-specific subclass of
11
/// TargetMachine.
12
///
13
//===----------------------------------------------------------------------===//
14
15
#ifndef LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYTARGETMACHINE_H
16
#define LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYTARGETMACHINE_H
17
18
#include "WebAssemblySubtarget.h"
19
#include "llvm/Target/TargetMachine.h"
20
21
namespace llvm {
22
23
class WebAssemblyTargetMachine final : public LLVMTargetMachine {
24
  std::unique_ptr<TargetLoweringObjectFile> TLOF;
25
  mutable StringMap<std::unique_ptr<WebAssemblySubtarget>> SubtargetMap;
26
27
public:
28
  WebAssemblyTargetMachine(const Target &T, const Triple &TT, StringRef CPU,
29
                           StringRef FS, const TargetOptions &Options,
30
                           Optional<Reloc::Model> RM,
31
                           Optional<CodeModel::Model> CM, CodeGenOpt::Level OL,
32
                           bool JIT);
33
34
  ~WebAssemblyTargetMachine() override;
35
36
  const WebAssemblySubtarget *getSubtargetImpl(std::string CPU,
37
                                               std::string FS) const;
38
  const WebAssemblySubtarget *
39
  getSubtargetImpl(const Function &F) const override;
40
41
  // Pass Pipeline Configuration
42
  TargetPassConfig *createPassConfig(PassManagerBase &PM) override;
43
44
15.2k
  TargetLoweringObjectFile *getObjFileLowering() const override {
45
15.2k
    return TLOF.get();
46
15.2k
  }
47
48
  TargetTransformInfo getTargetTransformInfo(const Function &F) override;
49
50
4.45k
  bool usesPhysRegsForPEI() const override { return false; }
51
52
  yaml::MachineFunctionInfo *createDefaultFuncInfoYAML() const override;
53
  yaml::MachineFunctionInfo *
54
  convertFuncInfoToYAML(const MachineFunction &MF) const override;
55
  bool parseMachineFunctionInfo(const yaml::MachineFunctionInfo &,
56
                                PerFunctionMIParsingState &PFS,
57
                                SMDiagnostic &Error,
58
                                SMRange &SourceRange) const override;
59
};
60
61
} // end namespace llvm
62
63
#endif