GCC - The Complete Reference (537669), страница 116
Текст из файла (страница 116)
При этом для возможности идентификации вызываемой функции должна существовать и быть доступной ее отдельная, т.е, не подстанавливаемая кодом определения (поп-1пйпе), версия. Даже если все ее вызовы генерируются подстановкой. Для предотвращения расширения вызовов функции подстановкой ее кода при ее объявлении следует использовать атрибут по апвсхшаепс гппссзоп. Применение этого атрибута может быть необходимым для обработчиков прерываний и для функций, из которых не могут вызываться профнлируюшие подпрограммы.
См. также раздел главы 4 "Атрибуты". -йп1пп-саяе-прес Гог1гап Поле врес указывает регистр буквенных знаков (строчные/заглавные), используемый в именах встроенных функций ((пгппгйс пагпез). Возможны следуюшие значения врес; ° 1пхссар — Слово начинается с заглавной буквы н все остальные буквы— строчные. ° баррет — Все слово должно быть написано заглавными буквами. ° 1оиех — Все слово должно быть написано строчными буквами. Действует по умолчанию. ° апу — Допускается любой порядок использования строчных и заглавных букв.
См. также -хгваеп-саве-, -хвоигсе-саве-, -хвувЬо1-саве- и -хсаве-. -Цп( Для компиляции при этой опции системно-ориентированных метолов (пайче тегпобз) используется интерфейс )М вместо применяемого по умолчанию интерфейса СМ. При этом также генерируются заглушки (вшбз) — исходные файлы для определений системно-ориентированных методов 3)чй -Веер-(пИпе-1ипс11опя Компилятор будет генерировать тело функции даже если все обрашения к ней расширяются подстановкой кода (шйпе) и действительные вызовы этой функции отсутствуют. По умолчанию действует обратная опция -хпо-веер-ап11пе-хппссаопв, по этой опции при отсутствии действителъных вызовов отдельный код определения Функции не генерируется.
-Веер-я1а1(с-сопя1д Если не применяются некоторые из уровней оптимизации, то опция действует по умолчанию. По этой опции всегда выаеляется память для размешения значений локальных констант, обращения к которым возможны только в пределах своего компиляционного модуля (рпчаге сопзгапгз). Память вьшеляется даже при отсутствии действительных обращений к ним. Для предотвращения выделения памяти неиспользуемым константам следует использовать обратную опцию -хпс-Кеер-всасдс-сопвев. Приложение Г. Опции командной строки компилятора ССС 523 -Леала!пя-цМегзсоге Эта опция применяет модификацию имен символов, которые записываются в объектный файл.
К началу таких имен символов добавляется знак подчеркивания " ". Действие этой опции можно отменить обратной опцией - Гпо-З.еабепд-ппбегв сохе. Допускается использование этой опции при выполнении попыток компоновки с наследуемым ассемблерным кодом (1еяасу аззегпЫег соде). -$гпаФ-сазе-зрес Еог1гап Поле врес указывает регистр буквенных знаков (строчные/заглавные), используемый в ключевых словах (кеуэкогбз) языка Еогггал. Возможны следующие значения врвс: ° Зпегсар — Слово начинается с заглавной буквы и все остальные буквы— строчные.
° цррег — Все слово должно быть написано заглавными буквами. ° 1омег — Все слово должно быть написано строчными буквами. Действует по умолчанию. ° епу — Допускается любой порядок использования строчных и заглавных букв. См. также -гйпШп-саве-, -гвоигсе-саве-, -гвувЬо1-саве- и -гсаве-. -йпаг'и-еггпо Применяется по умолчанию.
Код ошибки результата вычисления таких математических функций как всгс [) записывается в глобальную переменную с именем еггпо. Использование обратной опции -гпо-жаСЬ-еггпо отменяет использование еггпо. Это может повлиять на обработку исключений, применяемую в соответствии со стандартом 1ЕЕЕ. См, также -Гйавс-кеасЬ. -йпепз-герогг По завершению компиляции выводится подробный отчет об использовании памяти для размещения каждого типа данных. В листинг также включается информация и о других выделениях памяти, используемой скомпилированной программой. -йпегпояе-! оо1(ырз С++ Кэширует последние внутренние обращения к таблице символов ((пгегпа1 зутЬо! 1оокпрз) для уменьшения затрат времени на следующие обращения.
ггпег9е аП-сопзтапгз Эта опция автоматически применяет опцию -Гтегде-сопвсвпсв. Кроме того, она применяет слияние дубликатов для строкового типа (згг(пяз) и для массивов (аггауз). Стандарты языков С и С++ требуют выделения отдельного расположения для всех элементов данных, поэтому использование этой опции может приводить к выработке объектного кода, несоответствующего стандартам. 524 Часть 1Ч. Приложения -йпегяе-соп51ап15 Выполняется попытка слияния значений для всех типов констант, кроме строк.
Слияние означает, что для всех констант, имеющих одинаковое значение, в памяти размещается только одна копия их значения. Опция действует по умолчанию при включении любого уровня оптимизации. Обратная опция -Гпо-ветде-сопвеапсв разрешает слияние констант только в пределах одного компиляционного модуля. -йпе55аяе-1епягп=йке Применяет форматирование сообщений об ошибках, выводимых компилятором. Сообщения разбиваются на строки, длина которых не превышает ай яе.
При указании значения о ограничение длины строки вывода не применяется, каждое сообщение выводится в одну строку. По умолчанию применяется значение 72 для языка С++, и о — для всех остальных языков. В некоторых случаях реализация атой опции отгугствуех Гогггап -ггп11-1ПХг)п51с5-5рес% Значение поля вресв определяет статус специфических встроенных функций (!пгппясз) стандарта МП -БТР-1753. Возможны следующие значения врвсв: ° епаЬХе — Встроенные функции М!(.-БТР-1753 распознаются и использование их возможно. Это значение применяется по умолчанию. ° Ьее)е — Встроенные функции М!(.-БТР-!753 распознаются, но для их использования при первом вызове такой функции слелует применить оператор ХнтнХндхсз.
° бХваЬХе — Встроенные функции МП -БТР-1753 распознаются, но их использование допускается только если перед именем каждой из них стоит оператор хятнхмвХся. ° беХесе — Встроенные функции стандарта М!Р-ВТР-1753 не распознаются компилятором. -йпоче-аИ-гпочаЫе5 Все инвариантные выражения выносятся за пределы кода цикла (!оор). При этом вырабатываемый код может как улучшиться, так и ухудшиться. Это зависит от структуры и вложенности циклов в исходном коде. По умолчанию ко всем языкам, кроме Роптал, применяется обратная опция -Хпо-воте-а11-вотаЬХев.
См. также опцию -Ххебцсе-а11-дети, С++ -ЙП5-ЕХ1ЕП51ОП5 Подавляет вывод предупредительных сообщений при использовании своеобразных конструкций, определенных для МГБ (М(сгозой Еоцпбаг!оп С!азз). Как то явное определение значением при объявлении переменных типа Хпс, или нестандартный синтаксис получения адресов методов класса. Приложение Г. Опции командной строки компилятора ОСС 525 -1пех1-гипбгпе Генерирует выходной код, совместимый со средой выполнения программ системы НеХТ. Действует по умолчанию при компиляции для систем, основанных на НеХТ, таких как Рагнпп и Мас ОБ Х.
-1по-* Любая опция, которая начинается с префикса "-гцо-" имеет противоположную форму своего представления без подстроки пдо-", то есть соответствующую обратную ей флаговую опцию с префиксом "-1". Именно такой формой она и представлена в алфавитном списке настоящего Приложения. Например, информацию об опции -спо-ког-всоре вы сможете найти в описании опции -ггог-всоре.
Было бы неверно при перечислении в этом списке использовать формы опций с префиксом "-спо-". Не для всех опций, которые начинаются с "-с", имеются противоположные формы с префиксом "-спо-". -1поп-саП-ехсербопэ Генерирует код, который делает возможным перехват инструкций для вызова исключений. (Таких инструкций, как, например, неправильные операции над числами с плавающей точкой или недопустимая адресация обращений к памяти.) Эта опция не может применяться универсально для всех платформ. Она требует наличия в среде выполнения программ специфической поддержки аппаратной базы.
Опция оказывает действие только на использование сигналов аппаратных прерываний, и не распространяется на применение общих сигналов. (Таких сигналов, как 31оъьм или 31отевм. См. также -гехсерейопв, -кипмепб-квЫев и -кавупсЬгопоив-цпизпб-еаЫев. -$попапя-Ьц1Шы С++ Действует по умолчанию. При использовании -гпо-попапвз-ьи11е1пв отключается автоматическое генерирование встроенных функций, использование которых не предусмотрено стандартами "АНЯ! С" и "1ЯО С". См. также -апвд н -кЬи11гйп. -1огпй-1гагпе-ро!п1ег Не сохраняет в регистре указатель кадра стека (Ггаще ро1пгег) для тех функций, которые не нуждаются в его использовании. При этом пропускается код сохранения и восстановления адреса и освобождается дополнительный регистр для общего использования.
Опция устанавливается автоматически при применении опции -о для всех уровней оптимизации, но только если отладчик (бебпййег) способен работать без указателя кадра стека. Если вы используете отладчик, не поддерживающий подобный режим отладки, то для применения этой опции ее следует указывать явным образом. На некоторых платформах указатель кадра стека не используется, в таких случаях опция не оказывает никакого действия.
По умолчанию применяется обратная опция -кпо-екает-кгщве-роепсег. 52б часть пг. приложения -$опе1г(р По этой опции каждый цикл ро булет выполняться по крайней мере один раз. Условие цикла проверяется после выполнения его кода, а не перед его выполнением. Некоторые компиляторы до станларта Рог(гап 77 ставили проверку условия в конце цикла, в то время как другие — в начале цикла. Начиная со стандарта Гог(гал 77 все компиляторы проверяют условие цикла перед его выполнением. Это означает, что когда вычисление выражения условия цикла дает результат "ложь", то тело цикла не будет выполнено ни разу. ГогСгап с++ -ГоРМпз(ле-ге9Ыег-(по)ге Оптимизирует распределение регистров, изменяя назначение тех регистров, которые используются в операциях перемещения (шоте) данных из одного расположения памяти в другое. Такая оптимизация особенно эффективна на машинах, имеющих инструкции прямого перемещения данных в памяти.