From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1971) id 3A6FD3858D37; Tue, 14 Mar 2023 09:53:33 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 3A6FD3858D37 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1678787613; bh=HSkp2THRG8/ERbEhmzLvi+loNiT04nTztEXlKE2NO7M=; h=From:To:Subject:Date:From; b=x4ZggqMWUV0Jl1fi/3fprsf+Uh5RjFnOxM/o4dPlPjde7Af5+8uk1WdUqansdvWyw 1KQWwZYYrBySagGyYCy8Ns1mWeWPnVpI74SI+lQ7QKpblMPsh6q0+KXXBpujno1z7z 5xJzQvIuPVh4nGHeTUSxJllBd+u7d8c7XcfGm/Ns= MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Andre Simoes Dias Vieira To: gcc-cvs@gcc.gnu.org Subject: [gcc r13-6654] ifcvt: Lower bitfields only if suitable for scalar register [PR 109005] X-Act-Checkin: gcc X-Git-Author: Andre Vieira X-Git-Refname: refs/heads/master X-Git-Oldrev: 72b52751c60abb327c73716259485d04b8eabe4f X-Git-Newrev: b109964ddb421cf481828a2f3465751a2bd6a8f6 Message-Id: <20230314095333.3A6FD3858D37@sourceware.org> Date: Tue, 14 Mar 2023 09:53:33 +0000 (GMT) List-Id: https://gcc.gnu.org/g:b109964ddb421cf481828a2f3465751a2bd6a8f6 commit r13-6654-gb109964ddb421cf481828a2f3465751a2bd6a8f6 Author: Andre Vieira Date: Tue Mar 14 09:51:38 2023 +0000 ifcvt: Lower bitfields only if suitable for scalar register [PR 109005] This patch fixes the condition check for eligilibity of lowering bitfields, where before we would check for non-BLKmode types, in the hope of excluding unsuitable aggregate types, we now check directly the representative is not an aggregate type, i.e. suitable for a scalar register. gcc/ChangeLog: PR tree-optimization/109005 * tree-if-conv.cc (get_bitfield_rep): Replace BLKmode check with aggregate type check. Diff: --- gcc/tree-if-conv.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gcc/tree-if-conv.cc b/gcc/tree-if-conv.cc index f133102ad33..ca1abd8656c 100644 --- a/gcc/tree-if-conv.cc +++ b/gcc/tree-if-conv.cc @@ -3317,9 +3317,9 @@ get_bitfield_rep (gassign *stmt, bool write, tree *bitpos, tree field_decl = TREE_OPERAND (comp_ref, 1); tree rep_decl = DECL_BIT_FIELD_REPRESENTATIVE (field_decl); - /* Bail out if the representative is BLKmode as we will not be able to - vectorize this. */ - if (TYPE_MODE (TREE_TYPE (rep_decl)) == E_BLKmode) + /* Bail out if the representative is not a suitable type for a scalar + register variable. */ + if (!is_gimple_reg_type (TREE_TYPE (rep_decl))) return NULL_TREE; /* Bail out if the DECL_SIZE of the field_decl isn't the same as the BF's