https://gcc.gnu.org/g:6cab7e154bb53bac89d8964b38f12a80adbfd0dd

commit r14-12884-g6cab7e154bb53bac89d8964b38f12a80adbfd0dd
Author: Viljar Indus <[email protected]>
Date:   Tue Sep 22 10:55:07 2026 +0200

    Ada: Fix crash in can_equal_min_or_max_val_p
    
    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.
    
    gcc/ada/
            * gcc-interface/trans.cc (can_equal_min_Or_max_val_p): Add guard
            for integral types.

Diff:
---
 gcc/ada/gcc-interface/trans.cc | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/gcc/ada/gcc-interface/trans.cc b/gcc/ada/gcc-interface/trans.cc
index de0f0ac2f8bb..b3f4a2901076 100644
--- a/gcc/ada/gcc-interface/trans.cc
+++ b/gcc/ada/gcc-interface/trans.cc
@@ -2827,7 +2827,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