Commit e601abce by Jim Wilson

(print_operand): For invalid operands, call

output_operand_lossage instead of aborting.

From-SVN: r3027
parent eff864ab
...@@ -2814,7 +2814,9 @@ print_operand (file, x, code) ...@@ -2814,7 +2814,9 @@ print_operand (file, x, code)
output_addr_const (file, XEXP (x, 1)); output_addr_const (file, XEXP (x, 1));
fputc (')', file); fputc (')', file);
} }
else if (GET_CODE (x) == CONST_DOUBLE) else if (GET_CODE (x) == CONST_DOUBLE
&& (GET_MODE (x) == VOIDmode
|| GET_MODE_CLASS (GET_MODE (x)) == MODE_INT))
{ {
if (CONST_DOUBLE_HIGH (x) == 0) if (CONST_DOUBLE_HIGH (x) == 0)
fprintf (file, "%u", CONST_DOUBLE_LOW (x)); fprintf (file, "%u", CONST_DOUBLE_LOW (x));
...@@ -2822,8 +2824,10 @@ print_operand (file, x, code) ...@@ -2822,8 +2824,10 @@ print_operand (file, x, code)
&& CONST_DOUBLE_LOW (x) < 0) && CONST_DOUBLE_LOW (x) < 0)
fprintf (file, "%d", CONST_DOUBLE_LOW (x)); fprintf (file, "%d", CONST_DOUBLE_LOW (x));
else else
abort (); output_operand_lossage ("long long constant not a valid immediate operand");
} }
else if (GET_CODE (x) == CONST_DOUBLE)
output_operand_lossage ("floating point constant not a valid immediate operand");
else { output_addr_const (file, x); } else { output_addr_const (file, x); }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment