summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorktkachov <ktkachov@138bc75d-0d04-0410-961f-82ee72b054a4>2017-02-08 09:14:39 +0000
committerktkachov <ktkachov@138bc75d-0d04-0410-961f-82ee72b054a4>2017-02-08 09:14:39 +0000
commitf3f409fb63962c5ed1c9502c1b2d5f546660475d (patch)
treec508e4c77ec2520564cb1350bc542510ae56ad46
parentd5697ffe8de395e9f86b09727097d282b0374a99 (diff)
downloadgcc-f3f409fb63962c5ed1c9502c1b2d5f546660475d.tar.gz
[riscv] Fix build due to INT16_MAX issue
* config/riscv/riscv.c (riscv_build_integer_1): Avoid use of INT16_MAX. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@245272 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/config/riscv/riscv.c4
2 files changed, 7 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 1b518e68aed..bb1e7e99556 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2016-02-08 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ * config/riscv/riscv.c (riscv_build_integer_1): Avoid use of INT16_MAX.
+
2017-02-08 Richard Biener <rguenther@suse.de>
PR tree-optimization/71824
diff --git a/gcc/config/riscv/riscv.c b/gcc/config/riscv/riscv.c
index 834651f4214..89567f72b71 100644
--- a/gcc/config/riscv/riscv.c
+++ b/gcc/config/riscv/riscv.c
@@ -356,7 +356,9 @@ riscv_build_integer_1 (struct riscv_integer_op codes[RISCV_MAX_INTEGER_OPS],
/* End with ADDI. When constructing HImode constants, do not generate any
intermediate value that is not itself a valid HImode constant. The
XORI case below will handle those remaining HImode constants. */
- if (low_part != 0 && (mode != HImode || value - low_part <= INT16_MAX))
+ if (low_part != 0
+ && (mode != HImode
+ || value - low_part <= ((1 << (GET_MODE_BITSIZE (HImode) - 1)) - 1)))
{
alt_cost = 1 + riscv_build_integer_1 (alt_codes, value - low_part, mode);
if (alt_cost < cost)