Spec-Zone.ru › GCC 8

3.18.37 Параметры PowerPC SPE

Эти параметры ‘-m’ определены для PowerPC SPE:

-mmfcrf
-mno-mfcrf
-mpopcntb
-mno-popcntb

Вы используете эти параметры для указания набора инструкций, доступных на используемом процессоре. Значение этих параметров по умолчанию определяется при настройке GCC. Указание -mcpu=cpu_type переопределяет указание этих параметров. Рекомендуется использовать параметр -mcpu=cpu_type вместо перечисленных выше параметров.

Параметр -mmfcrf позволяет GCC генерировать инструкцию перемещения из поля регистра состояния, реализованную на процессоре POWER4 и других процессорах, поддерживающих архитектуру PowerPC V2.01. Параметр -mpopcntb позволяет GCC генерировать инструкцию подсчета единиц и оценки обратной величины двойной точности с плавающей запятой, реализованную на процессоре POWER5 и других процессорах, поддерживающих архитектуру PowerPC V2.02.

-mcpu=cpu_type

Устанавливает тип архитектуры, использование регистров и параметры планирования инструкций для типа процессора cpu_type. Допустимые значения для cpu_type — ‘8540’, ‘8548’ и ‘native’.

-mcpu=powerpc указывает чистую 32-битную PowerPC (любой порядок байтов) с предположением о подходящей общей модели процессора для планирования.

Указание ‘native’ в качестве типа процессора определяет и выбирает параметр архитектуры, соответствующий процессору хост-системы, выполняющей компиляцию. -mcpu=native не оказывает никакого эффекта, если GCC не распознаёт процессор.

Другие параметры указывают на конкретный процессор. Сгенерированный код с этими параметрами лучше всего работает на указанном процессоре и может вообще не работать на других.

Параметры -mcpu автоматически включают или выключают следующие параметры:

-mhard-float  -mmfcrf  -mmultiple 
-mpopcntb -mpopcntd 
-msingle-float -mdouble-float 
-mfloat128

Конкретные параметры для конкретного процессора могут отличаться между версиями компилятора, в зависимости от того, какая настройка, по-видимому, производит оптимальный код для этого процессора; это не обязательно отражает фактические возможности аппаратного обеспечения. Если вы хотите установить отдельный параметр в определённое значение, вы можете указать его после параметра -mcpu, например, -mcpu=8548.

-mtune=cpu_type

Устанавливает параметры планирования инструкций для типа процессора cpu_type, но не устанавливает тип архитектуры или использование регистров, как это делает -mcpu=cpu_type. Те же значения для cpu_type используются для -mtune, что и для -mcpu. Если оба параметра указаны, сгенерированный код использует архитектуру и регистры, установленные параметром -mcpu, но параметры планирования, установленные параметром -mtune.

-msecure-plt

Генерирует код, который позволяет ld и ld.so создавать исполняемые файлы и динамические библиотеки с неисполняемыми .plt и .got секциями. Это параметр PowerPC 32-битного SYSV ABI.

-mbss-plt

Генерирует код, который использует секцию BSS .plt , которую ld.so заполняет, и требует секции .plt и .got , которые являются одновременно и читаемыми, и исполняемыми. Это параметр PowerPC 32-битного SYSV ABI.

-misel
-mno-isel

Этот переключатель включает или отключает генерацию инструкций ISEL.

-misel=yes/no

Этот переключатель устарел. Используйте -misel и -mno-isel вместо него.

-mspe
-mno-spe

Этот переключатель включает или отключает генерацию SIMD-инструкций SPE.

-mspe=yes/no

Этот параметр устарел. Используйте -mspe и -mno-spe вместо него.

-mfloat128
-mno-float128

Включает/выключает ключевое слово __float128 для плавающей запятой IEEE 128-бит и использует либо программную эмуляцию для плавающей запятой IEEE 128-бит, либо аппаратные инструкции.

-mfloat-gprs=yes/single/double/no
-mfloat-gprs

Этот переключатель включает или отключает генерацию операций с плавающей запятой над регистрами общего назначения для архитектур, которые их поддерживают.

