https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108910
Bug ID: 108910
Summary: [13 Regression] Further ICE in aarch64_layout_arg
Product: gcc
Version: 13.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: jakub at gcc dot gnu.org
Target Milestone: ---
extern void foo (float, float *, float *);
void
bar (void *p)
{
float *__attribute__((aligned (64))) q = __builtin_assume_aligned (p, 64);
foo (0.0f, q, q);
}
ICEs on aarch64-linux with -O2 likely since r13-5124 with:
during RTL pass: expand
woohoo.c: In function ‘bar’:
woohoo.c:7:3: internal compiler error: in aarch64_layout_arg, at
config/aarch64/aarch64.cc:7688
7 | foo (0.0f, q, q);
| ^~~~~~~~~~~~~~~~
0x12c4993 aarch64_layout_arg
../../gcc/config/aarch64/aarch64.cc:7688
0x12c527a aarch64_function_arg
../../gcc/config/aarch64/aarch64.cc:7868
0xa44efb initialize_argument_information
../../gcc/calls.cc:1499
I know trying to overalign a pointer type (rather than what it points to) is
very dumb,
but some real-world code (most likely just by mistake (but many)) does that:
https://github.com/darktable-org/darktable/blob/master/src/common/bspline.h#L178