Compilers
Als de bovenstaande code in SSA-vorm wordt gebracht, komt na het if-statement een uitdrukking zoals "x3 = φ(x1, x2)". Welke uitspraak over de werking van deze φ-functie is juist?
if (c) x = 1;
else x = 2;
y = x + 3;
- AHij kiest de grootste van x1 en x2 en geeft die terug
- BHij berekent de som van x1 en x2 en geeft die terug
- CHij kiest x1 of x2, afhankelijk van langs welk pad is gekomen
Antwoord en toelichting tonen
Antwoord: C. Hij kiest x1 of x2, afhankelijk van langs welk pad is gekomen
In SSA-vorm krijgen de toewijzing in de then-tak en die in de else-tak verschillende namen, x1 en x2, zodat moet worden aangegeven welke x in de berekening van y na het samenkomen moet worden gebruikt. De φ-functie is een notatie voor de keuze van de waarde op het samenvoegpunt: komt de uitvoering uit de then-tak, dan x1, en uit de else-tak, dan x2. In echte machinecode bestaat geen φ-instructie; deze wordt ten slotte vervangen door bijvoorbeeld registerkopieën. Grootte of som van waarden doet er niet toe.