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