# Поддерживаемые GNU __attribute__’ы

Warning

На данный момент документ находится в процессе написания и является неполным

В данном документе описываются только те __attribute__’ы, которые позаимствованы у gcc. Собственные builtin’ы описаны в статье Поддерживаемые MCST __attribute__’ы

Компилятор номинально совместим с gcc-9.3.0. Здесь мы перечислим ссылки на отдельные пункты из документации по gcc-9.3.0, посвящённые __attribute__’ам, и описанием того, что из всего множества поддержано в lcc

- 6.33.1 Common Function Attributes

  Поддержано с ограничениями:

  optimize (string, …)
    Поддержаны только следующие опции:
    `-O0`, `-O1`, `-O2`, `-O3`, `-O4`, `-Og`, `-Ominimal`, `-Osize`, `-Ofast`
    `-faligned`, `-fno-aligned`
    `-fassociative-math`, `-fno-associative-math`
    `-fcx-limited-range`, `-fno-cx-limited-range`
    `-fext-strict-aliasing`, `-fno-ext-strict-aliasing`
    `-ffast` (без `-fstdlib`)
    `-ffast-math`
    `-ffinite-math-only`, `-fno-finite-math-only`
    `-fforce-inline`
    `-finline-to-small-functions`
    `-floop-apb-conditional-loads`, `-fno-loop-apb-conditional-loads`
    `-fmalloc-opt`, `-fno-malloc-opt`
    `-fmath-errno`, `-fno-math-errno`
    `-fprefetch`, `-fno-prefetch`
    `-frestrict-all`
    `-frestrict-params`
    `-frounding-math`, `-fno-rounding-math`
    `-fsignaling-nans`, `-fno-signaling-nans`
    `-fspec-fp`, `-fno-spec-fp`
    `-fstrict-aliasing`, `-fno-strict-aliasing`
    `-funsafe-math-optimizations`, `-fno-unsafe-math-optimizations`
    Опции, не попадающие в этот список, но являющиеся поддерживаемыми в компиляторе опциями, начинающимися на -f, молча игнорируются

- 6.34.1 Common Variable Attributes

  Поддержано с ограничениями:

  cleanup (cleanup_function)
    Поддержано только для языка C. Поддержан только вызов функции `cleanup_function` при прямом выходе из функции. НЕ поддержан вызов функции `cleanup_function` при прохождении исключения C++ через текущую функцию