Ok, funguje. Ale hází stejný výsledek jako GCC i před tím, takže Clang je drobek přísnější
To není primárně o přísnosti. Jak GCC tak Clang při optimalizacích využívají nedefinované chování dost agresivně. V různých situacích se to může a nemusí projevit, protože jejich optimalizátory pracují každý trošku jinak. Výsledek může vypadat dost chaoticky. Například tu funkci můžou "rozbít" úpravy na úplně jiném místě v kódu.
Rozhodně bych se nespoléhal na to, že GCC (nebo i jakýkoliv jiný překladač) se bude kolem neinicializovaných proměnných chovat nějak příčetně. Že ta funkce vrátí nějaký binec je ještě celkem intuitivní chování, ale už jsem viděl i docela divoké věci.