1; Options for the ARM port of the compiler. 2 3; Copyright (C) 2005-2015 Free Software Foundation, Inc. 4; 5; This file is part of GCC. 6; 7; GCC is free software; you can redistribute it and/or modify it under 8; the terms of the GNU General Public License as published by the Free 9; Software Foundation; either version 3, or (at your option) any later 10; version. 11; 12; GCC is distributed in the hope that it will be useful, but WITHOUT ANY 13; WARRANTY; without even the implied warranty of MERCHANTABILITY or 14; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 15; for more details. 16; 17; You should have received a copy of the GNU General Public License 18; along with GCC; see the file COPYING3. If not see 19; <http://www.gnu.org/licenses/>. 20 21HeaderInclude 22config/arm/arm-opts.h 23 24Enum 25Name(tls_type) Type(enum arm_tls_type) 26TLS dialect to use: 27 28EnumValue 29Enum(tls_type) String(gnu) Value(TLS_GNU) 30 31EnumValue 32Enum(tls_type) String(gnu2) Value(TLS_GNU2) 33 34mabi= 35Target RejectNegative Joined Enum(arm_abi_type) Var(arm_abi) Init(ARM_DEFAULT_ABI) 36Specify an ABI 37 38Enum 39Name(arm_abi_type) Type(enum arm_abi_type) 40Known ARM ABIs (for use with the -mabi= option): 41 42EnumValue 43Enum(arm_abi_type) String(apcs-gnu) Value(ARM_ABI_APCS) 44 45EnumValue 46Enum(arm_abi_type) String(atpcs) Value(ARM_ABI_ATPCS) 47 48EnumValue 49Enum(arm_abi_type) String(aapcs) Value(ARM_ABI_AAPCS) 50 51EnumValue 52Enum(arm_abi_type) String(iwmmxt) Value(ARM_ABI_IWMMXT) 53 54EnumValue 55Enum(arm_abi_type) String(aapcs-linux) Value(ARM_ABI_AAPCS_LINUX) 56 57mabort-on-noreturn 58Target Report Mask(ABORT_NORETURN) 59Generate a call to abort if a noreturn function returns 60 61mapcs 62Target RejectNegative Mask(APCS_FRAME) Undocumented 63 64mapcs-float 65Target Report Mask(APCS_FLOAT) 66Pass FP arguments in FP registers 67 68mapcs-frame 69Target Report Mask(APCS_FRAME) 70Generate APCS conformant stack frames 71 72mapcs-reentrant 73Target Report Mask(APCS_REENT) 74Generate re-entrant, PIC code 75 76mapcs-stack-check 77Target Report Mask(APCS_STACK) Undocumented 78 79march= 80Target RejectNegative ToLower Joined Enum(arm_arch) Var(arm_arch_option) 81Specify the name of the target architecture 82 83; Other arm_arch values are loaded from arm-tables.opt 84; but that is a generated file and this is an odd-one-out. 85EnumValue 86Enum(arm_arch) String(native) Value(-1) DriverOnly 87 88marm 89Target Report RejectNegative InverseMask(THUMB) 90Generate code in 32 bit ARM state. 91 92mbig-endian 93Target Report RejectNegative Mask(BIG_END) 94Assume target CPU is configured as big endian 95 96mcallee-super-interworking 97Target Report Mask(CALLEE_INTERWORKING) 98Thumb: Assume non-static functions may be called from ARM code 99 100mcaller-super-interworking 101Target Report Mask(CALLER_INTERWORKING) 102Thumb: Assume function pointers may go to non-Thumb aware code 103 104mcpu= 105Target RejectNegative ToLower Joined Enum(processor_type) Var(arm_cpu_option) Init(arm_none) 106Specify the name of the target CPU 107 108mfloat-abi= 109Target RejectNegative Joined Enum(float_abi_type) Var(arm_float_abi) Init(TARGET_DEFAULT_FLOAT_ABI) 110Specify if floating point hardware should be used 111 112Enum 113Name(float_abi_type) Type(enum float_abi_type) 114Known floating-point ABIs (for use with the -mfloat-abi= option): 115 116EnumValue 117Enum(float_abi_type) String(soft) Value(ARM_FLOAT_ABI_SOFT) 118 119EnumValue 120Enum(float_abi_type) String(softfp) Value(ARM_FLOAT_ABI_SOFTFP) 121 122EnumValue 123Enum(float_abi_type) String(hard) Value(ARM_FLOAT_ABI_HARD) 124 125mfp16-format= 126Target RejectNegative Joined Enum(arm_fp16_format_type) Var(arm_fp16_format) Init(ARM_FP16_FORMAT_NONE) 127Specify the __fp16 floating-point format 128 129Enum 130Name(arm_fp16_format_type) Type(enum arm_fp16_format_type) 131Known __fp16 formats (for use with the -mfp16-format= option): 132 133EnumValue 134Enum(arm_fp16_format_type) String(none) Value(ARM_FP16_FORMAT_NONE) 135 136EnumValue 137Enum(arm_fp16_format_type) String(ieee) Value(ARM_FP16_FORMAT_IEEE) 138 139EnumValue 140Enum(arm_fp16_format_type) String(alternative) Value(ARM_FP16_FORMAT_ALTERNATIVE) 141 142mfpu= 143Target RejectNegative Joined Enum(arm_fpu) Var(arm_fpu_index) 144Specify the name of the target floating point hardware/format 145 146mhard-float 147Target RejectNegative Alias(mfloat-abi=, hard) Undocumented 148 149mlittle-endian 150Target Report RejectNegative InverseMask(BIG_END) 151Assume target CPU is configured as little endian 152 153mlong-calls 154Target Report Mask(LONG_CALLS) 155Generate call insns as indirect calls, if necessary 156 157mpic-data-is-text-relative 158Target Report Var(arm_pic_data_is_text_relative) Init(TARGET_DEFAULT_PIC_DATA_IS_TEXT_RELATIVE) 159Assume data segments are relative to text segment. 160 161mpic-register= 162Target RejectNegative Joined Var(arm_pic_register_string) 163Specify the register to be used for PIC addressing 164 165mpoke-function-name 166Target Report Mask(POKE_FUNCTION_NAME) 167Store function names in object code 168 169msched-prolog 170Target Report Mask(SCHED_PROLOG) 171Permit scheduling of a function's prologue sequence 172 173msingle-pic-base 174Target Report Mask(SINGLE_PIC_BASE) 175Do not load the PIC register in function prologues 176 177msoft-float 178Target RejectNegative Alias(mfloat-abi=, soft) Undocumented 179 180mstructure-size-boundary= 181Target RejectNegative Joined UInteger Var(arm_structure_size_boundary) Init(DEFAULT_STRUCTURE_SIZE_BOUNDARY) 182Specify the minimum bit alignment of structures 183 184mthumb 185Target Report RejectNegative Mask(THUMB) 186Generate code for Thumb state 187 188mthumb-interwork 189Target Report Mask(INTERWORK) 190Support calls between Thumb and ARM instruction sets 191 192mtls-dialect= 193Target RejectNegative Joined Enum(tls_type) Var(target_tls_dialect) Init(TLS_GNU) 194Specify thread local storage scheme 195 196mtp= 197Target RejectNegative Joined Enum(arm_tp_type) Var(target_thread_pointer) Init(TP_AUTO) 198Specify how to access the thread pointer 199 200Enum 201Name(arm_tp_type) Type(enum arm_tp_type) 202Valid arguments to -mtp=: 203 204EnumValue 205Enum(arm_tp_type) String(soft) Value(TP_SOFT) 206 207EnumValue 208Enum(arm_tp_type) String(auto) Value(TP_AUTO) 209 210EnumValue 211Enum(arm_tp_type) String(cp15) Value(TP_CP15) 212 213mtpcs-frame 214Target Report Mask(TPCS_FRAME) 215Thumb: Generate (non-leaf) stack frames even if not needed 216 217mtpcs-leaf-frame 218Target Report Mask(TPCS_LEAF_FRAME) 219Thumb: Generate (leaf) stack frames even if not needed 220 221mtune= 222Target RejectNegative ToLower Joined Enum(processor_type) Var(arm_tune_option) Init(arm_none) 223Tune code for the given processor 224 225mprint-tune-info 226Target Report RejectNegative Var(print_tune_info) Init(0) 227Print CPU tuning information as comment in assembler file. This is 228an option used only for regression testing of the compiler and not 229intended for ordinary use in compiling code. 230 231; Other processor_type values are loaded from arm-tables.opt 232; but that is a generated file and this is an odd-one-out. 233EnumValue 234Enum(processor_type) String(native) Value(-1) DriverOnly 235 236mvectorize-with-neon-quad 237Target Report RejectNegative InverseMask(NEON_VECTORIZE_DOUBLE) 238Use Neon quad-word (rather than double-word) registers for vectorization 239 240mvectorize-with-neon-double 241Target Report RejectNegative Mask(NEON_VECTORIZE_DOUBLE) 242Use Neon double-word (rather than quad-word) registers for vectorization 243 244mword-relocations 245Target Report Var(target_word_relocations) Init(TARGET_DEFAULT_WORD_RELOCATIONS) 246Only generate absolute relocations on word sized values. 247 248mrestrict-it 249Target Report Var(arm_restrict_it) Init(2) 250Generate IT blocks appropriate for ARMv8. 251 252mold-rtx-costs 253Target Report Mask(OLD_RTX_COSTS) 254Use the old RTX costing tables (transitional). 255 256mnew-generic-costs 257Target Report Mask(NEW_GENERIC_COSTS) 258Use the new generic RTX cost tables if new core-specific cost table not available (transitional). 259 260mfix-cortex-m3-ldrd 261Target Report Var(fix_cm3_ldrd) Init(2) 262Avoid overlapping destination and address registers on LDRD instructions 263that may trigger Cortex-M3 errata. 264 265munaligned-access 266Target Report Var(unaligned_access) Init(2) 267Enable unaligned word and halfword accesses to packed data. 268 269mneon-for-64bits 270Target Report RejectNegative Var(use_neon_for_64bits) Init(0) 271Use Neon to perform 64-bits operations rather than core registers. 272 273mslow-flash-data 274Target Report Var(target_slow_flash_data) Init(0) 275Assume loading data from flash is slower than fetching instructions. 276 277masm-syntax-unified 278Target Report Var(inline_asm_unified) Init(0) 279Assume unified syntax for Thumb inline assembly code. 280