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:
parent
0aea1e5cb0
commit
bcbf240d2e
5 changed files with 18 additions and 6 deletions
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue