[Bug tree-optimization/118132] New: Vectorize optimization generates obsolete code, which causes significant performance drop
German.Andryeyev at amd dot com
gcc-bugzilla@gcc.gnu.org
Thu Dec 19 16:53:02 GMT 2024
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118132
Bug ID: 118132
Summary: Vectorize optimization generates obsolete code, which
causes significant performance drop
Product: gcc
Version: 11.4.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: German.Andryeyev at amd dot com
Target Milestone: ---
Created attachment 59926
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=59926&action=edit
A C++ sample that exposes a problem with tree-vectorize optimization
- The attached zip file contains a trivial program(main.cpp, dispatch.cpp,
dispatch.hpp) and a script to compile the program (build.sh)
- The script accepts 2 options 0 and 1. 0 - disables vectorize for one function
and 1 - enables
- The portion of the code that will disable tree-vectorize
#if !VECTORIZE
__attribute__((optimize("no-tree-vectorize")))
#endif
const DispatchTable* GetDispatchTable() {
static auto* _v = &GetDispatchTableImpl<DispatchTable>();
return _v;
}
- The issue: compiler adds extra instructions which will fill the struct on the
stack unconditionally for every invocation of GetDispatchTable() and then drops
that.
More information about the Gcc-bugs
mailing list