Я использую следующие флаги для получения отчета о векторизации от g++
во время компиляции:
-O3 -march=native -mtune=native -g -fopt-info-vec-all=<filename>
Отчет помог мне ускорить многие места в моем коде, но теперь я застрял, пытаясьчтобы найти утверждения, которые GCC считает возможными с указателями.
Сообщения в сгенерированном файле часто выглядят так:
my_file.h:78:35: note: versioning for alias required: can't determine dependence between MEM[(const struct lookup_table *)this_61(D) + 512B].x0_ and MEM[(double &)_219]
93709 consider run-time aliasing test between MEM[(const struct lookup_table *)this_61(D) + 512B].x0_ and MEM[(double &)_219]
...
my_file.h:78:35: note: bad data dependence.
Хотя я знаю, что такое lookup_table::x0_
, я пытаюсьнайти _219
в моем коде.Это очень помогло бы, если бы был способ разобрать (или символизировать) такие имена.Или найдите область, в которой GCC не может утверждать независимость обеих областей памяти.
Возможно ли это?