Hi Andre, > The bitposition calculation for the bitfield lowering in loop if conversion > was not > taking DECL_FIELD_OFFSET into account, which meant that it would result in > wrong bitpositions for bitfields that did not end up having representations > starting at the beginning of the struct. > > Bootstrappend and regression tested on aarch64-none-linux-gnu and > x86_64-pc-linux-gnu.
I tried this patch together with the one for PR tree-optimization/107226 on sparc-sun-solaris2.11 to check if it cures the bootstrap failure reported in PR tree-optimization/107232. While this restores bootstrap, several of the new tests FAIL: +FAIL: gcc.dg/vect/vect-bitfield-read-1.c -flto -ffat-lto-objects scan-tree-dump-times vect "vectorized 1 loops" 1 +FAIL: gcc.dg/vect/vect-bitfield-read-1.c scan-tree-dump-times vect "vectorized 1 loops" 1 +FAIL: gcc.dg/vect/vect-bitfield-read-2.c -flto -ffat-lto-objects scan-tree-dump-times vect "vectorized 1 loops" 1 +FAIL: gcc.dg/vect/vect-bitfield-read-2.c scan-tree-dump-times vect "vectorized 1 loops" 1 +FAIL: gcc.dg/vect/vect-bitfield-read-3.c -flto -ffat-lto-objects scan-tree-dump-times vect "vectorized 2 loops" 1 +FAIL: gcc.dg/vect/vect-bitfield-read-3.c scan-tree-dump-times vect "vectorized 2 loops" 1 +FAIL: gcc.dg/vect/vect-bitfield-read-4.c -flto -ffat-lto-objects scan-tree-dump-times vect "vectorized 1 loops" 1 +FAIL: gcc.dg/vect/vect-bitfield-read-4.c scan-tree-dump-times vect "vectorized 1 loops" 1 +FAIL: gcc.dg/vect/vect-bitfield-read-6.c -flto -ffat-lto-objects scan-tree-dump-times vect "vectorized 1 loops" 1 +FAIL: gcc.dg/vect/vect-bitfield-write-1.c -flto -ffat-lto-objects scan-tree-dump-times vect "vectorized 1 loops" 1 +FAIL: gcc.dg/vect/vect-bitfield-write-1.c scan-tree-dump-times vect "vectorized 1 loops" 1 +FAIL: gcc.dg/vect/vect-bitfield-write-2.c -flto -ffat-lto-objects scan-tree-dump-times vect "vectorized 1 loops" 1 +FAIL: gcc.dg/vect/vect-bitfield-write-2.c scan-tree-dump-times vect "vectorized 1 loops" 1 +FAIL: gcc.dg/vect/vect-bitfield-write-3.c -flto -ffat-lto-objects scan-tree-dump-times vect "vectorized 1 loops" 1 +FAIL: gcc.dg/vect/vect-bitfield-write-3.c scan-tree-dump-times vect "vectorized 1 loops" 1 +FAIL: gcc.dg/vect/vect-bitfield-write-5.c -flto -ffat-lto-objects scan-tree-dump-times vect "vectorized 1 loops" 1 +FAIL: gcc.dg/vect/vect-bitfield-write-5.c scan-tree-dump-times vect "vectorized 1 loops" 1 For vect-bitfield-read-1.c, the dump has gcc.dg/vect/vect-bitfield-read-1.c:25:23: note: ==> examining pattern def statement: patt_31 = patt_30 >> 1; gcc.dg/vect/vect-bitfield-read-1.c:25:23: note: ==> examining statement: patt_31 = patt_30 >> 1; gcc.dg/vect/vect-bitfield-read-1.c:25:23: note: vect_is_simple_use: operand _ifc__27 & 4294967294, type of def: internal gcc.dg/vect/vect-bitfield-read-1.c:25:23: note: vect_is_simple_use: vectype vector(2) unsigned int gcc.dg/vect/vect-bitfield-read-1.c:25:23: note: vect_is_simple_use: operand 1, type of def: constant gcc.dg/vect/vect-bitfield-read-1.c:25:23: missed: op not supported by target. gcc.dg/vect/vect-bitfield-read-1.c:23:1: missed: not vectorized: relevant stmt not supported: patt_31 = patt_30 >> 1; gcc.dg/vect/vect-bitfield-read-1.c:25:23: missed: bad operation or unsupported loop bound. gcc.dg/vect/vect-bitfield-read-1.c:25:23: note: ***** Analysis failed with vector mode V2SI Rainer -- ----------------------------------------------------------------------------- Rainer Orth, Center for Biotechnology, Bielefeld University