Loading [MathJax]/extensions/tex2jax.js
CIRCT 21.0.0git
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Private Attributes | List of all members
circt::UnusedOpPruner Struct Reference

Utility that tracks operations that have potentially become unused and allows them to be cleaned up at a later point. More...

#include <UnusedOpPruner.h>

Collaboration diagram for circt::UnusedOpPruner:
Collaboration graph
[legend]

Public Member Functions

void eraseLaterIfUnused (Operation *op)
 Mark an op the be erased later if it is unused at that point.
 
void eraseLaterIfUnused (Value value)
 Mark the defining op of a value to be erased later if the op is unused at that point.
 
void eraseLaterIfUnused (ValueRange values)
 Mark the defining ops of a range of values to be erased later if the ops are unused at that point.
 
void eraseNow (Operation *op)
 Erase an operation immediately, and remove it from the set of ops to be removed later.
 
void eraseNow ()
 

Private Attributes

llvm::SmallDenseSet< Operation * > opsToEraseIfUnused
 The set of operations that may have become unused.
 
llvm::SmallDenseSet< BlockArgument > blockArgsToEraseIfUnused
 The set of block arguments that may have become unused.
 

Detailed Description

Utility that tracks operations that have potentially become unused and allows them to be cleaned up at a later point.

Useful to make passes clean up dead code.

Definition at line 22 of file UnusedOpPruner.h.

Member Function Documentation

◆ eraseLaterIfUnused() [1/3]

void circt::UnusedOpPruner::eraseLaterIfUnused ( Operation *  op)
inline

Mark an op the be erased later if it is unused at that point.

Definition at line 24 of file UnusedOpPruner.h.

References assert(), and opsToEraseIfUnused.

Referenced by eraseLaterIfUnused(), eraseLaterIfUnused(), eraseNow(), and eraseNow().

◆ eraseLaterIfUnused() [2/3]

void circt::UnusedOpPruner::eraseLaterIfUnused ( Value  value)
inline

Mark the defining op of a value to be erased later if the op is unused at that point.

Definition at line 31 of file UnusedOpPruner.h.

References blockArgsToEraseIfUnused, and eraseLaterIfUnused().

◆ eraseLaterIfUnused() [3/3]

void circt::UnusedOpPruner::eraseLaterIfUnused ( ValueRange  values)
inline

Mark the defining ops of a range of values to be erased later if the ops are unused at that point.

Definition at line 42 of file UnusedOpPruner.h.

References eraseLaterIfUnused().

◆ eraseNow() [1/2]

void circt::UnusedOpPruner::eraseNow ( )
inline

◆ eraseNow() [2/2]

void circt::UnusedOpPruner::eraseNow ( Operation *  op)
inline

Erase an operation immediately, and remove it from the set of ops to be removed later.

The op is erase regardless of whether it has any side effects or not.

Definition at line 50 of file UnusedOpPruner.h.

References eraseLaterIfUnused(), and opsToEraseIfUnused.

Member Data Documentation

◆ blockArgsToEraseIfUnused

llvm::SmallDenseSet<BlockArgument> circt::UnusedOpPruner::blockArgsToEraseIfUnused
private

The set of block arguments that may have become unused.

Definition at line 96 of file UnusedOpPruner.h.

Referenced by eraseLaterIfUnused(), and eraseNow().

◆ opsToEraseIfUnused

llvm::SmallDenseSet<Operation *> circt::UnusedOpPruner::opsToEraseIfUnused
private

The set of operations that may have become unused.

Definition at line 94 of file UnusedOpPruner.h.

Referenced by eraseLaterIfUnused(), eraseNow(), and eraseNow().


The documentation for this struct was generated from the following file: