diff options
author | Richard Henderson <rth@redhat.com> | 2014-06-02 09:27:41 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2014-06-02 09:27:41 -0700 |
commit | 20a951e6b74c187db7c51b7dc5a898cb7bb66271 (patch) | |
tree | 961d269f75a746c17b1436ea87d66825067bded4 /gcc | |
parent | 315eb4bb08abaee794c5f8a924cb4ae0d9fc2c61 (diff) | |
download | gcc-20a951e6b74c187db7c51b7dc5a898cb7bb66271.zip gcc-20a951e6b74c187db7c51b7dc5a898cb7bb66271.tar.gz gcc-20a951e6b74c187db7c51b7dc5a898cb7bb66271.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/alpha/alpha.c | 9 |
2 files changed, 12 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bc9b036..8b41457 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c index efef1e9..7663e20 100644 --- a/gcc/config/alpha/alpha.c +++ b/gcc/config/alpha/alpha.c @@ -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); |