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