diff options
| author | orivej <[email protected]> | 2022-02-10 16:44:49 +0300 | 
|---|---|---|
| committer | Daniil Cherednik <[email protected]> | 2022-02-10 16:44:49 +0300 | 
| commit | 718c552901d703c502ccbefdfc3c9028d608b947 (patch) | |
| tree | 46534a98bbefcd7b1f3faa5b52c138ab27db75b7 /contrib/libs/llvm12/include/llvm/CodeGen/MachineJumpTableInfo.h | |
| parent | e9656aae26e0358d5378e5b63dcac5c8dbe0e4d0 (diff) | |
Restoring authorship annotation for <[email protected]>. Commit 1 of 2.
Diffstat (limited to 'contrib/libs/llvm12/include/llvm/CodeGen/MachineJumpTableInfo.h')
| -rw-r--r-- | contrib/libs/llvm12/include/llvm/CodeGen/MachineJumpTableInfo.h | 300 | 
1 files changed, 150 insertions, 150 deletions
diff --git a/contrib/libs/llvm12/include/llvm/CodeGen/MachineJumpTableInfo.h b/contrib/libs/llvm12/include/llvm/CodeGen/MachineJumpTableInfo.h index 0b13ed48915..f718bd53ab4 100644 --- a/contrib/libs/llvm12/include/llvm/CodeGen/MachineJumpTableInfo.h +++ b/contrib/libs/llvm12/include/llvm/CodeGen/MachineJumpTableInfo.h @@ -1,153 +1,153 @@ -#pragma once - -#ifdef __GNUC__ -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" -#endif - -//===-- CodeGen/MachineJumpTableInfo.h - Abstract Jump Tables  --*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// -// -// The MachineJumpTableInfo class keeps track of jump tables referenced by -// lowered switch instructions in the MachineFunction. -// -// Instructions reference the address of these jump tables through the use of -// MO_JumpTableIndex values.  When emitting assembly or machine code, these -// virtual address references are converted to refer to the address of the -// function jump tables. -// -//===----------------------------------------------------------------------===// - -#ifndef LLVM_CODEGEN_MACHINEJUMPTABLEINFO_H -#define LLVM_CODEGEN_MACHINEJUMPTABLEINFO_H - -#include "llvm/Support/Printable.h" -#include <cassert> -#include <vector> - -namespace llvm { - -class MachineBasicBlock; -class DataLayout; -class raw_ostream; - -/// MachineJumpTableEntry - One jump table in the jump table info. -/// -struct MachineJumpTableEntry { -  /// MBBs - The vector of basic blocks from which to create the jump table. -  std::vector<MachineBasicBlock*> MBBs; - -  explicit MachineJumpTableEntry(const std::vector<MachineBasicBlock*> &M) -  : MBBs(M) {} -}; - -class MachineJumpTableInfo { -public: -  /// JTEntryKind - This enum indicates how each entry of the jump table is -  /// represented and emitted. -  enum JTEntryKind { -    /// EK_BlockAddress - Each entry is a plain address of block, e.g.: -    ///     .word LBB123 -    EK_BlockAddress, - -    /// EK_GPRel64BlockAddress - Each entry is an address of block, encoded -    /// with a relocation as gp-relative, e.g.: -    ///     .gpdword LBB123 -    EK_GPRel64BlockAddress, - -    /// EK_GPRel32BlockAddress - Each entry is an address of block, encoded -    /// with a relocation as gp-relative, e.g.: -    ///     .gprel32 LBB123 -    EK_GPRel32BlockAddress, - -    /// EK_LabelDifference32 - Each entry is the address of the block minus -    /// the address of the jump table.  This is used for PIC jump tables where -    /// gprel32 is not supported.  e.g.: -    ///      .word LBB123 - LJTI1_2 -    /// If the .set directive is supported, this is emitted as: -    ///      .set L4_5_set_123, LBB123 - LJTI1_2 -    ///      .word L4_5_set_123 -    EK_LabelDifference32, - -    /// EK_Inline - Jump table entries are emitted inline at their point of -    /// use. It is the responsibility of the target to emit the entries. -    EK_Inline, - -    /// EK_Custom32 - Each entry is a 32-bit value that is custom lowered by the -    /// TargetLowering::LowerCustomJumpTableEntry hook. -    EK_Custom32 -  }; -private: -  JTEntryKind EntryKind; -  std::vector<MachineJumpTableEntry> JumpTables; -public: -  explicit MachineJumpTableInfo(JTEntryKind Kind): EntryKind(Kind) {} - -  JTEntryKind getEntryKind() const { return EntryKind; } - -  /// getEntrySize - Return the size of each entry in the jump table. -  unsigned getEntrySize(const DataLayout &TD) const; -  /// getEntryAlignment - Return the alignment of each entry in the jump table. -  unsigned getEntryAlignment(const DataLayout &TD) const; - -  /// createJumpTableIndex - Create a new jump table. -  /// -  unsigned createJumpTableIndex(const std::vector<MachineBasicBlock*> &DestBBs); - -  /// isEmpty - Return true if there are no jump tables. -  /// -  bool isEmpty() const { return JumpTables.empty(); } - -  const std::vector<MachineJumpTableEntry> &getJumpTables() const { -    return JumpTables; -  } - -  /// RemoveJumpTable - Mark the specific index as being dead.  This will -  /// prevent it from being emitted. -  void RemoveJumpTable(unsigned Idx) { -    JumpTables[Idx].MBBs.clear(); -  } - +#pragma once  +  +#ifdef __GNUC__  +#pragma GCC diagnostic push  +#pragma GCC diagnostic ignored "-Wunused-parameter"  +#endif  +  +//===-- CodeGen/MachineJumpTableInfo.h - Abstract Jump Tables  --*- C++ -*-===//  +//  +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.  +// See https://llvm.org/LICENSE.txt for license information.  +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception  +//  +//===----------------------------------------------------------------------===//  +//  +// The MachineJumpTableInfo class keeps track of jump tables referenced by  +// lowered switch instructions in the MachineFunction.  +//  +// Instructions reference the address of these jump tables through the use of  +// MO_JumpTableIndex values.  When emitting assembly or machine code, these  +// virtual address references are converted to refer to the address of the  +// function jump tables.  +//  +//===----------------------------------------------------------------------===//  +  +#ifndef LLVM_CODEGEN_MACHINEJUMPTABLEINFO_H  +#define LLVM_CODEGEN_MACHINEJUMPTABLEINFO_H  +  +#include "llvm/Support/Printable.h"  +#include <cassert>  +#include <vector>  +  +namespace llvm {  +  +class MachineBasicBlock;  +class DataLayout;  +class raw_ostream;  +  +/// MachineJumpTableEntry - One jump table in the jump table info.  +///  +struct MachineJumpTableEntry {  +  /// MBBs - The vector of basic blocks from which to create the jump table.  +  std::vector<MachineBasicBlock*> MBBs;  +  +  explicit MachineJumpTableEntry(const std::vector<MachineBasicBlock*> &M)  +  : MBBs(M) {}  +};  +  +class MachineJumpTableInfo {  +public:  +  /// JTEntryKind - This enum indicates how each entry of the jump table is  +  /// represented and emitted.  +  enum JTEntryKind {  +    /// EK_BlockAddress - Each entry is a plain address of block, e.g.:  +    ///     .word LBB123  +    EK_BlockAddress,  +  +    /// EK_GPRel64BlockAddress - Each entry is an address of block, encoded  +    /// with a relocation as gp-relative, e.g.:  +    ///     .gpdword LBB123  +    EK_GPRel64BlockAddress,  +  +    /// EK_GPRel32BlockAddress - Each entry is an address of block, encoded  +    /// with a relocation as gp-relative, e.g.:  +    ///     .gprel32 LBB123  +    EK_GPRel32BlockAddress,  +  +    /// EK_LabelDifference32 - Each entry is the address of the block minus  +    /// the address of the jump table.  This is used for PIC jump tables where  +    /// gprel32 is not supported.  e.g.:  +    ///      .word LBB123 - LJTI1_2  +    /// If the .set directive is supported, this is emitted as:  +    ///      .set L4_5_set_123, LBB123 - LJTI1_2  +    ///      .word L4_5_set_123  +    EK_LabelDifference32,  +  +    /// EK_Inline - Jump table entries are emitted inline at their point of  +    /// use. It is the responsibility of the target to emit the entries.  +    EK_Inline,  +  +    /// EK_Custom32 - Each entry is a 32-bit value that is custom lowered by the  +    /// TargetLowering::LowerCustomJumpTableEntry hook.  +    EK_Custom32  +  };  +private:  +  JTEntryKind EntryKind;  +  std::vector<MachineJumpTableEntry> JumpTables;  +public:  +  explicit MachineJumpTableInfo(JTEntryKind Kind): EntryKind(Kind) {}  +  +  JTEntryKind getEntryKind() const { return EntryKind; }  +  +  /// getEntrySize - Return the size of each entry in the jump table.  +  unsigned getEntrySize(const DataLayout &TD) const;  +  /// getEntryAlignment - Return the alignment of each entry in the jump table.  +  unsigned getEntryAlignment(const DataLayout &TD) const;  +  +  /// createJumpTableIndex - Create a new jump table.  +  ///  +  unsigned createJumpTableIndex(const std::vector<MachineBasicBlock*> &DestBBs);  +  +  /// isEmpty - Return true if there are no jump tables.  +  ///  +  bool isEmpty() const { return JumpTables.empty(); }  +  +  const std::vector<MachineJumpTableEntry> &getJumpTables() const {  +    return JumpTables;  +  }  +  +  /// RemoveJumpTable - Mark the specific index as being dead.  This will  +  /// prevent it from being emitted.  +  void RemoveJumpTable(unsigned Idx) {  +    JumpTables[Idx].MBBs.clear();  +  }  +     /// RemoveMBBFromJumpTables - If MBB is present in any jump tables, remove it.    bool RemoveMBBFromJumpTables(MachineBasicBlock *MBB); -  /// ReplaceMBBInJumpTables - If Old is the target of any jump tables, update -  /// the jump tables to branch to New instead. -  bool ReplaceMBBInJumpTables(MachineBasicBlock *Old, MachineBasicBlock *New); - -  /// ReplaceMBBInJumpTable - If Old is a target of the jump tables, update -  /// the jump table to branch to New instead. -  bool ReplaceMBBInJumpTable(unsigned Idx, MachineBasicBlock *Old, -                             MachineBasicBlock *New); - -  /// print - Used by the MachineFunction printer to print information about -  /// jump tables.  Implemented in MachineFunction.cpp -  /// -  void print(raw_ostream &OS) const; - -  /// dump - Call to stderr. -  /// -  void dump() const; -}; - - -/// Prints a jump table entry reference. -/// -/// The format is: -///   %jump-table.5       - a jump table entry with index == 5. -/// -/// Usage: OS << printJumpTableEntryReference(Idx) << '\n'; -Printable printJumpTableEntryReference(unsigned Idx); - -} // End llvm namespace - -#endif - -#ifdef __GNUC__ -#pragma GCC diagnostic pop -#endif +  /// ReplaceMBBInJumpTables - If Old is the target of any jump tables, update  +  /// the jump tables to branch to New instead.  +  bool ReplaceMBBInJumpTables(MachineBasicBlock *Old, MachineBasicBlock *New);  +  +  /// ReplaceMBBInJumpTable - If Old is a target of the jump tables, update  +  /// the jump table to branch to New instead.  +  bool ReplaceMBBInJumpTable(unsigned Idx, MachineBasicBlock *Old,  +                             MachineBasicBlock *New);  +  +  /// print - Used by the MachineFunction printer to print information about  +  /// jump tables.  Implemented in MachineFunction.cpp  +  ///  +  void print(raw_ostream &OS) const;  +  +  /// dump - Call to stderr.  +  ///  +  void dump() const;  +};  +  +  +/// Prints a jump table entry reference.  +///  +/// The format is:  +///   %jump-table.5       - a jump table entry with index == 5.  +///  +/// Usage: OS << printJumpTableEntryReference(Idx) << '\n';  +Printable printJumpTableEntryReference(unsigned Idx);  +  +} // End llvm namespace  +  +#endif  +  +#ifdef __GNUC__  +#pragma GCC diagnostic pop  +#endif   | 
