diff options
author | Hans-Peter Nilsson <hp@bitrange.com> | 2018-09-09 18:12:14 +0000 |
---|---|---|
committer | Hans-Peter Nilsson <hp@gcc.gnu.org> | 2018-09-09 18:12:14 +0000 |
commit | 8023c7a49c211ff9a3bbc144dfd17e22ca232d50 (patch) | |
tree | 3239a2f8048949234449d05522d984395583c056 /gcc | |
parent | a236f9d6402901a67d6e41797e6be5a9ab24e865 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/mmix/mmix.c | 10 |
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'); |