Аргумент ‘yes’ или ‘single’ включает использование операций с плавающей запятой одинарной точности.

Аргумент ‘double’ включает использование операций с плавающей запятой одинарной и двойной точности.

Аргумент ‘no’ отключает операции с плавающей запятой над регистрами общего назначения.

В настоящее время этот параметр доступен только для MPC854x.

-mfull-toc
-mno-fp-in-toc
-mno-sum-in-toc
-mminimal-toc

Изменить генерацию TOC (Table Of Contents), которая создаётся для каждого исполняемого файла. Параметр -mfull-toc выбран по умолчанию. В этом случае GCC выделяет по крайней мере одну запись TOC для каждой уникальной ссылки на переменную, не являющуюся автоматической, в вашей программе. GCC также помещает константы с плавающей запятой в TOC. Однако в TOC доступно только 16 384 записи.

Если вы получаете сообщение об ошибке компоновщика, указывающее на то, что вы превысили доступное пространство TOC, вы можете уменьшить используемое пространство TOC с помощью параметров -mno-fp-in-toc и -mno-sum-in-toc. -mno-fp-in-toc не позволяет GCC помещать константы с плавающей запятой в TOC, а -mno-sum-in-toc заставляет GCC генерировать код для вычисления суммы адреса и константы во время выполнения вместо размещения этой суммы в TOC. Вы можете указать один или оба этих параметра. Каждый из них приводит к созданию кода, который немного медленнее и больше, но при этом экономит место в TOC.

Если у вас всё ещё не хватает места в TOC, даже когда вы указали оба этих параметра, укажите -mminimal-toc вместо этого. Этот параметр заставляет GCC создавать только одну запись TOC для каждого файла. При использовании этого параметра GCC создаёт код, который медленнее и больше, но использует чрезвычайно мало места в TOC. Возможно, вы захотите использовать этот параметр только для файлов, содержащих код, который выполняется реже.

-maix32

Отключает 64-битную ABI. GCC по умолчанию использует -maix32.

-mxl-compat
-mno-xl-compat

Генерировать код, который более точно соответствует семантике компилятора IBM XL при использовании совместимой с AIX ABI. Передавать аргументы с плавающей запятой в прототипированные функции за пределами области сохранения регистров (RSA) в стеке в дополнение к аргументам FPR. Не предполагать, что наиболее значимая цифра с плавающей запятой в 128-битном числе long double должным образом округляется при сравнении значений и преобразовании в double. Используйте имена символов XL для функций поддержки long double.

Вызов AIX был расширен, но первоначально не был документирован, чтобы обработать редкий случай C K&R, при котором функция вызывается с адресом её аргументов с меньшим количеством аргументов, чем объявлено. Компиляторы IBM XL обращаются к аргументам с плавающей запятой, которые не помещаются в RSA, со стека, когда подпрограмма компилируется без оптимизации. Поскольку постоянное хранение аргументов с плавающей запятой в стеке является неэффективным и редко необходимым, этот параметр по умолчанию не включён и необходим только при вызове подпрограмм, скомпилированных компиляторами IBM XL без оптимизации.

-malign-natural
-malign-power

В AIX, 32-битном Darwin и 64-битном PowerPC GNU/Linux, параметр -malign-natural переопределяет определённое ABI выравнивание больших типов, таких как двойные значения с плавающей запятой, на их границе, основанной на размере. Параметр -malign-power инструктирует GCC следовать правилам выравнивания, указанным в ABI. GCC по умолчанию использует стандартное выравнивание, определённое в ABI.

В 64-битном Darwin естественное выравнивание является стандартным, и -malign-power не поддерживается.

-msoft-float
-mhard-float

Генерировать код, который не использует (использует) набор регистров с плавающей запятой. Программная эмуляция с плавающей запятой предоставляется, если вы используете параметр -msoft-float и передаёте его GCC при линковке.

-msingle-float
-mdouble-float

Генерировать код для операций с плавающей запятой одинарной или двойной точности. -mdouble-float подразумевает -msingle-float.

