Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
14 pmbaty 1
//===-- llvm/CodeGen/MachineModuleInfo.h ------------------------*- 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
#ifndef LLVM_CODEGEN_MACHINEMODULESLOTTRACKER_H
10
#define LLVM_CODEGEN_MACHINEMODULESLOTTRACKER_H
11
 
12
#include "llvm/IR/ModuleSlotTracker.h"
13
 
14
namespace llvm {
15
 
16
class AbstractSlotTrackerStorage;
17
class Function;
18
class MachineModuleInfo;
19
class MachineFunction;
20
class Module;
21
 
22
class MachineModuleSlotTracker : public ModuleSlotTracker {
23
  const Function &TheFunction;
24
  const MachineModuleInfo &TheMMI;
25
  unsigned MDNStartSlot = 0, MDNEndSlot = 0;
26
 
27
  void processMachineFunctionMetadata(AbstractSlotTrackerStorage *AST,
28
                                      const MachineFunction &MF);
29
  void processMachineModule(AbstractSlotTrackerStorage *AST, const Module *M,
30
                            bool ShouldInitializeAllMetadata);
31
  void processMachineFunction(AbstractSlotTrackerStorage *AST,
32
                              const Function *F,
33
                              bool ShouldInitializeAllMetadata);
34
 
35
public:
36
  MachineModuleSlotTracker(const MachineFunction *MF,
37
                           bool ShouldInitializeAllMetadata = true);
38
  ~MachineModuleSlotTracker();
39
 
40
  void collectMachineMDNodes(MachineMDNodeListType &L) const;
41
};
42
 
43
} // namespace llvm
44
 
45
#endif // LLVM_CODEGEN_MACHINEMODULESLOTTRACKER_H