aa204d5118
The IFN_MASK* functions take two leading arguments: a load or store pointer and a “cookie”. The type of the cookie is the type of the access for TBAA purposes (like for MEM_REFs) while the value of the cookie is the alignment of the access. This PR was caused by a disagreement about whether the alignment is measured in bits or bytes. It looks like this goes back to PR68786, which made the vectoriser create its own cookie argument rather than reusing the one created by ifcvt. The alignment value of the new cookie was measured in bytes (as needed by set_ptr_info_alignment) while the existing code expected it to be measured in bits. The folds I added for IFN_MASK_LOAD and STORE then made things worse. gcc/ PR tree-optimization/95401 * config/aarch64/aarch64-sve-builtins.cc (gimple_folder::load_store_cookie): Use bits rather than bytes for the alignment argument to IFN_MASK_LOAD and IFN_MASK_STORE. * gimple-fold.c (gimple_fold_mask_load_store_mem_ref): Likewise. * tree-vect-stmts.c (vectorizable_store): Likewise. (vectorizable_load): Likewise. gcc/testsuite/ PR tree-optimization/95401 * g++.dg/vect/pr95401.cc: New test. * g++.dg/vect/pr95401a.cc: Likewise. |
||
---|---|---|
.. | ||
param-max-aliased-pr26197.cc | ||
pr19951.cc | ||
pr21218.cc | ||
pr21734_1.cc | ||
pr21734_2.cc | ||
pr22543.cc | ||
pr33426-ivdep-2.cc | ||
pr33426-ivdep-3.cc | ||
pr33426-ivdep-4.cc | ||
pr33426-ivdep.cc | ||
pr33834_1.cc | ||
pr33834_2.cc | ||
pr33835.cc | ||
pr33860.cc | ||
pr33860a.cc | ||
pr36648.cc | ||
pr37143.C | ||
pr37174.cc | ||
pr43771.cc | ||
pr44861.cc | ||
pr45470-a.cc | ||
pr45470-b.cc | ||
pr50698.cc | ||
pr51485.cc | ||
pr58513.cc | ||
pr60000.cc | ||
pr60023.cc | ||
pr60559.cc | ||
pr60729.cc | ||
pr60836.cc | ||
pr60896.cc | ||
pr61171.cc | ||
pr64410.cc | ||
pr68145.cc | ||
pr68762-1.cc | ||
pr68762-2.cc | ||
pr68762.h | ||
pr70726.cc | ||
pr70729-nest.cc | ||
pr70729.cc | ||
pr70944.cc | ||
pr71483.c | ||
pr84362.cc | ||
pr84556.cc | ||
pr87621.cc | ||
pr87914.cc | ||
pr89653.cc | ||
pr92595.cc | ||
pr95290.cc | ||
pr95297.cc | ||
pr95401.cc | ||
pr95401a.cc | ||
pr95487.cc | ||
pr95576.cc | ||
pr96022.cc | ||
pr96163.cc | ||
pr97255.cc | ||
pr97347.cc | ||
pr98064.cc | ||
simd-1.cc | ||
simd-2.cc | ||
simd-3.cc | ||
simd-4.cc | ||
simd-5.cc | ||
simd-6.cc | ||
simd-7.cc | ||
simd-8.cc | ||
simd-9.cc | ||
simd-10.cc | ||
simd-11.cc | ||
simd-12.cc | ||
simd-bool-comparison-1.cc | ||
simd-bool-comparison-2.cc | ||
simd-clone-1.cc | ||
simd-clone-2.cc | ||
simd-clone-2.h | ||
simd-clone-3.cc | ||
simd-clone-4.cc | ||
simd-clone-4.h | ||
simd-clone-5.cc | ||
simd-clone-6.cc | ||
simd-clone-7.cc | ||
simd-mask-store-bool.cc | ||
slp-pr50413.cc | ||
slp-pr50819.cc | ||
slp-pr56812.cc | ||
slp-pr87105.cc | ||
slp-pr92516.cc | ||
slp-pr97636.cc | ||
vec-cond-expr-eh.C | ||
vect.exp |