https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97891
--- Comment #6 from Hongtao.liu <crazylht at gmail dot com> ---
cat test.c
typedef struct {
long a;
long b;
}TI;
extern TI r;
void
foo ()
{
r.a = 0;
r.b = 0;
}
gcc -Ofast -march=cascadelake -S got
foo:
.LFB0:
.cfi_startproc
movq $0, r(%rip)
movq $0, r+8(%rip)
ret
.cfi_endproc
.LFE0:
SLP failed to vectorize due to cost
test1.c:10:7: note: === vect_slp_analyze_instance_alignment ===
test1.c:10:7: note: vect_compute_data_ref_alignment:
test1.c:10:7: note: can't force alignment of ref: r.a
test1.c:10:7: note: === vect_slp_analyze_instance_dependence ===
test1.c:10:7: note: === vect_slp_analyze_operations ===
test1.c:10:7: note: ==> examining statement: r.a = 0;
test1.c:10:7: note: vect_is_simple_use: operand 0, type of def: constant
test1.c:10:7: note: Vectorizing an unaligned access.
test1.c:10:7: note: vect_model_store_cost: unaligned supported by hardware.
test1.c:10:7: note: vect_model_store_cost: inside_cost = 16, prologue_cost =
0 .
test1.c:10:7: note: === vect_bb_partition_graph ===
test1.c:10:7: note: ***** Analysis succeeded with vector mode V16QI
test1.c:10:7: note: SLPing BB part
0x48bc3d0 0 1 times unaligned_store (misalign -1) costs 16 in body
0x48bc3d0 <unknown> 1 times vector_load costs 12 in prologue
0x48bbf50 0 1 times scalar_store costs 12 in body
0x48bbf50 0 1 times scalar_store costs 12 in body
test1.c:10:7: note: Cost model analysis:
Vector inside of basic block cost: 16
Vector prologue cost: 12
Vector epilogue cost: 0
Scalar cost of basic block: 24
Shouldn't cost of zero vector CTOR be different from normal ones?
Since x86 could have pxor, similar for aarch64 (eor??).