On Fri, 20 Oct 2023, Andre Vieira (lists) wrote:

> Hi,
> 
> This patch stops lowering of bitfields by ifcvt when they have non-constant
> offsets as we are not likely to be able to do anything useful with those
> during
> vectorization.  That also fixes the issue reported in PR 111882, which was
> being caused by an offset with a side-effect being lowered, but constants have
> no side-effects so we will no longer run into that problem.
> 
> Bootstrapped and regression tested on aarch64-unknown-linux-gnu.
> 
> OK for trunk?

+  if (!TREE_CONSTANT (DECL_FIELD_OFFSET (rep_decl))
+      || !TREE_CONSTANT (DECL_FIELD_BIT_OFFSET (rep_decl))
+      || !TREE_CONSTANT (ref_offset)
+      || !TREE_CONSTANT (DECL_FIELD_BIT_OFFSET (field_decl)))
+    return NULL_TREE;

DECL_FIELD_BIT_OFFSET is always constant.  Please test
TREE_CODE (..) == INTEGER_CST instead of TREE_CONSTANT.


OK with those changes.

Richard.


> gcc/ChangeLog:
> 
>       PR tree-optimization/111882
>       * tree-if-conv.cc (get_bitfield_rep): Return NULL_TREE for bitfields
>       with
>       non-constant offsets.
> 
> gcc/testsuite/ChangeLog:
> 
>       * gcc.dg/vect/pr111882.c: New test.
> 

-- 
Richard Biener <rguent...@suse.de>
SUSE Software Solutions Germany GmbH,
Frankenstrasse 146, 90461 Nuernberg, Germany;
GF: Ivo Totev, Andrew McDonald, Werner Knoblich; (HRB 36809, AG Nuernberg)

Reply via email to