diff options
author | Hans-Peter Nilsson <hp@gcc.gnu.org> | 2006-01-10 18:13:16 +0000 |
---|---|---|
committer | Hans-Peter Nilsson <hp@gcc.gnu.org> | 2006-01-10 18:13:16 +0000 |
commit | d76fe40bcfdcc0012388894d3bccbd6630ec32ea (patch) | |
tree | 21612dc77ec5e5642131482984a5fd12fff71637 /gcc | |
parent | 4580de7efa326bd62d122c338e823e9d73ff67a3 (diff) | |
download | gcc-d76fe40bcfdcc0012388894d3bccbd6630ec32ea.zip gcc-d76fe40bcfdcc0012388894d3bccbd6630ec32ea.tar.gz gcc-d76fe40bcfdcc0012388894d3bccbd6630ec32ea.tar.bz2 |
re PR target/25718 (invalid assembly for unsigned-minimum expressions.)
PR target/25718
* config/cris/cris.md ("uminsi3"): Don't use 8- or 16-bit sizes
for a negative bound.
From-SVN: r109548
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config/cris/cris.md | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/gcc/config/cris/cris.md b/gcc/config/cris/cris.md index 5665897..a657319 100644 --- a/gcc/config/cris/cris.md +++ b/gcc/config/cris/cris.md @@ -2679,11 +2679,16 @@ { if (GET_CODE (operands[2]) == CONST_INT) { - if (INTVAL (operands[2]) < 256) - return "bound.b %2,%0"; + /* Constant operands are zero-extended, so only 32-bit operands + may be negative. */ + if (INTVAL (operands[2]) >= 0) + { + if (INTVAL (operands[2]) < 256) + return "bound.b %2,%0"; - if (INTVAL (operands[2]) < 65536) - return "bound.w %2,%0"; + if (INTVAL (operands[2]) < 65536) + return "bound.w %2,%0"; + } } else if (which_alternative == 3) return "bound.d %2,%1,%0"; |