1139825Simp; Options for the ARM port of the compiler.
21541Srgrimes
31541Srgrimes; Copyright (C) 2005-2020 Free Software Foundation, Inc.
41541Srgrimes;
51541Srgrimes; This file is part of GCC.
61541Srgrimes;
71541Srgrimes; GCC is free software; you can redistribute it and/or modify it under
81541Srgrimes; the terms of the GNU General Public License as published by the Free
91541Srgrimes; Software Foundation; either version 3, or (at your option) any later
101541Srgrimes; version.
111541Srgrimes;
121541Srgrimes; GCC is distributed in the hope that it will be useful, but WITHOUT ANY
131541Srgrimes; WARRANTY; without even the implied warranty of MERCHANTABILITY or
141541Srgrimes; FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
151541Srgrimes; for more details.
161541Srgrimes;
171541Srgrimes; You should have received a copy of the GNU General Public License
181541Srgrimes; along with GCC; see the file COPYING3.  If not see
191541Srgrimes; <http://www.gnu.org/licenses/>.
201541Srgrimes
211541SrgrimesHeaderInclude
221541Srgrimesconfig/arm/arm-opts.h
231541Srgrimes
241541SrgrimesTargetSave
251541Srgrimesconst char *x_arm_arch_string
261541Srgrimes
271541SrgrimesTargetSave
281541Srgrimesconst char *x_arm_cpu_string
291541Srgrimes
301541SrgrimesTargetSave
311541Srgrimesconst char *x_arm_tune_string
3222521Sdyson
331541SrgrimesEnum
341541SrgrimesName(tls_type) Type(enum arm_tls_type)
351541SrgrimesTLS dialect to use:
361541Srgrimes
371541SrgrimesEnumValue
381541SrgrimesEnum(tls_type) String(gnu) Value(TLS_GNU)
395455Sdg
401541SrgrimesEnumValue
411541SrgrimesEnum(tls_type) String(gnu2) Value(TLS_GNU2)
421541Srgrimes
431541Srgrimesmabi=
441541SrgrimesTarget RejectNegative Joined Enum(arm_abi_type) Var(arm_abi) Init(ARM_DEFAULT_ABI)
455455SdgSpecify an ABI.
465455Sdg
475455SdgEnum
481541SrgrimesName(arm_abi_type) Type(enum arm_abi_type)
495455SdgKnown ARM ABIs (for use with the -mabi= option):
501541Srgrimes
511541SrgrimesEnumValue
521541SrgrimesEnum(arm_abi_type) String(apcs-gnu) Value(ARM_ABI_APCS)
531541Srgrimes
541541SrgrimesEnumValue
551541SrgrimesEnum(arm_abi_type) String(atpcs) Value(ARM_ABI_ATPCS)
561541Srgrimes
571541SrgrimesEnumValue
581541SrgrimesEnum(arm_abi_type) String(aapcs) Value(ARM_ABI_AAPCS)
591817Sdg
6050477SpeterEnumValue
611541SrgrimesEnum(arm_abi_type) String(iwmmxt) Value(ARM_ABI_IWMMXT)
621541Srgrimes
631541SrgrimesEnumValue
641541SrgrimesEnum(arm_abi_type) String(aapcs-linux) Value(ARM_ABI_AAPCS_LINUX)
651541Srgrimes
661541Srgrimesmabort-on-noreturn
671541SrgrimesTarget Report Mask(ABORT_NORETURN)
681541SrgrimesGenerate a call to abort if a noreturn function returns.
6995686Salc
70132880Smuxmapcs
71108518SalcTarget RejectNegative Mask(APCS_FRAME) Undocumented
7276244Smarkm
731541Srgrimesmapcs-frame
741541SrgrimesTarget Report Mask(APCS_FRAME)
751541SrgrimesGenerate APCS conformant stack frames.
761541Srgrimes
771541Srgrimesmapcs-reentrant
781541SrgrimesTarget Report Mask(APCS_REENT)
791541SrgrimesGenerate re-entrant, PIC code.
80118771Sbms
8157550Spsmapcs-stack-check
8257550SpsTarget Report Mask(APCS_STACK) Undocumented
831541Srgrimes
841541Srgrimesmarch=
851541SrgrimesTarget RejectNegative Negative(march=) ToLower Joined Var(arm_arch_string)
861541SrgrimesSpecify the name of the target architecture.
871541Srgrimes
881541Srgrimes; Other arm_arch values are loaded from arm-tables.opt
895455Sdg; but that is a generated file and this is an odd-one-out.
905455SdgEnumValue
911541SrgrimesEnum(arm_arch) String(native) Value(-1) DriverOnly
921541Srgrimes
931541Srgrimes; Set to the name of target architecture which is required for
941541Srgrimes; multilib linking.  This option is undocumented becuase it
951541Srgrimes; should not be used by the users.
961541Srgrimesmlibarch=
971541SrgrimesTarget RejectNegative JoinedOrMissing NoDWARFRecord DriverOnly Undocumented
981541Srgrimes
991541Srgrimesmarm
1005455SdgTarget Report RejectNegative Negative(mthumb) InverseMask(THUMB)
1015455SdgGenerate code in 32 bit ARM state.
102103777Salc
103103777Salcmbig-endian
1045455SdgTarget Report RejectNegative Negative(mlittle-endian) Mask(BIG_END)
1055455SdgAssume target CPU is configured as big endian.
10642360Sjulian
107133636Salcmcallee-super-interworking
108133636SalcTarget Report Mask(CALLEE_INTERWORKING)
1095455SdgThumb: Assume non-static functions may be called from ARM code.
11012767Sdyson
11157550Spsmcaller-super-interworking
1125455SdgTarget Report Mask(CALLER_INTERWORKING)
1135455SdgThumb: Assume function pointers may go to non-Thumb aware code.
1145455Sdg
115235230Salcmcpu=
1165455SdgTarget RejectNegative Negative(mcpu=) ToLower Joined Var(arm_cpu_string)
117235230SalcSpecify the name of the target CPU.
118216128Strasz
1191541Srgrimesmfloat-abi=
1201541SrgrimesTarget RejectNegative Joined Enum(float_abi_type) Var(arm_float_abi) Init(TARGET_DEFAULT_FLOAT_ABI)
12157550SpsSpecify if floating point hardware should be used.
12257550Sps
12357550Spsmcmse
12457550SpsTarget RejectNegative Var(use_cmse)
12557550SpsSpecify that the compiler should target secure code as per ARMv8-M Security Extensions.
12657550Sps
12721754SdysonEnum
12857550SpsName(float_abi_type) Type(enum float_abi_type)
12957550SpsKnown floating-point ABIs (for use with the -mfloat-abi= option):
13057550Sps
13157550SpsEnumValue
13249338SalcEnum(float_abi_type) String(soft) Value(ARM_FLOAT_ABI_SOFT)
13357550Sps
13449338SalcEnumValue
13598022SalcEnum(float_abi_type) String(softfp) Value(ARM_FLOAT_ABI_SOFTFP)
13698022Salc
13757550SpsEnumValue
13857550SpsEnum(float_abi_type) String(hard) Value(ARM_FLOAT_ABI_HARD)
139119595Smarcel
140119595Smarcelmflip-thumb
141119595SmarcelTarget Report Var(TARGET_FLIP_THUMB) Undocumented
142190886SkibSwitch ARM/Thumb modes on alternating functions for compiler testing.
143232071Skib
144190886Skibmfp16-format=
14597710SalcTarget RejectNegative Joined Enum(arm_fp16_format_type) Var(arm_fp16_format) Init(ARM_FP16_FORMAT_NONE)
146121962SdesSpecify the __fp16 floating-point format.
14797710Salc
148121962SdesEnum
14997710SalcName(arm_fp16_format_type) Type(enum arm_fp16_format_type)
15097710SalcKnown __fp16 formats (for use with the -mfp16-format= option):
151133401Sgreen
152133401SgreenEnumValue
153133401SgreenEnum(arm_fp16_format_type) String(none) Value(ARM_FP16_FORMAT_NONE)
154133401Sgreen
155133401SgreenEnumValue
156133401SgreenEnum(arm_fp16_format_type) String(ieee) Value(ARM_FP16_FORMAT_IEEE)
157133401Sgreen
158133401SgreenEnumValue
159133401SgreenEnum(arm_fp16_format_type) String(alternative) Value(ARM_FP16_FORMAT_ALTERNATIVE)
160133401Sgreen
161133401Sgreenmfpu=
162133401SgreenTarget RejectNegative Joined Enum(arm_fpu) Var(arm_fpu_index) Init(TARGET_FPU_auto) Save
163133401SgreenSpecify the name of the target floating point hardware/format.
164133401Sgreen
16597710Salcmhard-float
16697710SalcTarget RejectNegative Alias(mfloat-abi=, hard) Undocumented
1671541Srgrimes
168103777Salcmlittle-endian
169103777SalcTarget Report RejectNegative Negative(mbig-endian) InverseMask(BIG_END)
170103777SalcAssume target CPU is configured as little endian.
171103777Salc
172103777Salcmlong-calls
173121962SdesTarget Report Mask(LONG_CALLS)
17450247SalcGenerate call insns as indirect calls, if necessary.
17595589Salc
17695589Salcmpic-data-is-text-relative
1771541SrgrimesTarget Report Var(arm_pic_data_is_text_relative) Init(TARGET_DEFAULT_PIC_DATA_IS_TEXT_RELATIVE)
1781541SrgrimesAssume data segments are relative to text segment.
17950247Salc
180132880Smuxmpic-register=
181108515SalcTarget RejectNegative Joined Var(arm_pic_register_string)
1825455SdgSpecify the register to be used for PIC addressing.
1835455Sdg
184118852Salcmpoke-function-name
18599754SalcTarget Report Mask(POKE_FUNCTION_NAME)
186186633SalcStore function names in object code.
187118771Sbms
188103777Salcmsched-prolog
18995589SalcTarget Report Mask(SCHED_PROLOG)
19095589SalcPermit scheduling of a function's prologue sequence.
19195589Salc
192216335Smlaiermsingle-pic-base
1931541SrgrimesTarget Report Mask(SINGLE_PIC_BASE)
1941541SrgrimesDo not load the PIC register in function prologues.
195118771Sbms
196118771Sbmsmsoft-float
197118771SbmsTarget RejectNegative Alias(mfloat-abi=, soft) Undocumented
198118771Sbms
199216335Smlaiermstructure-size-boundary=
200118771SbmsTarget RejectNegative Joined UInteger Var(arm_structure_size_boundary) Init(DEFAULT_STRUCTURE_SIZE_BOUNDARY)
20195589SalcSpecify the minimum bit alignment of structures. (Deprecated).
20295589Salc
203238502Smdfmthumb
20495589SalcTarget Report RejectNegative Negative(marm) Mask(THUMB) Save
20595589SalcGenerate code for Thumb state.
20695589Salc
20795589Salcmthumb-interwork
20895589SalcTarget Report Mask(INTERWORK)
209238502SmdfSupport calls between Thumb and ARM instruction sets.
21095589Salc
21195589Salcmtls-dialect=
21295589SalcTarget RejectNegative Joined Enum(tls_type) Var(target_tls_dialect) Init(TLS_GNU)
21395589SalcSpecify thread local storage scheme.
21495589Salc
21595589Salcmtp=
21695589SalcTarget RejectNegative Joined Enum(arm_tp_type) Var(target_thread_pointer) Init(TP_AUTO)
21795589SalcSpecify how to access the thread pointer.
21895589Salc
219118771SbmsEnum
220118771SbmsName(arm_tp_type) Type(enum arm_tp_type)
221118771SbmsValid arguments to -mtp=:
222118771Sbms
223118771SbmsEnumValue
224118771SbmsEnum(arm_tp_type) String(soft) Value(TP_SOFT)
22595589Salc
22695589SalcEnumValue
227121962SdesEnum(arm_tp_type) String(auto) Value(TP_AUTO)
22812662Sdg
22998818SalcEnumValue
23098818SalcEnum(arm_tp_type) String(cp15) Value(TP_CP15)
23198818Salc
23212662Sdgmtpcs-frame
23312662SdgTarget Report Mask(TPCS_FRAME)
23412662SdgThumb: Generate (non-leaf) stack frames even if not needed.
235100512Salfred
23612662Sdgmtpcs-leaf-frame
23712662SdgTarget Report Mask(TPCS_LEAF_FRAME)
23812662SdgThumb: Generate (leaf) stack frames even if not needed.
23912662Sdg
24098818Salcmtune=
24198818SalcTarget RejectNegative Negative(mtune=) ToLower Joined Var(arm_tune_string)
24212662SdgTune code for the given processor.
243214144Sjhb
244176717Smarcelmprint-tune-info
245176717SmarcelTarget Report RejectNegative Var(print_tune_info) Init(0)
246176717SmarcelPrint CPU tuning information as comment in assembler file.  This is
247176717Smarcelan option used only for regression testing of the compiler and not
248176717Smarcelintended for ordinary use in compiling code.
249176717Smarcel
25012662Sdg; Other processor_type values are loaded from arm-tables.opt
25112662Sdg; but that is a generated file and this is an odd-one-out.
25276827SalfredEnumValue
25397727SalcEnum(processor_type) String(native) Value(-1) DriverOnly
25497727Salc
25597727Salcmvectorize-with-neon-quad
25697727SalcTarget Report RejectNegative InverseMask(NEON_VECTORIZE_DOUBLE)
25797727SalcUse Neon quad-word (rather than double-word) registers for vectorization.
25897727Salc
25997727Salcmvectorize-with-neon-double
26097727SalcTarget Report RejectNegative Mask(NEON_VECTORIZE_DOUBLE)
2611541SrgrimesUse Neon double-word (rather than quad-word) registers for vectorization.
2621541Srgrimes
2631541Srgrimesmverbose-cost-dump
26449900SalcCommon Undocumented Var(arm_verbose_cost) Init(0)
26549900SalcEnable more verbose RTX cost dumps during debug.  For GCC developers use only.
26649900Salc
26749900Salcmword-relocations
26849900SalcTarget Report Var(target_word_relocations) Init(TARGET_DEFAULT_WORD_RELOCATIONS)
2691541SrgrimesOnly generate absolute relocations on word sized values.
2701541Srgrimes
27195686Salcmrestrict-it
27295686SalcTarget Report Var(arm_restrict_it) Init(2) Save
273212868SalcGenerate IT blocks appropriate for ARMv8.
27495686Salc
27595686Salcmfix-cortex-m3-ldrd
27695686SalcTarget Report Var(fix_cm3_ldrd) Init(2)
277112167SdasAvoid overlapping destination and address registers on LDRD instructions
27895686Salcthat may trigger Cortex-M3 errata.
27995686Salc
280186665Salcmfix-cmse-cve-2021-35465
28199754SalcTarget Var(fix_vlldm) Init(2)
282216335SmlaierMitigate issues with VLLDM on some M-profile devices (CVE-2021-35465).
283216335Smlaier
284216335Smlaiermunaligned-access
28528345SdysonTarget Report Var(unaligned_access) Init(2) Save
28695686SalcEnable unaligned word and halfword accesses to packed data.
28795686Salc
288212868Salcmneon-for-64bits
289212868SalcTarget WarnRemoved
29095686SalcThis option is deprecated and has no effect.
29195686Salc
29295686Salcmslow-flash-data
293112167SdasTarget Report Var(target_slow_flash_data) Init(0)
294112167SdasAssume loading data from flash is slower than fetching instructions.
29595686Salc
29695686Salcmasm-syntax-unified
29795686SalcTarget Report Var(inline_asm_unified) Init(0) Save
29895686SalcAssume unified syntax for inline assembly code.
29995686Salc
30079248Sdillonmpure-code
301120831SbmsTarget Report Var(target_pure_code) Init(0)
30276827SalfredDo not allow constant data to be placed in code sections.
3031541Srgrimes
30444146Sluoqimbe8
3051541SrgrimesTarget Report RejectNegative Negative(mbe32) Mask(BE8)
3061541SrgrimesWhen linking for big-endian targets, generate a BE8 format image.
3071549Srgrimes
3081541Srgrimesmbe32
30913490SdysonTarget Report RejectNegative Negative(mbe8) InverseMask(BE8)
31013490SdysonWhen linking for big-endian targets, generate a legacy BE32 format image.
31113490Sdyson
312231526Skibmbranch-cost=
31357550SpsTarget RejectNegative Joined UInteger Var(arm_branch_cost) Init(-1)
31457550SpsCost to assume for a branch insn.
31557550Sps
31657550Spsmgeneral-regs-only
31757550SpsTarget Report RejectNegative Mask(GENERAL_REGS_ONLY) Save
31857550SpsGenerate code which uses the core registers only (r0-r14).
31985762Sdillon
320232071Skibmfdpic
321120531SmarcelTarget Report Mask(FDPIC)
322120531SmarcelEnable Function Descriptor PIC mode.
323194766Skib