diff options
author | Ulrich Weigand <uweigand@de.ibm.com> | 2014-04-02 18:53:06 +0000 |
---|---|---|
committer | Ulrich Weigand <uweigand@gcc.gnu.org> | 2014-04-02 18:53:06 +0000 |
commit | c65961930607ee226cfdf7a3700db5d34b138a0b (patch) | |
tree | ef099481635fa3610fb078b7f4d8046fdbaeb3d2 | |
parent | 84c2f4b068c5d221aea57334b38cdb78069b7dcf (diff) | |
download | gcc-c65961930607ee226cfdf7a3700db5d34b138a0b.zip gcc-c65961930607ee226cfdf7a3700db5d34b138a0b.tar.gz gcc-c65961930607ee226cfdf7a3700db5d34b138a0b.tar.bz2 |
spu.md ("insv"): Fail if bitoffset+bitsize lies outside the target mode.
* config/spu/spu.md ("insv"): Fail if bitoffset+bitsize
lies outside the target mode.
From-SVN: r209028
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/spu/spu.md | 8 |
2 files changed, 12 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 31ff90d..d6d4072c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2014-04-02 Ulrich Weigand <Ulrich.Weigand@de.ibm.com> + + * config/spu/spu.md ("insv"): Fail if bitoffset+bitsize + lies outside the target mode. + 2014-04-02 Michael Meissner <meissner@linux.vnet.ibm.com> PR target/60735 diff --git a/gcc/config/spu/spu.md b/gcc/config/spu/spu.md index 228b228..3ac4bfc 100644 --- a/gcc/config/spu/spu.md +++ b/gcc/config/spu/spu.md @@ -2851,7 +2851,13 @@ (match_operand:SI 2 "const_int_operand" "")) (match_operand 3 "nonmemory_operand" ""))] "" - { spu_expand_insv(operands); DONE; }) + { + if (INTVAL (operands[1]) + INTVAL (operands[2]) + > GET_MODE_BITSIZE (GET_MODE (operands[0]))) + FAIL; + spu_expand_insv(operands); + DONE; + }) ;; Simplify a number of patterns that get generated by extv, extzv, ;; insv, and loads. |