PPTC: Fix unwanted propagation of a relocatable constant in a specific case. (#1990)

* Fix unwanted propagation of a relocatable constant in a specific case.

* Ptc.InternalVersion = 1990

* Nit to retrigger the Checks.
This commit is contained in:
LDj3SNuD 2021-02-23 13:15:45 +01:00 committed by GitHub
parent 0aea1e5cb0
commit bcbf240d2e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 18 additions and 6 deletions

View file

@ -14,7 +14,7 @@ namespace ARMeilleure.CodeGen.Optimizations
return;
}
if (!AreAllSourcesConstantAndCFEnabled(operation))
if (!AreAllSourcesConstant(operation))
{
return;
}
@ -24,6 +24,12 @@ namespace ARMeilleure.CodeGen.Optimizations
switch (operation.Instruction)
{
case Instruction.Add:
if (operation.GetSource(0).Relocatable ||
operation.GetSource(1).Relocatable)
{
break;
}
if (type == OperandType.I32)
{
EvaluateBinaryI32(operation, (x, y) => x + y);
@ -252,13 +258,13 @@ namespace ARMeilleure.CodeGen.Optimizations
}
}
private static bool AreAllSourcesConstantAndCFEnabled(Operation operation)
private static bool AreAllSourcesConstant(Operation operation)
{
for (int index = 0; index < operation.SourcesCount; index++)
{
Operand srcOp = operation.GetSource(index);
if (srcOp.Kind != OperandKind.Constant || srcOp.Relocatable)
if (srcOp.Kind != OperandKind.Constant)
{
return false;
}