re PR target/61336 (ICE on alpha: in print_operand_address, at config/alpha/alpha.c:5454)

PR target/61336

        * config/alpha/alpha.c (print_operand_address): Allow symbolic
        addresses inside asms.  Use output_operand_lossage instead of
        gcc_unreachable.

From-SVN: r211139
This commit is contained in:
Richard Henderson 2014-06-02 09:27:41 -07:00 committed by Richard Henderson
parent 315eb4bb08
commit 20a951e6b7
2 changed files with 12 additions and 4 deletions

View File

@ -1,3 +1,10 @@
2014-06-02 Richard Henderson <rth@redhat.com>
PR target/61336
* config/alpha/alpha.c (print_operand_address): Allow symbolic
addresses inside asms. Use output_operand_lossage instead of
gcc_unreachable.
2014-06-02 Uros Bizjak <ubizjak@gmail.com>
PR target/61239

View File

@ -5450,22 +5450,23 @@ print_operand_address (FILE *file, rtx addr)
offset = INTVAL (addr);
break;
#if TARGET_ABI_OPEN_VMS
case SYMBOL_REF:
gcc_assert(TARGET_ABI_OPEN_VMS || this_is_asm_operands);
fprintf (file, "%s", XSTR (addr, 0));
return;
case CONST:
gcc_assert(TARGET_ABI_OPEN_VMS || this_is_asm_operands);
gcc_assert (GET_CODE (XEXP (addr, 0)) == PLUS
&& GET_CODE (XEXP (XEXP (addr, 0), 0)) == SYMBOL_REF);
fprintf (file, "%s+" HOST_WIDE_INT_PRINT_DEC,
XSTR (XEXP (XEXP (addr, 0), 0), 0),
INTVAL (XEXP (XEXP (addr, 0), 1)));
return;
#endif
default:
gcc_unreachable ();
output_operand_lossage ("invalid operand address");
return;
}
fprintf (file, HOST_WIDE_INT_PRINT_DEC "($%d)", offset, basereg);