Coverage Report

Created: 2019-07-24 05:18

/Users/buildslave/jenkins/workspace/clang-stage2-coverage-R/llvm/lib/Target/Mips/MipsFrameLowering.h
Line
Count
Source
1
//===-- MipsFrameLowering.h - Define frame lowering for Mips ----*- 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
//
10
//
11
//===----------------------------------------------------------------------===//
12
13
#ifndef LLVM_LIB_TARGET_MIPS_MIPSFRAMELOWERING_H
14
#define LLVM_LIB_TARGET_MIPS_MIPSFRAMELOWERING_H
15
16
#include "Mips.h"
17
#include "llvm/CodeGen/TargetFrameLowering.h"
18
19
namespace llvm {
20
  class MipsSubtarget;
21
22
class MipsFrameLowering : public TargetFrameLowering {
23
protected:
24
  const MipsSubtarget &STI;
25
26
public:
27
  explicit MipsFrameLowering(const MipsSubtarget &sti, unsigned Alignment)
28
11.3k
    : TargetFrameLowering(StackGrowsDown, Alignment, 0, Alignment), STI(sti) {}
29
30
  static const MipsFrameLowering *create(const MipsSubtarget &ST);
31
32
  bool hasFP(const MachineFunction &MF) const override;
33
34
  bool hasBP(const MachineFunction &MF) const;
35
36
450
  bool isFPCloseToIncomingSP() const override { return false; }
37
38
12.3k
  bool enableShrinkWrapping(const MachineFunction &MF) const override {
39
12.3k
    return true;
40
12.3k
  }
41
42
  MachineBasicBlock::iterator
43
  eliminateCallFramePseudoInstr(MachineFunction &MF,
44
                                MachineBasicBlock &MBB,
45
                                MachineBasicBlock::iterator I) const override;
46
47
protected:
48
  uint64_t estimateStackSize(const MachineFunction &MF) const;
49
};
50
51
/// Create MipsFrameLowering objects.
52
const MipsFrameLowering *createMips16FrameLowering(const MipsSubtarget &ST);
53
const MipsFrameLowering *createMipsSEFrameLowering(const MipsSubtarget &ST);
54
55
} // End llvm namespace
56
57
#endif