From 8023c7a49c211ff9a3bbc144dfd17e22ca232d50 Mon Sep 17 00:00:00 2001 From: Hans-Peter Nilsson Date: Sun, 9 Sep 2018 18:12:14 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 6 ++++-- gcc/config/mmix/mmix.c | 10 ++++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 270c67e37b2..57725badf7a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,8 +1,10 @@ 2018-09-09 Hans-Peter Nilsson 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 diff --git a/gcc/config/mmix/mmix.c b/gcc/config/mmix/mmix.c index 5ee9930620c..9e3bc9437ce 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'); -- 2.30.2