aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Earnshaw <rearnsha@arm.com>2011-06-27 21:09:25 +0000
committerRichard Earnshaw <rearnsha@gcc.gnu.org>2011-06-27 21:09:25 +0000
commita1b5eb9382a8b109567576fdad3fc458c35dc668 (patch)
tree9c72d6c4b00b3e2fec62720cf59b11be4538f558
parentdbb7247b9a209ac3afef3c5174ba552c1f941bec (diff)
downloadgcc-a1b5eb9382a8b109567576fdad3fc458c35dc668.zip
gcc-a1b5eb9382a8b109567576fdad3fc458c35dc668.tar.gz
gcc-a1b5eb9382a8b109567576fdad3fc458c35dc668.tar.bz2
re PR target/48637 (%c in ARM inline asm leads to ICE (in arm_print_operand))
PR target/48637 * arm.c (arm_print_operand): Allow sym+offset. Don't abort on invalid asm operands. From-SVN: r175565
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/arm/arm.c11
2 files changed, 16 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index fe982b6..6ebc1ce 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2011-06-27 Richard Earnshaw <rearnsha@arm.com>
+
+ PR target/48637
+ * arm.c (arm_print_operand): Allow sym+offset. Don't abort on invalid
+ asm operands.
+
2011-06-27 Jan Hubicka <jh@suse.cz>
* ipa.c (cgraph_address_taken_from_non_vtable_p): Walk references of node
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index efffcf8..8b9cb25 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -16242,8 +16242,17 @@ arm_print_operand (FILE *stream, rtx x, int code)
output_addr_const (stream, x);
break;
+ case CONST:
+ if (GET_CODE (XEXP (x, 0)) == PLUS
+ && GET_CODE (XEXP (XEXP (x, 0), 0)) == SYMBOL_REF)
+ {
+ output_addr_const (stream, x);
+ break;
+ }
+ /* Fall through. */
+
default:
- gcc_unreachable ();
+ output_operand_lossage ("Unsupported operand for code '%c'", code);
}
return;