-mmultiple
-mno-multiple

Генерировать код, использующий (не использующий) инструкции загрузки и сохранения нескольких слов. Эти инструкции генерируются по умолчанию на системах POWER, но не генерируются на системах PowerPC. Не используйте -mmultiple на системах PowerPC с little-endian, поскольку эти инструкции не работают, когда процессор находится в режиме little-endian. Исключение составляют PPC740 и PPC750, которые допускают эти инструкции в режиме little-endian.

-mupdate
-mno-update

Генерировать код, использующий (не использующий) инструкции загрузки или сохранения, которые обновляют базовый регистр до адреса вычисленного расположения памяти. Эти инструкции генерируются по умолчанию. Если вы используете -mno-update, существует небольшой интервал между временем обновления указателя стека и временем хранения адреса предыдущей рамки, что означает, что код, проходящий по кадру стека через прерывания или сигналы, может получить повреждённые данные.

-mavoid-indexed-addresses
-mno-avoid-indexed-addresses

Генерировать код, который пытается избежать (не избегать) использования индексированных инструкций загрузки или сохранения. Эти инструкции могут вызвать снижение производительности на процессорах Power6 в определённых ситуациях, таких как проход по большим массивам, которые пересекают границу 16 МБ. Этот параметр включён по умолчанию при целевом процессоре Power6 и выключен в противном случае.

-mfused-madd
-mno-fused-madd

Генерировать код, использующий (не использующий) инструкции умножения и накопления с плавающей запятой. Эти инструкции генерируются по умолчанию, если используется аппаратная плавающая запятая. Зависимый от машины параметр -mfused-madd теперь отображается на независимый от машины параметр -ffp-contract=fast, а -mno-fused-madd отображается на -ffp-contract=off.

-mno-strict-align
-mstrict-align

В системах System V.4 и встроенных системах PowerPC не предполагается (предполагается), что система обрабатывает невыровненные обращения к памяти.

-mrelocatable
-mno-relocatable
END_OF_DOCUMENT_MARKER

Генерировать код, который позволяет (не позволяет) статически скомпилированному исполняемому файлу перемещаться в другой адрес во время выполнения. Простой встроенный загрузчик для системы PowerPC должен перемещать все содержимое .got2 и 4-байтовых расположений, перечисленных в разделе .fixup, таблицу адресов 32-бит, сгенерированную этим параметром. Для этого все связанные объекты должны быть скомпилированы с -mrelocatable или -mrelocatable-lib. Код -mrelocatable выравнивает стек к границе в 8 байт.

-mrelocatable-lib
-mno-relocatable-lib

Как -mrelocatable, -mrelocatable-lib генерирует раздел .fixup, чтобы позволить статически скомпилированным исполняемым файлам перемещаться во время выполнения, но -mrelocatable-lib не использует меньшее выравнивание стека, чем -mrelocatable. Объекты, скомпилированные с -mrelocatable-lib, могут быть связаны с объектами, скомпилированными с любым сочетанием опций -mrelocatable.

-mno-toc
-mtoc

В системах System V.4 и встроенных системах PowerPC не предполагается (предполагается), что регистр 2 содержит указатель на глобальную область, указывающую на адреса, используемые в программе.

-mlittle
-mlittle-endian

В системах System V.4 и встроенных системах PowerPC компилировать код для процессора в режиме little-endian. Опция -mlittle-endian эквивалентна -mlittle.

-mbig
-mbig-endian

В системах System V.4 и встроенных системах PowerPC компилировать код для процессора в режиме big-endian. Опция -mbig-endian эквивалентна -mbig.

-mdynamic-no-pic

В системах Darwin и Mac OS X компилировать код таким образом, чтобы он не был перемещаемым, но его внешние ссылки были перемещаемыми. Результирующий код подходит для приложений, но не для общих библиотек.

-msingle-pic-base

Обращаться к регистру, используемому для PIC-адресации, как к только для чтения, а не загружать его в прологе для каждой функции. Система во время выполнения отвечает за инициализацию этого регистра соответствующим значением перед началом выполнения.

