Package org.apache.sysds.hops.rewrite

# Class RewriteRemoveEmptyBasicBlocks

java.lang.Object
org.apache.sysds.hops.rewrite.StatementBlockRewriteRule
org.apache.sysds.hops.rewrite.RewriteRemoveEmptyBasicBlocks

public class RewriteRemoveEmptyBasicBlocks extends StatementBlockRewriteRule
Rule: Simplify program structure by removing empty last-level blocks, which may originate from the original program or due to a sequence of rewrites (e.g., checkpoint injection and subsequent IPA).

## Constructor Summary

Constructors
Constructor
Description
`RewriteRemoveEmptyBasicBlocks()`

## Method Summary

Modifier and Type
Method
Description
`boolean`
`createsSplitDag()`
Indicates if the rewrite potentially splits dags, which is used for phase ordering of rewrites.
`List<StatementBlock>`
`rewriteStatementBlock(StatementBlock sb, ProgramRewriteStatus state)`
Handle an arbitrary statement block.
`List<StatementBlock>`
`rewriteStatementBlocks(List<StatementBlock> sbs, ProgramRewriteStatus sate)`
Handle a list of statement blocks.

### Methods inherited from class org.apache.sysds.hops.rewrite.StatementBlockRewriteRule

`createCutVarName`

### Methods inherited from class java.lang.Object

`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### RewriteRemoveEmptyBasicBlocks

public RewriteRemoveEmptyBasicBlocks()

## Method Details

### createsSplitDag

public boolean createsSplitDag()
Description copied from class: `StatementBlockRewriteRule`
Indicates if the rewrite potentially splits dags, which is used for phase ordering of rewrites.

Specified by:
  `createsSplitDag` in class `StatementBlockRewriteRule`
Returns:
  true if dag splits are possible.

### rewriteStatementBlock

public List<StatementBlock> rewriteStatementBlock(StatementBlock sb, ProgramRewriteStatus state)
Description copied from class: `StatementBlockRewriteRule`
Handle an arbitrary statement block. Specific type constraints have to be ensured within the individual rewrites. If a rewrite does not apply to individual blocks, it should simply return the input block.

Specified by:
  `rewriteStatementBlock` in class `StatementBlockRewriteRule`
Parameters:
  `sb` - statement block
  `state` - program rewrite status
Returns:
  list of statement blocks

### rewriteStatementBlocks

public List<StatementBlock> rewriteStatementBlocks(List<StatementBlock> sbs, ProgramRewriteStatus sate)
Description copied from class: `StatementBlockRewriteRule`
Handle a list of statement blocks. Specific type constraints have to be ensured within the individual rewrites. If a rewrite does not require sequence access, it should simply return the input list of statement blocks.

Specified by:
  `rewriteStatementBlocks` in class `StatementBlockRewriteRule`
Parameters:
  `sbs` - list of statement blocks
  `sate` - program rewrite status
Returns:
  list of statement blocks