diff mbox series

[4/6] Fix tree_simple_nonnegative_warnv_p for VECTOR_TYPEs

Message ID 20230623082735.8C7AF1331F@imap2.suse-dmz.suse.de
State New
Headers show
Series [1/6] Avoid shorten_binary_op on VECTOR_TYPE | expand

Commit Message

Richard Biener June 23, 2023, 8:27 a.m. UTC
tree_simple_nonnegative_warnv_p ends up being called on VECTOR_TYPEs
which I think even gets the wrong answer here for tcc_comparison
since vector bools are signed.  The following properly guards
that with !VECTOR_TYPE_P.

Bootstrap and regtest ongoing on x86_64-unknown-linux-gnu, will
push after that finished.

	* fold-const.cc (tree_simple_nonnegative_warnv_p): Guard
	the truth_value_p case with !VECTOR_TYPE_P.
---
 gcc/fold-const.cc | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
diff mbox series

Patch

diff --git a/gcc/fold-const.cc b/gcc/fold-const.cc
index 3aa6851acd5..7e35eda7140 100644
--- a/gcc/fold-const.cc
+++ b/gcc/fold-const.cc
@@ -14530,7 +14530,8 @@  tree_expr_maybe_real_minus_zero_p (const_tree x)
 static bool
 tree_simple_nonnegative_warnv_p (enum tree_code code, tree type)
 {
-  if ((TYPE_PRECISION (type) != 1 || TYPE_UNSIGNED (type))
+  if (!VECTOR_TYPE_P (type)
+      && (TYPE_PRECISION (type) != 1 || TYPE_UNSIGNED (type))
       && truth_value_p (code))
     /* Truth values evaluate to 0 or 1, which is nonnegative unless we
        have a signed:1 type (where the value is -1 and 0).  */