-mprioritize-restricted-insns=priority

Этот параметр управляет приоритетом, который назначается инструкциям с ограниченным слотом диспетчеризации во время второго прохода планирования. Аргумент priority принимает значения ‘0’, ‘1’ или ‘2’, чтобы назначить отсутствие, наивысший или второй по величине приоритет инструкциям с ограниченным слотом диспетчеризации (соответственно).

-msched-costly-dep=dependence_type

Этот параметр управляет тем, какие зависимости считаются дорогостоящими для целевого процессора во время планирования инструкций. Аргумент dependence_type принимает одно из следующих значений:

‘no’

Ни одна зависимость не является дорогостоящей.

‘all’

Все зависимости являются дорогостоящими.

‘true_store_to_load’

Истинная зависимость от сохранения до загрузки является дорогостоящей.

‘store_to_load’

Любая зависимость от сохранения до загрузки является дорогостоящей.

number

Любая зависимость, латентность которой больше или равна number, является дорогостоящей.

-minsert-sched-nops=scheme

Этот параметр управляет схемой вставки NOP во время второго прохода планирования. Аргумент scheme принимает одно из следующих значений:

‘no’

Не вставлять NOP.

‘pad’

Заполнить NOP любым группой диспетчеризации, у которой есть свободные слоты выпуска, согласно группировке планировщика.

‘regroup_exact’

Вставить NOP, чтобы заставить дорогостоящие зависимые инструкции в разные группы. Вставить ровно столько NOP, сколько нужно, чтобы заставить инструкцию в новую группу, в соответствии с оцененной группировкой процессора.

number

Вставить NOP, чтобы заставить дорогостоящие зависимые инструкции в разные группы. Вставить number NOP, чтобы заставить инструкцию в новую группу.

-mcall-sysv

В системах System V.4 и встроенных системах PowerPC компилировать код, используя правила вызова, соответствующие проекту System V Application Binary Interface от марта 1995 года, дополнение для процессоров PowerPC. Это значение по умолчанию, если вы не настраивали GCC с помощью ‘powerpc-*-eabiaix’.

-mcall-sysv-eabi
-mcall-eabi

Указать как опцию -mcall-sysv, так и -meabi.

-mcall-sysv-noeabi

Указать как опцию -mcall-sysv, так и -mno-eabi.

-mcall-aixdesc

В системах System V.4 и встроенных системах PowerPC компилировать код для операционной системы AIX.

-mcall-linux

В системах System V.4 и встроенных системах PowerPC компилировать код для системы GNU на базе Linux.

-mcall-freebsd

В системах System V.4 и встроенных системах PowerPC компилировать код для операционной системы FreeBSD.

-mcall-netbsd

В системах System V.4 и встроенных системах PowerPC компилировать код для операционной системы NetBSD.

-mcall-openbsd

В системах System V.4 и встроенных системах PowerPC компилировать код для операционной системы OpenBSD.

-maix-struct-return

Возвращать все структуры в памяти (как указано в ABI AIX).

-msvr4-struct-return

Возвращать структуры размером меньше 8 байт в регистрах (как указано в ABI SVR4).

-mabi=abi-type

Расширить текущий ABI определенным расширением или удалить такое расширение. Допустимые значения — ‘altivec’, ‘no-altivec’, ‘spe’, ‘no-spe’, ‘ibmlongdouble’, ‘ieeelongdouble’, ‘elfv1’, ‘elfv2’.

-mabi=spe

Расширить текущий ABI расширениями SPE ABI. Это не изменяет значение по умолчанию ABI, а вместо этого добавляет расширения SPE ABI к текущему ABI.

-mabi=no-spe

Отключить расширения SPE ABI Book-E для текущего ABI.

-mabi=ibmlongdouble

Изменить текущий ABI на использование IBM расширенной точности long double. Вероятно, это не сработает, если ваша система по умолчанию использует IEEE расширенную точность long double. Если вы измените тип long double с IEEE расширенной точности, компилятор выдаст предупреждение, если вы не используете опцию -Wno-psabi. Требуется включить -mlong-double-128.

