From be336e025f92b7ce30143380f8d1d50a7f02d282 Mon Sep 17 00:00:00 2001
From: Maximilian Downey Twiss <[email protected]>
Date: Fri, 18 Nov 2022 14:32:58 +1100
Subject: [PATCH 29/56] java: Properly handle GET_MODE_SIZE as a poly_uint16.
gcc/java/ChangeLog:
* builtins.cc (compareAndSwapLong_builtin): Treat GET_MODE_SIZE as polynomial.
* expr.cc (expand_java_return): Likewise.
---
gcc/java/builtins.cc | 2 +-
gcc/java/expr.cc | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/gcc/java/builtins.cc b/gcc/java/builtins.cc
index f27831d51c2..09f6c159aa5 100644
--- a/gcc/java/builtins.cc
+++ b/gcc/java/builtins.cc
@@ -348,7 +348,7 @@ compareAndSwapLong_builtin (tree method_return_type ATTRIBUTE_UNUSED,
versions. */
if (can_compare_and_swap_p (mode,
(flag_use_atomic_builtins
- && GET_MODE_SIZE (mode) <= UNITS_PER_WORD)))
+ && known_le (GET_MODE_SIZE (mode), UNITS_PER_WORD))))
{
tree addr, stmt;
enum built_in_function fncode = BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_8;
diff --git a/gcc/java/expr.cc b/gcc/java/expr.cc
index 8d897550a59..80bff58d727 100644
--- a/gcc/java/expr.cc
+++ b/gcc/java/expr.cc
@@ -1299,8 +1299,8 @@ expand_java_return (tree type)
The whole if expression just goes away if INT_TYPE_SIZE < 32
is false. */
if (INT_TYPE_SIZE < 32
- && (GET_MODE_SIZE (TYPE_MODE (TREE_TYPE (res)))
- < GET_MODE_SIZE (TYPE_MODE (type))))
+ && known_lt (GET_MODE_SIZE (TYPE_MODE (TREE_TYPE (res))),
+ GET_MODE_SIZE (TYPE_MODE (type))))
retval = build1 (NOP_EXPR, TREE_TYPE (res), retval);
TREE_SIDE_EFFECTS (retval) = 1;
--
2.38.1