From be336e025f92b7ce30143380f8d1d50a7f02d282 Mon Sep 17 00:00:00 2001
From: Maximilian Downey Twiss <creatorsmithmdt@gmail.com>
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

Reply via email to