-mabi=ieeelongdouble

Изменить текущий ABI на использование IEEE расширенной точности long double. Вероятно, это не сработает, если ваша система по умолчанию использует IBM расширенную точность long double. Если вы измените тип long double с IBM расширенной точности, компилятор выдаст предупреждение, если вы не используете опцию -Wno-psabi. Требуется включить -mlong-double-128.

-mabi=elfv1

Изменить текущий ABI на использование ELFv1 ABI. Это ABI по умолчанию для big-endian PowerPC 64-bit Linux. Переопределение ABI по умолчанию требует специальной поддержки системы и, вероятно, потерпит неудачу.

-mabi=elfv2

Изменить текущий ABI на использование ELFv2 ABI. Это ABI по умолчанию для little-endian PowerPC 64-bit Linux. Переопределение ABI по умолчанию требует специальной поддержки системы и, вероятно, потерпит неудачу.

-mgnu-attribute
-mno-gnu-attribute

Выводить ассемблерные директивы .gnu_attribute для установки пар тег/значение в разделе .gnu.attributes, которые указывают на варианты ABI в параметрах функций или значениях возвращаемых данных.

-mprototype
-mno-prototype

В системах System V.4 и встроенных системах PowerPC предполагается, что все вызовы функций с переменным числом аргументов должным образом прототипированы. В противном случае, компилятор должен вставить инструкцию перед каждым вызовом без прототипирования для установки или сброса бита 6 регистра кода состояния (CR) для указания, передаются ли значения с плавающей запятой в регистрах с плавающей запятой в случае, если функция принимает переменное количество аргументов. С -mprototype только вызовы прототипированных функций с переменным количеством аргументов устанавливают или сбрасывают бит.

-msim

В встроенных системах PowerPC предполагается, что модуль запуска называется sim-crt0.o, а стандартные библиотеки C — libsim.a и libc.a. Это значение по умолчанию для конфигураций ‘powerpc-*-eabisim’.

-mmvme

В встроенных системах PowerPC предполагается, что модуль запуска называется crt0.o, а стандартные библиотеки C — libmvme.a и libc.a.

-mads

В встроенных системах PowerPC предполагается, что модуль запуска называется crt0.o, а стандартные библиотеки C — libads.a и libc.a.

-myellowknife

В встроенных системах PowerPC предполагается, что модуль запуска называется crt0.o, а стандартные библиотеки C — libyk.a и libc.a.

-mvxworks

В системах System V.4 и встроенных системах PowerPC укажите, что вы компилируете для системы VxWorks.

-memb

В встроенных системах PowerPC установите бит PPC_EMB в заголовке флагов ELF, чтобы указать, что используются расширенные перемещения ‘eabi’.

-meabi
-mno-eabi

В системах System V.4 и встроенных системах PowerPC (не) соблюдается интерфейс двоичных приложений Embedded Applications Binary Interface (EABI), представляющий собой набор изменений в спецификации System V.4. Выбор -meabi означает, что стек выравнивается по границе 8 байт, функция __eabi вызывается из main для настройки среды EABI, а опция -msdata может использовать как r2, так и r13, чтобы указывать на две отдельные области малых данных. Выбор -mno-eabi означает, что стек выравнивается по границе 16 байт, функция инициализации EABI не вызывается из main, а опция -msdata использует только r13, чтобы указать на одну область малых данных. Опция -meabi включена по умолчанию, если вы настраивали GCC с помощью одной из опций 'powerpc*-*-eabi*'.

-msdata=eabi

В системах System V.4 и встроенных системах PowerPC поместите инициализированные малые const глобальные и статические данные в секцию .sdata2, к которой обращается регистр r2. Поместите малые инициализированные не-const глобальные и статические данные в секцию .sdata, к которой обращается регистр r13. Поместите малые неинициализированные глобальные и статические данные в секцию .sbss, смежную с секцией .sdata. Опция -msdata=eabi несовместима с опцией -mrelocatable. Опция -msdata=eabi также устанавливает опцию -memb.

-msdata=sysv

