Reputation: 587
I'm currently trying to understand the output of the gcc Vectorizer.
I compiled my program using -O2 -ftree-vectorize -fopt-info-vec-all
and gcc 8.2.0.
However, I do not understand, what is meant by some of the output messages, and cannot seem to find explanations on the internet.
What is meant by PHI in the following examples?
test.c:14: note: Analyze phi: i_53 = PHI <i_18(7), 0(5)>
test.c:14: note: Access function of PHI: {1024, +, 4294967295}_2
And what is the problem here?
test.c:5: note: not vectorized: not enough data-refs in basic block.
Any help is greatly appreciated.
(I'm not looking for help in solving the issues atm, just trying to understand what they are in the first place)
Upvotes: 0
Views: 246
Reputation: 58162
As to your first question, Phi
or 𝛷 functions are a concept in compiler design. At this stage it appears the compiler is expressing your program in static single assignment form, in which every variable can only be written once, and 𝛷 functions are used to select values from among different variables which may not all exist at a given point in a program.
See https://gcc.gnu.org/onlinedocs/gccint/SSA.html for a gcc-specific description.
I don't know the answer to your second question.
Upvotes: 2