Remove scratch fields from the optimizing compiler IR

Description

Several classes in the optimizing compiler currently provide scratch fields that optimizations can use to save data. This approach has serious drawbacks (e.g. waste of space, data is not close to the computation, possibility of overwriting data, ...). We should remove all scratch fields from the IR classes and rewrite all affected parts of the opt compiler to save data in separate data structures, e.g. in the compiler phase objects or in the IR object.

The following scratch fields have already been removed during work on this issue:
BURS_TreeNode.scratchObject
BasicBlock.scratch
BasicBlock.scratchObject
DF_AbstractCell.scratch
DF_Equation.scratch
GraphElement.scratch
GraphElement.scratchObject
Instruction.scratch
Instruction.scratchObject
Register.scratch
Register.scratchObject
RegisterOperand.info
RegisterOperand.scratchObject (renamed because it had a single responsibility after refactoring)
SpaceEffGraphNode.scratch
SpaceEffGraphNode.scratchObject
SpaceEffGraphEdge.scratch (renamed due to not being a scratch field)

Environment

All

Status

Assignee

Erik Brangs

Reporter

Erik Brangs

Labels

None

Components

Fix versions

Affects versions

Priority

Medium
Configure