equal
deleted
inserted
replaced
861 if (is_widening_compatible(widen_table, prev_instruction_type, operand_type, symbol->datatype, deprecated_operation)) { |
861 if (is_widening_compatible(widen_table, prev_instruction_type, operand_type, symbol->datatype, deprecated_operation)) { |
862 /* set the desired datatype of the previous il instruction */ |
862 /* set the desired datatype of the previous il instruction */ |
863 set_datatype_in_prev_il_instructions(prev_instruction_type, fake_prev_il_instruction); |
863 set_datatype_in_prev_il_instructions(prev_instruction_type, fake_prev_il_instruction); |
864 /* set the datatype for the operand */ |
864 /* set the datatype for the operand */ |
865 il_operand->datatype = operand_type; |
865 il_operand->datatype = operand_type; |
|
866 il_operand->accept(*this); |
866 |
867 |
867 count ++; |
868 /* NOTE: DO NOT search any further! Return immediately! |
|
869 * Since we support SAFE*** datatypes, multiple entries in the widen_table may be compatible. |
|
870 * If we try to set more than one distinct datatype on the same symbol, then the datatype will be set to |
|
871 * an invalid_datatype, which is NOT what we want! |
|
872 */ |
|
873 return NULL; |
868 } |
874 } |
869 } |
875 } |
870 } |
876 } |
871 // if (count > 1) ERROR; /* Since we also support SAFE data types, this assertion is not necessarily always tru! */ |
|
872 if (is_type_valid(symbol->datatype) && (count <= 0)) ERROR; |
|
873 |
|
874 il_operand->accept(*this); |
|
875 return NULL; |
877 return NULL; |
876 } |
878 } |
877 |
879 |
878 |
880 |
879 |
881 |