diff options
author | Hans-Peter Nilsson <hp@bitrange.com> | 2002-02-11 22:38:30 +0000 |
---|---|---|
committer | Hans-Peter Nilsson <hp@gcc.gnu.org> | 2002-02-11 22:38:30 +0000 |
commit | a02ac96696de10ffaf30cfdfac8a54b599368a2d (patch) | |
tree | f94edb95a1f8874e8be896257065c8c400278608 /gcc | |
parent | 97cf8285dc3ef2ea675b234f52216d897b91b373 (diff) | |
download | gcc-a02ac96696de10ffaf30cfdfac8a54b599368a2d.zip gcc-a02ac96696de10ffaf30cfdfac8a54b599368a2d.tar.gz gcc-a02ac96696de10ffaf30cfdfac8a54b599368a2d.tar.bz2 |
mmix.c (mmix_assemble_integer): Handle non-CONST_INT through default_assemble_integer.
* config/mmix/mmix.c (mmix_assemble_integer) <case 1, 2>: Handle
non-CONST_INT through default_assemble_integer.
<case 4>: Likewise, for non-CONST_INT, non-SYMBOL_REF.
<case 8>: Abort for CONST_DOUBLE.
From-SVN: r49687
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/mmix/mmix.c | 32 |
2 files changed, 36 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7608058..524c6d0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2002-02-11 Hans-Peter Nilsson <hp@bitrange.com> + + * config/mmix/mmix.c (mmix_assemble_integer) <case 1, 2>: Handle + non-CONST_INT through default_assemble_integer. + <case 4>: Likewise, for non-CONST_INT, non-SYMBOL_REF. + <case 8>: Abort for CONST_DOUBLE. + 2002-02-11 John David Anglin <dave@hiauly1.hia.nrc.ca> * gcc.c (init_gcc_specs): Add static libgcc to link when "-shared" diff --git a/gcc/config/mmix/mmix.c b/gcc/config/mmix/mmix.c index 8192d9b..50ab71b 100644 --- a/gcc/config/mmix/mmix.c +++ b/gcc/config/mmix/mmix.c @@ -1909,19 +1909,43 @@ mmix_assemble_integer (x, size, aligned_p) if (aligned_p) switch (size) { + /* We handle a limited number of types of operands in here. But + that's ok, because we can punt to generic functions. We then + pretend that we don't emit aligned data is needed, so the usual + .pseudo syntax is used (which work for aligned data too). We + actually *must* do that, since we say we don't have simple + aligned pseudos, causing this function to be called. We just + try and keep as much compatibility as possible with mmixal + syntax for normal cases (i.e. without GNU extensions and C + only). */ case 1: + if (GET_CODE (x) != CONST_INT) + { + aligned_p = 0; + break; + } fputs ("\tBYTE\t", asm_out_file); mmix_print_operand (asm_out_file, x, 'B'); fputc ('\n', asm_out_file); return true; case 2: + if (GET_CODE (x) != CONST_INT) + { + aligned_p = 0; + break; + } fputs ("\tWYDE\t", asm_out_file); mmix_print_operand (asm_out_file, x, 'W'); fputc ('\n', asm_out_file); return true; case 4: + if (GET_CODE (x) != CONST_INT && GET_CODE (x) != SYMBOL_REF) + { + aligned_p = 0; + break; + } fputs ("\tTETRA\t", asm_out_file); mmix_print_operand (asm_out_file, x, 'L'); fputc ('\n', asm_out_file); @@ -1929,9 +1953,11 @@ mmix_assemble_integer (x, size, aligned_p) case 8: if (GET_CODE (x) == CONST_DOUBLE) - mmix_output_octa (asm_out_file, mmix_intval (x), 0); - else - assemble_integer_with_op ("\tOCTA\t", x); + /* We don't get here anymore for CONST_DOUBLE, because DImode + isn't expressed as CONST_DOUBLE, and DFmode is handled + elsewhere. */ + abort (); + assemble_integer_with_op ("\tOCTA\t", x); return true; } return default_assemble_integer (x, size, aligned_p); |