https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110743

--- Comment #15 from Richard Biener <rguenth at gcc dot gnu.org> ---
(In reply to Arnd Bergmann from comment #14)
> Created attachment 64837 [details]
> unreduced preprocessed source file
> 
> Unfortunately, I still see the issue on trunk, using 9579e3eb64ec ("fortran:
> Fix memory leak for array structure-constructor element [PR121972]", which
> includes the commit:
> 
> $ aarch64-linux-gcc --version
> aarch64-linux-gcc (GCC) 17.0.0 20260623 (experimental)
> $ aarch64-linux-gcc security/landlock/fs.i -std=gnu11 -fno-strict-aliasing
> -fms-extensions -mgeneral-regs-only -ftrivial-auto-var-init=pattern -c -O2
> -Werror -Wno-address-of-packed-member -Werror=uninitialized
> 
> /home/arnd/arm-soc/security/landlock/fs.c: In function
> 'is_access_to_paths_allowed':
> /home/arnd/arm-soc/security/landlock/fs.c:767:28: error:
> '_layer_masks_child1' is used uninitialized [-Werror=uninitialized]
>   767 |         struct layer_masks _layer_masks_child1, _layer_masks_child2;
>       |                            ^~~~~~~~~~~~~~~~~~~

Thanks, this shows

  layer_masks = .DEFERRED_INIT (64, 1, &"layer_masks"[0]);
  vect__22.425_124 = MEM <vector(2) long int> [(struct layer_masks
*)&layer_masks];
  vect__22.426_78 = MEM <vector(2) long int> [(struct layer_masks
*)&layer_masks + 16B];
  vect__22.427_121 = MEM <vector(2) long int> [(struct layer_masks
*)&layer_masks + 32B];
  vect__22.428_123 = MEM <vector(2) long int> [(struct layer_masks
*)&layer_masks + 48B];
  _136 = VIEW_CONVERT_EXPR<uint128_t>(vect__22.425_124);
  _138 = _136 & 0x3ffff0003ffff0003ffff0003ffff;
  _139 = VIEW_CONVERT_EXPR<vector(2) long int>(_138);
  _140 = VIEW_CONVERT_EXPR<uint128_t>(vect__22.426_78);
  _142 = _140 & 0x3ffff0003ffff0003ffff0003ffff;
  _143 = VIEW_CONVERT_EXPR<vector(2) long int>(_142);
  _144 = VIEW_CONVERT_EXPR<uint128_t>(vect__22.427_121);
  _146 = _144 & 0x3ffff0003ffff0003ffff0003ffff;
  _147 = VIEW_CONVERT_EXPR<vector(2) long int>(_146);
  _148 = VIEW_CONVERT_EXPR<uint128_t>(vect__22.428_123);
  _150 = _148 & 0x3ffff0003ffff0003ffff0003ffff;
  _151 = VIEW_CONVERT_EXPR<vector(2) long int>(_150);
  MEM <vector(2) long int> [(struct layer_masks *)&layer_masks] = _139;
  MEM <vector(2) long int> [(struct layer_masks *)&layer_masks + 16B] = _143;
  MEM <vector(2) long int> [(struct layer_masks *)&layer_masks + 32B] = _147;
  MEM <vector(2) long int> [(struct layer_masks *)&layer_masks + 48B] = _151;

that's easy to deal with.  This is emitted from word_mode vectorization:

/home/arnd/arm-soc/security/landlock/fs.c:1649:21: missed: op not supported by
target.
/home/arnd/arm-soc/security/landlock/fs.c:1649:21: note: proceeding using word
mode.

Reply via email to