C++: filter operands of removed IR instructions

This commit is contained in:
Robert Marsh
2021-02-22 14:41:21 -08:00
parent 6aeec5872d
commit 0b2daf7679
5 changed files with 30 additions and 35 deletions

View File

@@ -27,13 +27,12 @@ private class TStageOperand =
class Operand extends TStageOperand {
Operand() {
// Ensure that the operand does not refer to instructions from earlier stages that are unreachable here
this = registerOperand(_, _, _)
or
this = nonSSAMemoryOperand(_, _)
or
this = phiOperand(_, _, _, _)
or
this = chiOperand(_, _)
exists(Instruction use, Instruction def | this = registerOperand(use, _, def)) or
exists(Instruction use | this = nonSSAMemoryOperand(use, _)) or
exists(Instruction use, Instruction def, IRBlock predecessorBlock |
this = phiOperand(use, def, predecessorBlock, _)
) or
exists(Instruction use | this = chiOperand(use, _))
}
/** Gets a textual representation of this element. */

View File

@@ -27,13 +27,12 @@ private class TStageOperand =
class Operand extends TStageOperand {
Operand() {
// Ensure that the operand does not refer to instructions from earlier stages that are unreachable here
this = registerOperand(_, _, _)
or
this = nonSSAMemoryOperand(_, _)
or
this = phiOperand(_, _, _, _)
or
this = chiOperand(_, _)
exists(Instruction use, Instruction def | this = registerOperand(use, _, def)) or
exists(Instruction use | this = nonSSAMemoryOperand(use, _)) or
exists(Instruction use, Instruction def, IRBlock predecessorBlock |
this = phiOperand(use, def, predecessorBlock, _)
) or
exists(Instruction use | this = chiOperand(use, _))
}
/** Gets a textual representation of this element. */

View File

@@ -27,13 +27,12 @@ private class TStageOperand =
class Operand extends TStageOperand {
Operand() {
// Ensure that the operand does not refer to instructions from earlier stages that are unreachable here
this = registerOperand(_, _, _)
or
this = nonSSAMemoryOperand(_, _)
or
this = phiOperand(_, _, _, _)
or
this = chiOperand(_, _)
exists(Instruction use, Instruction def | this = registerOperand(use, _, def)) or
exists(Instruction use | this = nonSSAMemoryOperand(use, _)) or
exists(Instruction use, Instruction def, IRBlock predecessorBlock |
this = phiOperand(use, def, predecessorBlock, _)
) or
exists(Instruction use | this = chiOperand(use, _))
}
/** Gets a textual representation of this element. */

View File

@@ -27,13 +27,12 @@ private class TStageOperand =
class Operand extends TStageOperand {
Operand() {
// Ensure that the operand does not refer to instructions from earlier stages that are unreachable here
this = registerOperand(_, _, _)
or
this = nonSSAMemoryOperand(_, _)
or
this = phiOperand(_, _, _, _)
or
this = chiOperand(_, _)
exists(Instruction use, Instruction def | this = registerOperand(use, _, def)) or
exists(Instruction use | this = nonSSAMemoryOperand(use, _)) or
exists(Instruction use, Instruction def, IRBlock predecessorBlock |
this = phiOperand(use, def, predecessorBlock, _)
) or
exists(Instruction use | this = chiOperand(use, _))
}
/** Gets a textual representation of this element. */

View File

@@ -27,13 +27,12 @@ private class TStageOperand =
class Operand extends TStageOperand {
Operand() {
// Ensure that the operand does not refer to instructions from earlier stages that are unreachable here
this = registerOperand(_, _, _)
or
this = nonSSAMemoryOperand(_, _)
or
this = phiOperand(_, _, _, _)
or
this = chiOperand(_, _)
exists(Instruction use, Instruction def | this = registerOperand(use, _, def)) or
exists(Instruction use | this = nonSSAMemoryOperand(use, _)) or
exists(Instruction use, Instruction def, IRBlock predecessorBlock |
this = phiOperand(use, def, predecessorBlock, _)
) or
exists(Instruction use | this = chiOperand(use, _))
}
/** Gets a textual representation of this element. */