aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2014-06-02 09:27:41 -0700
committerRichard Henderson <rth@gcc.gnu.org>2014-06-02 09:27:41 -0700
commit20a951e6b74c187db7c51b7dc5a898cb7bb66271 (patch)
tree961d269f75a746c17b1436ea87d66825067bded4 /gcc
parent315eb4bb08abaee794c5f8a924cb4ae0d9fc2c61 (diff)
downloadgcc-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/ChangeLog7
-rw-r--r--gcc/config/alpha/alpha.c9
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);