0
votes

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)

1

1 Answers

2
votes

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.