clang
Miroslav Mraz
mrazik na volny.cz
Sobota Červenec 30 21:24:06 CEST 2022
Zdravím,
dnešní deštivý den jsem zkusil zasvětit testování překladače clang. A
vypadá to, že v některých ohledech začíná být lepší než gcc.
Protože píšu většinou v c++, zkusil jsem co to udělá, když napíšu třeba
výpočet těch koeficientů kubických splajnů přímo v konstruktoru jako
constexpr. Tedy že se spočítají přímo z konstantní tabulky hodnot už za
překladu. Není to zase taková legrace, řeší se tam soustava rovnic s
pásovou maticí, ale jde to najít na webu, takže zas takový problém to
není. Vycházel jsem z toho, že dnešní překladače, pokud jsou jim známy
všechny parametry při překladu, provedou výpočet a výsledek uloží.
Není tomu tak. G++, když je ten kód netriviální, tak ho spustí v run
time a výsledek i když je deklarován jako read only, uloží do RAM.
Clang++ to však opravdu spočítá při překladu, kód pro tento výpočet
zahodí a výsledek umí dát do .rodata.
Funguje to jak pro arm (thumb), tak pro avr, u když pro avr se
koeficienty uloží do RAM místo do flash, ale není divu, práce s flash je
v avr divná. Ale funguje to.
Používáte někdo clang pro architekturu avr ? Vypadá to, že už není
označen jako experimental.
Mrazík
Další informace o konferenci Hw-list