aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/m32c
diff options
context:
space:
mode:
authorNaveen.H.S <naveenh@kpitcummins.com>2006-05-30 22:53:48 +0000
committerDJ Delorie <dj@gcc.gnu.org>2006-05-30 18:53:48 -0400
commit9cb96754ae0a6af89ec8286d6a68d76c70698a65 (patch)
treeca97d5b499f73302ca53b0ea23f70f72b8e171ed /gcc/config/m32c
parent96a782e226f8c0ab9677ec5ff26319d6ee1062c4 (diff)
downloadgcc-9cb96754ae0a6af89ec8286d6a68d76c70698a65.zip
gcc-9cb96754ae0a6af89ec8286d6a68d76c70698a65.tar.gz
gcc-9cb96754ae0a6af89ec8286d6a68d76c70698a65.tar.bz2
m32c.c (m32c_expand_insv): Check that the value we're inserting is a singlt-bit constant.
* config/m32c/m32c.c (m32c_expand_insv): Check that the value we're inserting is a singlt-bit constant. Co-Authored-By: DJ Delorie <dj@redhat.com> From-SVN: r114250
Diffstat (limited to 'gcc/config/m32c')
-rw-r--r--gcc/config/m32c/m32c.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/config/m32c/m32c.c b/gcc/config/m32c/m32c.c
index 186f666..6fddc4b 100644
--- a/gcc/config/m32c/m32c.c
+++ b/gcc/config/m32c/m32c.c
@@ -3435,6 +3435,14 @@ m32c_expand_insv (rtx *operands)
if (INTVAL (operands[1]) != 1)
return 1;
+ /* Our insv opcode (bset, bclr) can only insert a one-bit constant. */
+ if (GET_CODE (operands[3]) != CONST_INT)
+ return 1;
+ if (INTVAL (operands[3]) != 0
+ && INTVAL (operands[3]) != 1
+ && INTVAL (operands[3]) != -1)
+ return 1;
+
mask = 1 << INTVAL (operands[2]);
op0 = operands[0];