GCC - The Complete Reference (537669), страница 115
Текст из файла (страница 115)
Опция автоматически устанавливается при использовании уровня оптимизаций -02, -03 и -ов. При необходимости она может быть отменена обратной опцией -йпо-деве. .См. также --регат. -1дсве-!пз Выполняет оптимизацию СБЕ исключения общих глобальных подвыражений с определением операций загрузки и сохранения данных внутри цикла в случаях, когда операция загрузки не может быть вынесена перед началом цикла.
Опция автоматически устанавливается опциями -02, -0З и -ов. При необходилюсти она может быть отключена обратной опцией -спо-дсве-1вь См. также --рвкавь -19сде-ьпз Выполняет оптимизацию СБЕ исключения общих глобальных подвыражений с определением операций загрузки и сохранения данных внутри цикла, когда операция сохранения не может вынесена за конец цикла. Опция автоматически устанавливается опциями -02, -03 и -ов.
При необходимости она может быть отключена обратной опцией -Спо-деве-ввь См. также --рахавь -19!0Ьа!з Ео агап Действует по умолчанию. Включает диагностику ситуации конфликта глобальных имен, когда уже имеется определенная с тем же именем процедура, использующая другие типы аргументов вызова.
Указание обратной опции -Спо-д1оЬа1в отключает эту диагностику. При этом также отключается подстановка кода, что позволяет в ряде случаев избежать аварийного завершения компиляции из-за некорректной выработки кода. Розга п -1дпи-!пСг!пясть-зресз Значение поля вресв определяет возможность использования специфических встроенных функций Ппгг|пз1сз) ОМБ, которые имеют некорректную форму относительно определений применяемого стандарта языка Гогггап. Возможны следующие значения вресв: ° епаЬ1е — Встроенные функции расширения ОХО распознаются и использование их возможно. Это значение применяется по умолчанию. ° п16е — Встроенные функции О~Ч~3 распознаются, но для их использования при первом вызове такой функции следует применить оператор хмтынвхсв.
° б1ваЫе — Встроенные функции ОХ13 распознаются, но нх использование допускается только если перед именем каждой из них стоит оператор хьгтдхнвхсв. ь бе1еве — Встроенные функции расширения ОЫБ не распознаются компилятором. Приложение Г. Опции командной строки компилятора ОСС 519 -19пи-Меуччогс!й Действует ло умолчанию. Обратная опция -1по-дпп-)кеучгогбв отключает использование ключевого слова СуресС. См. также -апв1. -19пи-! (П((ег Действует по умолчанию. Использование обратной опции -хпо-дпп-11п)кег означает, что компоновщик ОХ О использоваться не будет. При этом не будет генерироваться код глобальной инициализации (такой, как основные конструкторы и деструкторы классов).
При использовании стороннего компоновщика необходимо применение утилиты са11есв2 для того чтобы удостовериться, что компоновщик подключает все требуемые конструкторы и деструкторы. На системах, заведомо того требующих, дсс конфигурируется с автоматическим использованием утилиты со11есс2. -19пи-гипбпзе ОЬ! С Для многих систем применяется ло умолчанию. Опция указывает компилятору генерировать код с использованием среды выполнения программ (пзпт!те епч(гоптеп!) ОМЗ ОЬ)есг(че-С.
-19иеы-ЬгапсЬ-ргоЬаЬ(йу Действует по умолчанию. Определяет, что ОСС будет проводить оценку сравнительной частоты использования ветвей кода и выполнять соответствующую оптимизацию. ОСС для оценки вероятностей ветвления использует случайное моделирование. Поэтому при компиляции одного и того же исходного кода возможно получение различных вариантов выходного объектного кода.
Для выключения действия этой опции и получения при каждой компиляции одинакового выходного кода следует указывать обратную опцию -гпо-дпевв-ЬгппсЬ-ргоЬаЬ111гу. Другими опциями, которые также могут приводить к выработке неоднозначного выхода компилятора, являются -хЬгапсЬ-ргоЬаЬ111с1ев и -кргог11е-агав, -ВазЬ-вупсЬгоп((2а1(оп $ача По этой опции функции Гака вупснгопеве, тга1с и пос1ку сохраняются в общей хэш-таблице (Ьаз)т таЫе) вместо размещения их внутри каждого объекта. -гпо5 кек! Компилируемая программа предназначена для запуска в "дружественной" среде окружения ()тозтег! епч!гопгпеп!). При этом предполагается полная доступность всех функций стандартной библиотеки.
Главная процедура пе1п () должна иметь тип возвращаемого значения 1пг. При использовании этой опции автоматически устанавливается опция -ЕЬп11сеп, Эта опция равнозначна опции -гпс-кгеевсапб1пд. 520 Часть ЧЧ. Приложения -ФЫегй Рге Действует по умолчанию. При указании обратной опции -Спо-1бепв препроцессор будет игнорировать директивы $1йепс. -1!Птр1еп)епс-!П11пев С++ Применяется по умолчанию. Для (пйпе-функций, т.е. генерируемых подстановкой кода, создается один экземпляр не подстанавливаемого скомпилированного кода функции в месте их объявления.
Это делается на случай их вызова из модулей, которые не содержат кода для их подстановки. При указании обратной опции -Спо-1вр1евепс-1п11пев для !папе-функций под управлением директивы Мркацва 1вр1евепвав1оп будет подавляться выработка отдельного объектного кода реализации функции. Если отдельный код реализации функции не генерируется, то каждый вызов такой функции обязательно должен подстанавливаться кодом ее определения. -йпзр11с!т-тепзр!атея С++ Действует по умолчанию.
Кюкдая ссылка на шаблон кода (!егор)а(е) или содержащуюся в шаблоне функцию будет генерировать отдельный экземпляр шаблона, если он еше не создан предыдущим обращением. Обратная опция -хпо-1вр11с1с-севр1асев подавляет явное (ппрИсй) генерирование экземпляров шаблона, включая также и (папе-шаблоны (т.е, расширяемые постановкой кода). См.также -С1вр11с1С-1п11пе-вевр1авее. -Яптр!1с!т-! и! 1пе-1ептр1а1ев Действует по умолчанию, Каждая ссылка на шаблон кода ((етпр!а(е) или на функцию, которая содержится в шаблоне, будет генерировать подстановку кода шаблона в случае, если такая подстановка еше не была выполнена по предыдущему обращению. Обратная опция -хпо-1вр11с1с-1п11пе-севр1асеа подавляет явную (ппрйсй) подстановку кода шаблона, включая также и )пИпе-шаблоны (т.е. шаблоны, расширяемые постановкой кода).
См.также -х1вр11с1с-севр1асее. -йп!т(Ь11-в!хе-с1!гес1Ье Подавляет выработку директив ассемблера . есле и других директив, которые могут вызывать проблемы в случаях, когда код функции при загрузке в память разбивается на несколько разделенных и отстоящих друг от друга частей. Опция была специально предусмотрена для компиляции исходного файла сгсвсис с. с, который входит в состав ОСС. Другие варианты ее использования не предусматривались. Рогсгап -Лп!с-!оса!-лего При этой опции все локальные переменные, определяемые в пределах модуля компиляции, инициализируются нулевыми значениями.
Это не относится к полям общих блоков данных (сопппоп И(ос1з) и аргументам вызова функций. Приложение Г. Опции командной строки компилятора ОСС 52 1 Рекомендуется использовать совместно с опцией -хпо-аисожасфс для предотврашения сбоев при автоматической инициализации переменных во время выполнения программы. -г)п!1-рг!ог!1у Опция предназначена для внутреннего использования компилятором. Она определяет порядок инициализации переменных во время выполнения программы. -Ип!!Пе С, С++, ОЬ)С, Рог1гап Действует по умолчанию.
Разрешает при объявлении функций использование ключевого слова 1п11пе для указании, что код определения такой функции должен подстанавливаться в месте ее вызова. При указании обратной опции -Спо-1п11пе компилятор игнорирует использование в исходном коде программы ключевых слов 1п11пе, Учтите, что подстановка кода функций применяется только при назначении с помоШью опции -0 некоторого уровня оптимизации. См.
также опцию --рахаюп и раздел главы 4 "Атрибуты". -6п!!Пе-1ыпсбопв Разрешает компилятору самостоятельно выбирать функции достаточно малой степени сложности для их расширения подстановкой кода в местах их вызова. Если при этом функция объявлена таким образом, что все ее вызовы могут быть определены внутри модуля, то отдельный код тела этой функции не создается, потому что в действительности он никогда вызываться не будет.
Хорошим примером такого объявления на языке С могут служить функции с атрибутом всасфс, вызовы которых в общем случае допускаются только в пределах одного исходного файла. Эта опция автоматически устанавливается лри применении оптимизации -03, если при этом не установлен флаг -Спо-1п11пе-йцпсейопв... -Яп! !Пе-!! тй=йюе При этой опции компилятор не будет подстанавливать функции кодом их определения, если размер этого кода превышает указанное в поле вехе количество псевдоинструкций. Если значение вехе не указано, то по умолчанию оно равно 600. См.
также опцию --ракам. -йпв1гцгпеп1-1ипсбопв Вставляет вызовы особой встроенной функции в точках входа и выхода каждой вызываемой функции. Далее приводятся прототипы вызовов этой встроенной профилируюшей функции: усы суд ркок11е кипе епкек~уоЫ "хМв кп,уоЫ *са11 вьее) уоЫ суд ркоя11е кипе ехгх~уоЫ *КМв кп,уоЫ *са11 в1хе); Аргумент сМв кп содержит адрес текущей вызываемой функции, определяемый по информации из таблицы программных символов. Аргумент са11 в1се идентифицирует вызывающую подпрограмму. (На некоторых платформах информация, передаваемая значением переменной са11 в1се, может быть недоступной.) 522 часть пс Приложения Если обращения к функции подстанавливается кодом ее определения, то вызовы профнлируюшей функции помешаются перед и после вставляемого кода подстановки.