Поддерживаемые GNU __attribute__'ы
==================================

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

В данном документе описываются только те __attribute__'ы, которые позаимствованы у gcc. Собственные builtin'ы описаны в статье :doc:`attribute_mcst`

Компилятор номинально совместим с gcc-9.3.0. Здесь мы перечислим ссылки на отдельные пункты из `документации по gcc-9.3.0 <https://gcc.gnu.org/onlinedocs/gcc-9.3.0/gcc/>`_, посвящённые __attribute__'ам, и описанием того, что из всего множества поддержано в lcc

* `6.33.1 Common Function Attributes <https://gcc.gnu.org/onlinedocs/gcc-9.3.0/gcc/Common-Function-Attributes.html#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 <https://gcc.gnu.org/onlinedocs/gcc-9.3.0/gcc/Common-Variable-Attributes.html#Common-Variable-Attributes>`_

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

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


