summaryrefslogtreecommitdiff
path: root/debian/patches/pr61336.diff
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/pr61336.diff')
-rw-r--r--debian/patches/pr61336.diff40
1 files changed, 40 insertions, 0 deletions
diff --git a/debian/patches/pr61336.diff b/debian/patches/pr61336.diff
new file mode 100644
index 0000000..7e3e7ad
--- /dev/null
+++ b/debian/patches/pr61336.diff
@@ -0,0 +1,40 @@
+# DP: Fix PR target/61336, taken from the trunk.
+
+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.
+
+--- a/src/gcc/config/alpha/alpha.c
++++ b/src/gcc/config/alpha/alpha.c
+@@ -5450,12 +5450,13 @@
+ 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,
+@@ -5462,10 +5463,10 @@
+ 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);