В системах System V.4 и встроенных системах PowerPC поместите малые глобальные и статические данные в секцию .sdata, к которой обращается регистр r13. Поместите малые неинициализированные глобальные и статические данные в секцию .sbss, смежную с секцией .sdata. Опция -msdata=sysv несовместима с опцией -mrelocatable.

-msdata=default
-msdata

В системах System V.4 и встроенных системах PowerPC, если используется -meabi, компилируйте код так же, как -msdata=eabi, в противном случае компилируйте код так же, как -msdata=sysv.

-msdata=data

В системах System V.4 и встроенных системах PowerPC поместите малые глобальные данные в секцию .sdata. Поместите малые неинициализированные глобальные данные в секцию .sbss. Однако не используйте регистр r13 для адресации малых данных. Это поведение по умолчанию, если не используются другие опции -msdata.

-msdata=none
-mno-sdata

Во встроенных системах PowerPC поместите все инициализированные глобальные и статические данные в секцию .data, а все неинициализированные данные — в секцию .bss.

-mblock-move-inline-limit=num

Встраивайте все перемещения блоков (например, вызовы memcpy или копирование структур), меньшие или равные num байт. Минимальное значение для num составляет 32 байта для 32-битных целей и 64 байта для 64-битных целей. Значение по умолчанию зависит от целевой платформы.

-G num

В встроенных системах PowerPC поместите глобальные и статические элементы, меньшие или равные num байт, в секции малых данных или BSS вместо обычных секций данных или BSS. По умолчанию num равно 8. Переключатель -G num также передается компоновщику. Все модули должны быть скомпилированы с одинаковым значением -G num.

-mregnames
-mno-regnames

В системах System V.4 и встроенных системах PowerPC (не) генерировать имена регистров в выходном коде ассемблера с помощью символических форм.

-mlongcall
-mno-longcall

По умолчанию предполагается, что все вызовы находятся далеко, поэтому требуется более длинная и затратная последовательность вызова. Это необходимо для вызовов, удаленных более чем на 32 мегабайта (33 554 432 байта) от текущего расположения. Если компилятор знает, что вызов не может быть так далек, генерируется короткий вызов. Этот параметр можно переопределить атрибутом функции shortcall или #pragma longcall(0).

Некоторые компоновщики способны обнаруживать вызовы за пределами диапазона и генерировать код-заглушку на лету. В таких системах длинные вызовы не нужны и генерируют более медленный код. На данный момент компоновщик AIX и GNU компоновщик для PowerPC/64 могут выполнять это. Планируется добавить эту функцию в GNU компоновщик для 32-битных систем PowerPC.

В будущем GCC может игнорировать все указания longcall, если известно, что компоновщик генерирует заглушки.

-mtls-markers
-mno-tls-markers

Помечать (не помечать) вызовы __tls_get_addr с помощью перемещения, указывающего на аргумент функции. Перемещение позволяет компоновщику надежно связывать вызов функции с инструкциями настройки аргументов для оптимизации TLS, что, в свою очередь, позволяет GCC лучше планировать последовательность.

-mrecip
-mno-recip

Эта опция позволяет использовать инструкции оценки обратного значения и оценки обратного квадратного корня с дополнительными шагами Ньютона—Рафсона для повышения точности вместо выполнения деления или извлечения квадратного корня и деления для аргументов с плавающей точкой. При использовании -mrecip (или по крайней мере -funsafe-math-optimizations, -ffinite-math-only, -freciprocal-math и -fno-trapping-math) следует использовать опцию -ffast-math. Обратите внимание, что, хотя пропускная способность последовательности обычно выше, чем пропускная способность инструкции без обратного вычисления, точность последовательности может снизиться до 2 единиц в последнем знаке (т. е. обратное значение 1,0 равно 0,99999994) для обратных квадратных корней.

-mrecip=opt

Данная опция управляет тем, какие инструкции оценки обратного значения могут быть использованы. opt — это список опций, разделенных запятыми, которые могут предваряться ! для инвертирования опции:

‘all’

Включить все инструкции оценки.

‘default’

