This changes can_equal_min_or_max_val_p to update the value only when we are 
dealing with a known integral type, instead of with a pointer type for which 
min/max values are not defined.

Tested on x86-64/Linux, applied on the mainline, 16, 15 and 14 branches.


2026-09-22  Viljar Indus  <[email protected]>

        * gcc-interface/trans.cc (can_equal_min_Or_max_val_p): Add guard
        for integral types.

-- 
Eric Botcazou
diff --git a/gcc/ada/gcc-interface/trans.cc b/gcc/ada/gcc-interface/trans.cc
index 0c2d8685de1..628a1174eca 100644
--- a/gcc/ada/gcc-interface/trans.cc
+++ b/gcc/ada/gcc-interface/trans.cc
@@ -2886,7 +2886,8 @@ can_equal_min_or_max_val_p (tree val, tree type, bool max)
   if (TREE_CODE (min_or_max_val) != INTEGER_CST)
     return true;
 
-  if (TREE_CODE (val) == NOP_EXPR)
+  if (TREE_CODE (val) == NOP_EXPR
+      && INTEGRAL_TYPE_P (TREE_TYPE (TREE_OPERAND (val, 0))))
     val = (max
 	   ? TYPE_MAX_VALUE (TREE_TYPE (TREE_OPERAND (val, 0)))
 	   : TYPE_MIN_VALUE (TREE_TYPE (TREE_OPERAND (val, 0))));

Reply via email to