https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119297
Bug ID: 119297 Summary: Dead local vector variable isn't removed Product: gcc Version: 15.0 Status: UNCONFIRMED Keywords: missed-optimization Severity: normal Priority: P3 Component: middle-end Assignee: unassigned at gcc dot gnu.org Reporter: hjl.tools at gmail dot com Target Milestone: --- [hjl@gnu-tgl-3 gcc]$ cat /tmp/y.c typedef char vec_t __attribute__((vector_size(16))); extern void func1(vec_t); extern void func2(char); void set1(char val) { vec_t x; for (int i = 0; i < 16; i++) x[i] = val; func1(x); } void set2(char val) { char x = val *2; func2(x); } [hjl@gnu-tgl-3 gcc]$ ./xgcc -B./ -S -O2 -march=x86-64-v3 /tmp/y.c [hjl@gnu-tgl-3 gcc]$ cat y.s .file "y.c" .text .p2align 4 .globl set1 .type set1, @function set1: .LFB0: .cfi_startproc vmovd %edi, %xmm0 vpbroadcastb %xmm0, %xmm0 vmovdqa %xmm0, -24(%rsp) <<<<<<<< Dead local vector variable isn't removed. jmp func1 .cfi_endproc .LFE0: .size set1, .-set1 .p2align 4 .globl set2 .type set2, @function set2: .LFB1: .cfi_startproc addl %edi, %edi movsbl %dil, %edi jmp func2 .cfi_endproc .LFE1: .size set2, .-set2 .ident "GCC: (GNU) 15.0.1 20250314 (experimental)" .section .note.GNU-stack,"",@progbits [hjl@gnu-tgl-3 gcc]$