aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorHans-Peter Nilsson <hp@bitrange.com>2018-09-09 18:12:14 +0000
committerHans-Peter Nilsson <hp@gcc.gnu.org>2018-09-09 18:12:14 +0000
commit8023c7a49c211ff9a3bbc144dfd17e22ca232d50 (patch)
tree3239a2f8048949234449d05522d984395583c056 /gcc
parenta236f9d6402901a67d6e41797e6be5a9ab24e865 (diff)
downloadgcc-8023c7a49c211ff9a3bbc144dfd17e22ca232d50.zip
gcc-8023c7a49c211ff9a3bbc144dfd17e22ca232d50.tar.gz
gcc-8023c7a49c211ff9a3bbc144dfd17e22ca232d50.tar.bz2
re PR target/85666 (gcc-8.0.1 fails to build mmix target: gcc/libgcc/libgcc2.h:203:20: internal compiler error: in leaf_function_p, at final.c:4488)
PR target/85666 * config/mmix/mmix.c (mmix_assemble_integer): Handle byte-size non-CONST_INT rtx:es using assemble_integer_with_op ".byte". From-SVN: r264183
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/mmix/mmix.c10
2 files changed, 12 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 270c67e..57725ba 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,8 +1,10 @@
2018-09-09 Hans-Peter Nilsson <hp@bitrange.com>
PR target/85666
- * config/mmix/mmix.c (MMIX_CFUN_NEEDS_SAVED_EH_RETURN_ADDRESS): Don't
- call leaf_function_p, instead use has_hard_reg_initial_val.
+ * config/mmix/mmix.c (mmix_assemble_integer): Handle byte-size
+ non-CONST_INT rtx:es using assemble_integer_with_op ".byte".
+ (MMIX_CFUN_NEEDS_SAVED_EH_RETURN_ADDRESS): Don't call
+ leaf_function_p, instead use has_hard_reg_initial_val.
2018-09-09 Nathan Sidwell <nathan@acm.org>
diff --git a/gcc/config/mmix/mmix.c b/gcc/config/mmix/mmix.c
index 5ee9930..9e3bc94 100644
--- a/gcc/config/mmix/mmix.c
+++ b/gcc/config/mmix/mmix.c
@@ -1370,8 +1370,14 @@ mmix_assemble_integer (rtx x, unsigned int size, int aligned_p)
case 1:
if (GET_CODE (x) != CONST_INT)
{
- aligned_p = 0;
- break;
+ /* There is no "unaligned byte" op or generic function to
+ which we can punt, so we have to handle this here. As
+ the expression isn't a plain literal, the generated
+ assembly-code can't be mmixal-equivalent (i.e. "BYTE"
+ won't work) and thus it's ok to emit the default op
+ ".byte". */
+ assemble_integer_with_op ("\t.byte\t", x);
+ return true;
}
fputs ("\tBYTE\t", asm_out_file);
mmix_print_operand (asm_out_file, x, 'B');