Mi to spíš přijde, že clang umí líp autovektorizaci. Třeba ten GraphicsMagick benchmark je úplně jasný. Ze zkušenosti vím, že pokud překladač zvektorizuje jen část nějaké smyčky (nebo nic), tak je to obrovský problém v porovnání s překladačem, co to zvládne celé. Druhá věc může být i jiný limit pro inlining. Jestli je clang třeba agresivnější než GCC ale nevim - když chci inline, tak __attribute__((always_inline)) a nemusím to řešit :)
Obecně na -O3 je GCC agresivnější v inliningu i vektorizaci. Celkem pravidelně to měříme na SPEC a TSMC benchmarku, kde GCC v průměru vede.
Díval jsem se zatím na jpegxl, kde je rozdíl největší. Překládá se to pomocí cmake a explicitně přidávají na konec CMAKE_CXX_RELEASE_FLAGS -O2 takže i když člověk nastaví -O3 z command line tak se to přepne na -O2. Překladač pak volá jako -O3 ... -O2 -DNDEBUG, což GCC interpretuje jako -O2
Na -O2 má clang agresivnější nastavení vektorizéru: dovolí si generovat větší kód ale víc vektorizuje. Možná je to tím. Mrknu na to.
Problém Phoronixu je, že se moc nesnaží udělat benchmarky zodpovědně. Jde hlavně o to vyrobit článek, co na který lidi kliknou.