Включить инструкции по умолчанию, эквивалентные -mrecip.

‘none’

Отключить все инструкции оценки, эквивалентные -mno-recip.

‘div’

Включить инструкции приближения обратного значения для одинарной и двойной точности.

‘divf’

Включить инструкции приближения обратного значения одинарной точности.

‘divd’

Включить инструкции приближения обратного значения двойной точности.

‘rsqrt’

Включить инструкции приближения обратного квадратного корня для одинарной и двойной точности.

‘rsqrtf’

Включить инструкции приближения обратного квадратного корня одинарной точности.

‘rsqrtd’

Включить инструкции приближения обратного квадратного корня двойной точности.

Например, -mrecip=all,!rsqrtd включает все инструкции оценки обратного значения, за исключением FRSQRTE, XSRSQRTEDP, и XVRSQRTEDP инструкций, обрабатывающих вычисления обратного квадратного корня двойной точности.

-mrecip-precision
-mno-recip-precision

Предполагать (не предполагать), что инструкции оценки обратного значения обеспечивают более высокую точность, чем предписывает интерфейс PowerPC ABI. Выбор -mcpu=power6, -mcpu=power7 или -mcpu=power8 автоматически выбирает -mrecip-precision. Инструкции оценки обратного квадратного корня двойной точности по умолчанию не генерируются на машинах с низкой точностью, так как они не обеспечивают оценку, которая сходится после трех шагов.

-mpointers-to-nested-functions
-mno-pointers-to-nested-functions

Генерировать (не генерировать) код для загрузки регистра статической цепочки (r11) при вызове через указатель в системах AIX и 64-битных Linux, где указатель функции указывает на 3-словный дескриптор, содержащий адрес функции, значение TOC, которое нужно загрузить в регистр r2, и значение статической цепочки, которое нужно загрузить в регистр r11. -mpointers-to-nested-functions включено по умолчанию. Вы не можете вызывать через указатели на вложенные функции или указатели на функции, скомпилированные на других языках, использующих статическую цепочку, если используется -mno-pointers-to-nested-functions.

-msave-toc-indirect
-mno-save-toc-indirect

Генерировать (не генерировать) код для сохранения значения TOC в зарезервированном месте стека в прологе функции, если функция вызывает через указатель в системах AIX и 64-битных Linux. Если значение TOC не сохраняется в прологе, оно сохраняется непосредственно перед вызовом через указатель. -mno-save-toc-indirect — опция по умолчанию.

-mcompat-align-parm
-mno-compat-align-parm

Генерировать (не генерировать) код для передачи параметров структуры с максимальным выравниванием 64 бит для совместимости со старыми версиями GCC.

Старые версии GCC (до 4.9.0) неправильно не выравнивали параметр структуры на границе 128 бит, когда эта структура содержала член, требующий выравнивания 128 бит. Это исправлено в более новых версиях GCC. Данная опция может использоваться для генерации кода, совместимого с функциями, скомпилированными с более старыми версиями GCC.

Опция -mno-compat-align-parm включена по умолчанию.

-mstack-protector-guard=guard
-mstack-protector-guard-reg=reg
-mstack-protector-guard-offset=offset
-mstack-protector-guard-symbol=symbol

Генерировать код защиты стека с использованием сигнальной метки в guard. Поддерживаемые расположения: ‘global’ для глобальной сигнальной метки или ‘tls’ для сигнальной метки на поток в блоке TLS (по умолчанию с GNU libc версии 2.4 или выше).

В последнем случае опции -mstack-protector-guard-reg=reg и -mstack-protector-guard-offset=offset дополнительно указывают, какой регистр использовать в качестве базового регистра для чтения сигнальной метки и с какого смещения от этого базового регистра. По умолчанию для них используется то, что указано в соответствующей ABI. -mstack-protector-guard-symbol=symbol переопределяет смещение ссылкой на символ сигнальной метки в блоке TLS.

Далее: RISC-V Options, Предыдущее: PowerPC Options, Вверх: Options подмодели [Оглавление][Индекс]

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-8.5.0/gcc/PowerPC-SPE-Options.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API