C++: Restrict the side effect of StoreChainEndInstructionSideEffect to be WriteSideEffectInstructions

This commit is contained in:
Mathias Vorreiter Pedersen
2020-06-03 09:28:06 +02:00
parent ce34d91a07
commit b890b162f4

View File

@@ -435,13 +435,13 @@ private Instruction skipConversion(Instruction instr) {
* before entering `setter`. * before entering `setter`.
*/ */
private class StoreChainEndInstructionSideEffect extends StoreChainEndInstruction, ChiInstruction { private class StoreChainEndInstructionSideEffect extends StoreChainEndInstruction, ChiInstruction {
SideEffectInstruction sideEffect; WriteSideEffectInstruction sideEffect;
FieldAddressInstruction fi; FieldAddressInstruction fi;
StoreChainEndInstructionSideEffect() { StoreChainEndInstructionSideEffect() {
not this.isResultConflated() and not this.isResultConflated() and
this.getPartial() = sideEffect and this.getPartial() = sideEffect and
fi = skipConversion*(sideEffect.getAnOperand().getDef()) fi = skipConversion*(sideEffect.getArgumentDef())
} }
override FieldAddressInstruction getFieldInstruction() { result = fi } override FieldAddressInstruction getFieldInstruction() { result = fi }