Wpis z mikrobloga

@terion: Ej, a nie wystarczy włączyć optymalizacji, by kompilator sobie zinline'ował ffsl? Tak przynajmniej godbolt mówi, i to już przy O1: https://godbolt.org/z/aywhhJ
Prawdopodobnie coś przeoczyłem, mógłbyś wrzucić na jakiegoś godbolta przykład, w którym mimo włączonych optymalizacji funkcja ffsl nie została zinline'owana?

Swoją Dzięki za wpis, uwielbiam czytać takie artykuły ()
@b33zon:
Hej. Nie chodzi o optymalizację.
Dodaj sobie przełącznik -std=c++11 albo -std=c++17 i ffsl() będzie wołane, a nie inlineowane.
Ale faktycznie jestem zaskoczony, że na domyślnych ustawieniach beż żadnych flag jest włączone -std=gnu++11

Generalnie wniosek z tego taki, że warto mieć włączone i -std=gnu++XX i używać builtin, bo z jednej strony są jakieś dodatkowe optymalizacje, a z drugiej strony dla builtin jest lepsza gwarancja, że będzie zawsze inline.
@b33zon:
Fakt, chyba tu jest odpowiedź na moje pytanie:

Outside strict ISO C mode (-ansi, -std=c90, -std=c99 or -std=c11), the functions exit, alloca, bcmp, bzero, dcgettext, dgettext, dremf, dreml, drem, exp10f, exp10l, exp10, ffsll, ffsl, ffs, fprintfunlocked, fputsunlocked, gammaf, gammal, gamma, gammafr, gammalr, gammar, gettext, index, isascii, j0f, j0l, j0, j1f, j1l, j1, jnf, jnl, jn, lgammafr, lgammalr, lgammar, mempcpy, pow10f, pow10l, pow10,