Skip to content
Snippets Groups Projects
Commit ce3e1f01 authored by clc5q's avatar clc5q
Browse files

Propagate MEDS type NUMERIC from DEFs to USEs of sign- and zero-extended moves.

parent 7f56d92b
No related branches found
No related tags found
No related merge requests found
...@@ -6005,6 +6005,7 @@ bool SMPInstr::InferOperatorType(SMPRegTransfer *CurrRT) { ...@@ -6005,6 +6005,7 @@ bool SMPInstr::InferOperatorType(SMPRegTransfer *CurrRT) {
} }
break; break;
   
#if 0
case SMP_SIGN_EXTEND: case SMP_SIGN_EXTEND:
case SMP_ZERO_EXTEND: case SMP_ZERO_EXTEND:
// Should we infer that all operands are NUMERIC? !!!???!!!! // Should we infer that all operands are NUMERIC? !!!???!!!!
...@@ -6013,6 +6014,7 @@ bool SMPInstr::InferOperatorType(SMPRegTransfer *CurrRT) { ...@@ -6013,6 +6014,7 @@ bool SMPInstr::InferOperatorType(SMPRegTransfer *CurrRT) {
updated = true; updated = true;
} }
break; break;
#endif
   
case SMP_ADDRESS_OF: // take effective address case SMP_ADDRESS_OF: // take effective address
if (UNINIT == CurrRT->GetOperatorType()) { if (UNINIT == CurrRT->GetOperatorType()) {
...@@ -6023,6 +6025,8 @@ bool SMPInstr::InferOperatorType(SMPRegTransfer *CurrRT) { ...@@ -6023,6 +6025,8 @@ bool SMPInstr::InferOperatorType(SMPRegTransfer *CurrRT) {
} }
break; break;
   
case SMP_SIGN_EXTEND:
case SMP_ZERO_EXTEND:
case SMP_U_LEFT_SHIFT: // unsigned left shift case SMP_U_LEFT_SHIFT: // unsigned left shift
case SMP_S_LEFT_SHIFT: // signed left shift case SMP_S_LEFT_SHIFT: // signed left shift
case SMP_U_RIGHT_SHIFT: // unsigned right shift case SMP_U_RIGHT_SHIFT: // unsigned right shift
...@@ -6105,6 +6109,7 @@ bool SMPInstr::InferOperatorType(SMPRegTransfer *CurrRT) { ...@@ -6105,6 +6109,7 @@ bool SMPInstr::InferOperatorType(SMPRegTransfer *CurrRT) {
#if SMP_AGGRESSIVE_TYPE_INFERENCE #if SMP_AGGRESSIVE_TYPE_INFERENCE
if (UNINIT == CurrRT->GetRightTree()->GetOperatorType()) { if (UNINIT == CurrRT->GetRightTree()->GetOperatorType()) {
CurrRT->GetRightTree()->SetOperatorType(NUMERIC, this); CurrRT->GetRightTree()->SetOperatorType(NUMERIC, this);
updated = true;
} }
#endif #endif
updated |= this->InferOperatorType(CurrRT->GetRightTree()); updated |= this->InferOperatorType(CurrRT->GetRightTree());
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment