Dreana
Dreana

Reputation: 587

gcc Auto-Vectorization - Understanding output messages

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

Answers (1)

Nate Eldredge
Nate Eldredge

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

Related Questions