GCC - The Complete Reference (537669), страница 120
Текст из файла (страница 120)
иогггап -1цп!х-!П1Г!Пяс~-прес ЕОГ1гап Значение паля вресв определяет статус встроенных функций (!пгг!лгйсз) (Лч(Х. Возможны следующие значения вресв: -Ъпс!егзсог!пя гонга П Действуе~ ло умолчанию. К именам с одним знаком подчеркивания " " (цлдегзсоге сйагас1ег) компилятор добавляет два подчеркивания, а к внешне определяемым именам без знака подчеркивания добавляет один такой знак. Два знака подчеркивания добавляются также и к внутренним именам, уже имеющим в конце имени знак подчеркивания, это делается для лредулреждения возможных коллизий с внешними именами.
Установка обратной опции -кпо-ипбеквсоктпд запрещает все преобразования имен прибавлением к ним знаков подчеркивания. Если же применить -к по- весопб-ипбехвсоке, то эта установка отменит только добавление к именам второго знака подчеркивания. Отменять преобразование компилятором имен не рекомендуется.
Это можно делать только если в исходный код уже внесены особые поправки, обеслечиваюшие его совместимость с выходным кодом других компиляторов. Среди прочих проблем лри отмене добавления подчеркиваний следует особо указать на возможность конфликтов имен с системными библиотеками. 540 Часть !Ч. Приложения ° епаЬ1е — Встроенные функции ())Ч!Х распознаются и их использование возможно, Это значение действует ло умолчанию. ° Ьйбе — Встроенные функции ()МХ распознаются, но для их использования при первом вызове такой функции следует применить оператор тытвхьгвхсв. ° ййваЬ1е — Встроенные функции ()МХ распознаются, но их использование допускается только когда перед именем каждой из них стоит оператор 1ЬГТВХНЯ1СЯ.
° бе1еее — Встроенные функции ()!Ч1Х не распознаются. -ЬогоИ-аИ-! оорз Эта опция устанавливает флаг -йцпго11-1оорв и снимает ограничение на величину кода цикла и количество его итераций. При этом будут разворачиваться даже такие циклы, количество итераций которых во время компиляции не может быть определено.
Установка этой опции обычно приводит к выработке компилятором кода большего размера, дольше выполняемого машиной. Когда не удается определить количество итераций цикла, он преобразовывается следующим образом. Сначала цикл разворачивается определенное количество раз и между дубликатами кода первичного цикла вставляются проверки условий выхода. Полученная последовательность помещается в цикл, при этом создается цикл, размер кода которого увеличивается в несколько раз.
Преимущество состоит в том, что итерации цикла будут происходить с меньшей частотой, чем итерации исходного цикла без такой обработки. акоп гоИ-1оорв При этой опции в целях оптимизации программы достаточно простые циклы разворачиваются в линейный код при условии, что число итераций цикла и количество инструкций тела цикла достаточно малы. При разворачивании цикла из кода программы удаляется циклическая конструкция и последовательность инструкций цикла линейно повторяется в программе требуемое количество раз.
Показатель простоты цикла (т.е. возможность его разворачивания) определяется как произведение числа итераций цикла на количество инструкций тела цикла (имеются в виду инструкции промежуточного кода на языке КТь — )пзпз). Цикл может быть развернут, только если этот показатель меньше заданной величины. В описываемой версии компилятора этот показатель определяется константой, которая по умолчанию имеет значение 100. Эта опция всегда устанавливает опции -йвегепдеь-гейтса и -бгегцл-све-агсег-1оор. -1опза1е-азам!)-орбтяа11опя Убирает код проверок операций с плавающей точкой, при установке этой опции считается, что во всех случаях используются только допустимые значения.
При зтои возникает возможность нарушения стандартов 1ЕЕЕ н А1ЧБ1 для точности операций с плавающей точкой. Эта опция позволяет компоновщику вставлять код обеспечения нестандартной оптимизации работы аппаратного блока ГР() (ГР() — Р!оа!1ля Ро!и! \)и!й устройство для выполнения математических операций с плавающей точкой).
Приложение Г. Опции командной строки компилятора ОСС 541 -$ип5!дпес(-ЬИЙе!с)5 С При указании этой опции битовые поля (Ь)!бе!аз) считаются относяшимися к данным целочисленных типов без знака ппвсдпеб 1пс. Ло умолчанию битовые поля относятся к типу ввдпеб 1пс. При применении опции -сгаохс1опа1 все битовые поля в любом случае будут беззнаковыми. Обратная опция -гпо-ппвсдпеб-ь1сгйе1пв равносильна опции - г ведая б-Ьяс г х е16в 4цп5)дпес)-сЬаг С При этой опции тип данных сЬаг по умолчанию считается типом без знака цпв1дпеб сЬаг (с диапазоном значений от О до 255). В отсутствие явного указания этого флага применение по умолчанию знакового или беззнакового типа сЬаг зависит от платформы.
Обратная опция -Спо-ипведпео-сЬаг равносильна опции -гв1дпео-сЬаг. -1ипчч)пб-хаЫе5 Действие этой опции сходно с действием опции -гехсерссопв. Единственное отличие состоит в том, что при указании - сппмспа-ваь1ев генерируются необходимые для обработки исключений статические данные. См.также -кехсерс1опв, -Гпоп-са11-ехсерсвопв и -гавупсЬгопопв-ппмвпб-еаЬ1ев. -$() 5е-сха-а1ехН С++ Опция приводит к применению порядка запуска глобальных деструкторов, обратного порядку выполнения соответствуюших им конструкторов, вместо действуюшего по умолчанию порядка, обратно~о запуску конструкторов.
Последовательность запуска будет изменяться только в случае использования вложенных вызовов конструкторов, когда один конструктор вызывает другой. Опция будет действовать только при наличии в разделяемой библиотеке стандартных функций языка С (С пзп(!ше!!Ьгагу) функции сха ехас () . Без опции -гпве-сха-асех1с компилятор вместо сха еххс ( ) использует функцию асехйс ( ) . 4ояе-йчЫе-5нЬго1! пе 3ача Для выполнения деления целых чисел булет использоваться вызов подпрограммы библиотеки. Это делает возможной обработку исключения в ситуации целочисленного деления на ноль. -~чегЬоэе-аэгп Вставляет более подробные чем обычно комментарии в выходной код на ассемблере.
Это делает выходной листинг более читаемым. Основное применение этой опции планировалось для отладки самого компилятора. Именно для облегчения чтения выходного ассемблерного кода. По умолчанию действует обратная опция -гпо-тгегЬове-авяк Ее применение дает более удобный кодлля сравнения выходных листингов. 542 Часть (Ч. Приложения -Ччег91оп Еог1гап Выполняет запуск внутренних проверок правильности установки в составе ССС компилятора б)ч() Гогтгап и показывает информацию о его версии.
Эта опция также устанавливает оба флага - г и --техЬсее, -1чо!ао!1е Для всех расположений памяти, адресуемых через указатели, применяет свойства вариантного типа языка С (объявляемого с квалификатором зго1ас11е). См.также -езгс1ас11е-д1сьа1 и -сзго1ас11е-всассс. -1чо1а11! е-91абс Применяет свойства вариантного типа языка С (объявляемого с квалификатором то1ас11е) для статических (ага(1с) расположений памяти, то есть доступных для обращения к ним только в пределах своего модуля компиляции.
См.также -хзго1аС11е-д1оЬа1 и -Сзго1ае11е. -$ч~аЫе-Яс Вырабатывает информацию о перемещении символов (ге1оса1юп 1пгоппагюп), которая позволяет компоновщику устранять из таблицы т(аЫе записи для неиспользуемых виртуальных функций. Эта опция требует обязательного применения и компоновщика и ассемблера О)ч(). Вырабатываемая по этой опции информация используется также для удаления определений не используемых функций. См. описания опции -ххипсс1сп-весссссв и -Н1. С++ Гогтгап Некоторые конструкции исходного кода отличаются между диалектами б)ч(3 Гопгап и УХТ Гопгап.
Использование этой опции для интерпретации таких конструкций применяет правила диалекта УХТ Гогггап. См.также опции -хх90, -хзгхс-спсхспвссв- и -сс90-1псхспвссв-. -1чхт-Ыг1п91с9-йрес Значение поля вресв определяет статус встроенных функций ((пгппз!сз) диалекта УХТ Гогггап. Возможны следующие значения вресв: ° епаЬ1е — Встроенные функции диалекта УХТ распознаются и их использование возможно. Это значение действует по умолчанию. Гогтгап -гчо1а1!1е-9!о!за! Для всех расположений памяти, алресуемым как локально так и глобально, применяет свойства вариантного типа языка С (объявляемого с квалификатором тго1ас11е), это не распространяется на статические (згаг)с) элементы, то есть доступные лля обращения к ннм только в пределах своего модуля компиляции. См. также -хзгс1ас11е и -х1гс1ас11е-всассс.
Приложение Г. Опции командной строки компилятора ОСС 543 ° пЫе — Встроенные функции УХТ распознаются, иодля их использования при первом вызове такой функции следует применить оператор хьгтпгыпхся. ° беваЫе — Встроенные функции УХТ распознаются, но их использование допускается только если перед именем каждой из них стоит оператор п~тптыягся. ° бе1еее — Встроенные функции 7ХТ не распознаются. См. также опцию - йкгкс. 4аеаЕ С++ Действует по умолчанию.
Обратная опция -йпо-маак отменяет полдержку замещения программных символов даже в случае их поддержки компоновщиком. Не следует без особой потребности применять -спо-меак, потому что при этом вырабатывается код низкого качества, пригодный разве только лля тестирования компилятора. -гвцгйаЫе-зсгцз9я С, С++ При использовании этой опции компилятор допускает запись данных в строковые константы. Флаг устанавливается автоматически при установке опции -Скабфееопа1. Для получения действительной возможности записи в строковые константы при компиляции программ на языке С-ь+ необходимо также указывать опцию -йпо-сопле-всхепдв. Еогйгап -Ьегоез При этой установке компилятор воспринимает нулевые значения так же, как и любые другие.
Без этой опции существует возможность того, что компилятор не определит установки многими операторами рдтт нулевых начальных значений переменных. -ф/еигеЦ В выход компилятора включается отладочная информация в формате, распознаваемом отладчиком дсЬ.
Точный формат этой информации зависит от формата вырабатываемого компилятором объектного кода (зГабз, СОГГ; ХСОГГ, 0%АКГ или О%АКГ2). Параметр уровня отладочной информации 1еие1 является необязательным. Числовое значение этого параметра от 1 до 3 указывает количество включаемой в выход отладочной информации. Ло умолчанию он имеет значение 2. Уровень, равный 1, вырабатывает только глобальную отладочную информацию, необходимую для выполнения отладчиком обратной трассировки кода. Прн уровне 2 кроме информации первого уровня включается также информация о локальных переменных и номера строк исходного кода. На третьем уровне кроме информации второго уровня в выход включается дополнительная отладочная информация, такая как использованные при компиляции макроопределения.
544 Часть йт'. Приложения На системах, использующих формат объектного кода ааЬз, компилятор по этой опции вырабатывает такую отладочную информацию, которая может быть использована только отладчиком О1ч 0 дбЬ. Допускается совместное применение этой опции с опцией -о, которая производит оптимизированный выходной код.