aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Koning <ni1d@arrl.net>2010-11-08 20:07:14 -0500
committerPaul Koning <pkoning@gcc.gnu.org>2010-11-08 20:07:14 -0500
commite285a2c6b4710c4a141fc18b7151457e4ae7f290 (patch)
tree783c74a2aca8089d71f147be56b67141a4da6e81
parenta193ead3a36959d89050215b74470318416f3c21 (diff)
downloadgcc-e285a2c6b4710c4a141fc18b7151457e4ae7f290.zip
gcc-e285a2c6b4710c4a141fc18b7151457e4ae7f290.tar.gz
gcc-e285a2c6b4710c4a141fc18b7151457e4ae7f290.tar.bz2
pdp11.c (pdp11_assemble_integer): Mask byte values to 8 bits.
* config/pdp11/pdp11.c (pdp11_assemble_integer): Mask byte values to 8 bits. From-SVN: r166466
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/pdp11/pdp11.c9
2 files changed, 10 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 49378ae..8bd5348 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2010-11-08 Paul Koning <ni1d@arrl.net>
+
+ * config/pdp11/pdp11.c (pdp11_assemble_integer): Mask byte values
+ to 8 bits.
+
2010-11-08 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/46378
diff --git a/gcc/config/pdp11/pdp11.c b/gcc/config/pdp11/pdp11.c
index 31e85c7..a9c758b 100644
--- a/gcc/config/pdp11/pdp11.c
+++ b/gcc/config/pdp11/pdp11.c
@@ -1002,7 +1002,10 @@ pdp11_assemble_integer (rtx x, unsigned int size, int aligned_p)
{
case 1:
fprintf (asm_out_file, "\t.byte\t");
- output_addr_const_pdp11 (asm_out_file, x);
+ output_addr_const_pdp11 (asm_out_file,
+ GEN_INT (trunc_int_for_mode (INTVAL (x),
+ QImode) & 0xff));
+;
fprintf (asm_out_file, " /* char */\n");
return true;
@@ -1739,9 +1742,7 @@ output_addr_const_pdp11 (FILE *file, rtx x)
break;
case CONST_INT:
- /* Should we check for constants which are too big? Maybe cutting
- them off to 16 bits is OK? */
- fprintf (file, "%#ho", (unsigned short) INTVAL (x));
+ fprintf (file, "%#o", (int) trunc_int_for_mode (INTVAL (x), HImode) & 0xffff);
break;
case CONST: