public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
From: Jakub Jelinek <jakub@gcc.gnu.org>
To: gcc-cvs@gcc.gnu.org
Subject: [gcc r12-8263] reassoc: Don't call fold_convert if !fold_convertible_p [PR105374]
Date: Tue, 26 Apr 2022 07:58:12 +0000 (GMT)	[thread overview]
Message-ID: <20220426075812.D766D3858D37@sourceware.org> (raw)

https://gcc.gnu.org/g:d4836ac9acd0c991a4fe1dec9438773a2c4eb5ac

commit r12-8263-gd4836ac9acd0c991a4fe1dec9438773a2c4eb5ac
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Tue Apr 26 09:57:34 2022 +0200

    reassoc: Don't call fold_convert if !fold_convertible_p [PR105374]
    
    As mentioned in the PR, we ICE because maybe_fold_*_comparisons returns
    an expression with V4SImode type and we try to fold_convert it to
    V4BImode, which isn't allowed.
    
    IMHO no matter whether we change maybe_fold_*_comparisons we should
    play safe on the reassoc side and punt if we can't convert like
    we punt for many other reasons.  This fixes the testcase on ARM.
    
    Testcase not included, not exactly sure where and what directives it
    should have in gcc.target/arm/ testsuite.  Christophe, do you think you
    could handle that incrementally?
    
    2022-04-26  Jakub Jelinek  <jakub@redhat.com>
    
            PR tree-optimization/105374
            * tree-ssa-reassoc.cc (eliminate_redundant_comparison): Punt if
            !fold_convertible_p rather than assuming fold_convert must succeed.

Diff:
---
 gcc/tree-ssa-reassoc.cc | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/gcc/tree-ssa-reassoc.cc b/gcc/tree-ssa-reassoc.cc
index f41b3c9a004..43b25371d4b 100644
--- a/gcc/tree-ssa-reassoc.cc
+++ b/gcc/tree-ssa-reassoc.cc
@@ -2254,7 +2254,11 @@ eliminate_redundant_comparison (enum tree_code opcode,
 	 BIT_AND_EXPR or BIT_IOR_EXPR was of a wider integer type,
 	 we need to convert.  */
       if (!useless_type_conversion_p (TREE_TYPE (curr->op), TREE_TYPE (t)))
-	t = fold_convert (TREE_TYPE (curr->op), t);
+	{
+	  if (!fold_convertible_p (TREE_TYPE (curr->op), t))
+	    continue;
+	  t = fold_convert (TREE_TYPE (curr->op), t);
+	}
 
       if (TREE_CODE (t) != INTEGER_CST
 	  && !operand_equal_p (t, curr->op, 0))


                 reply	other threads:[~2022-04-26  7:58 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220426075812.D766D3858D37@sourceware.org \
    --to=jakub@gcc.gnu.org \
    --cc=gcc-cvs@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).