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)