1 ; Options for the ARM port of the compiler.
3 ; Copyright (C) 2005-2016 Free Software Foundation, Inc.
5 ; This file is part of GCC.
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
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
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/>.
25 Name(tls_type) Type(enum arm_tls_type)
29 Enum(tls_type) String(gnu) Value(TLS_GNU)
32 Enum(tls_type) String(gnu2) Value(TLS_GNU2)
35 Target RejectNegative Joined Enum(arm_abi_type) Var(arm_abi) Init(ARM_DEFAULT_ABI)
39 Name(arm_abi_type) Type(enum arm_abi_type)
40 Known ARM ABIs (for use with the -mabi= option):
43 Enum(arm_abi_type) String(apcs-gnu) Value(ARM_ABI_APCS)
46 Enum(arm_abi_type) String(atpcs) Value(ARM_ABI_ATPCS)
49 Enum(arm_abi_type) String(aapcs) Value(ARM_ABI_AAPCS)
52 Enum(arm_abi_type) String(iwmmxt) Value(ARM_ABI_IWMMXT)
55 Enum(arm_abi_type) String(aapcs-linux) Value(ARM_ABI_AAPCS_LINUX)
58 Target Report Mask(ABORT_NORETURN)
59 Generate a call to abort if a noreturn function returns.
62 Target RejectNegative Mask(APCS_FRAME) Undocumented
65 Target Report Mask(APCS_FLOAT)
66 Pass FP arguments in FP registers.
69 Target Report Mask(APCS_FRAME)
70 Generate APCS conformant stack frames.
73 Target Report Mask(APCS_REENT)
74 Generate re-entrant, PIC code.
77 Target Report Mask(APCS_STACK) Undocumented
80 Target RejectNegative ToLower Joined Enum(arm_arch) Var(arm_arch_option)
81 Specify the name of the target architecture.
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.
86 Enum(arm_arch) String(native) Value(-1) DriverOnly
89 Target Report RejectNegative InverseMask(THUMB)
90 Generate code in 32 bit ARM state.
93 Target Report RejectNegative Mask(BIG_END)
94 Assume target CPU is configured as big endian.
96 mcallee-super-interworking
97 Target Report Mask(CALLEE_INTERWORKING)
98 Thumb: Assume non-static functions may be called from ARM code.
100 mcaller-super-interworking
101 Target Report Mask(CALLER_INTERWORKING)
102 Thumb: Assume function pointers may go to non-Thumb aware code.
105 Target RejectNegative ToLower Joined Enum(processor_type) Var(arm_cpu_option) Init(arm_none)
106 Specify the name of the target CPU.
109 Target RejectNegative Joined Enum(float_abi_type) Var(arm_float_abi) Init(TARGET_DEFAULT_FLOAT_ABI)
110 Specify if floating point hardware should be used.
113 Name(float_abi_type) Type(enum float_abi_type)
114 Known floating-point ABIs (for use with the -mfloat-abi= option):
117 Enum(float_abi_type) String(soft) Value(ARM_FLOAT_ABI_SOFT)
120 Enum(float_abi_type) String(softfp) Value(ARM_FLOAT_ABI_SOFTFP)
123 Enum(float_abi_type) String(hard) Value(ARM_FLOAT_ABI_HARD)
126 Target Report Var(TARGET_FLIP_THUMB) Undocumented
127 Switch ARM/Thumb modes on alternating functions for compiler testing.
130 Target RejectNegative Joined Enum(arm_fp16_format_type) Var(arm_fp16_format) Init(ARM_FP16_FORMAT_NONE)
131 Specify the __fp16 floating-point format.
134 Name(arm_fp16_format_type) Type(enum arm_fp16_format_type)
135 Known __fp16 formats (for use with the -mfp16-format= option):
138 Enum(arm_fp16_format_type) String(none) Value(ARM_FP16_FORMAT_NONE)
141 Enum(arm_fp16_format_type) String(ieee) Value(ARM_FP16_FORMAT_IEEE)
144 Enum(arm_fp16_format_type) String(alternative) Value(ARM_FP16_FORMAT_ALTERNATIVE)
147 Target RejectNegative Joined Enum(arm_fpu) Var(arm_fpu_index) Save
148 Specify the name of the target floating point hardware/format.
151 Target RejectNegative Alias(mfloat-abi=, hard) Undocumented
154 Target Report RejectNegative InverseMask(BIG_END)
155 Assume target CPU is configured as little endian.
158 Target Report Mask(LONG_CALLS)
159 Generate call insns as indirect calls, if necessary.
161 mpic-data-is-text-relative
162 Target Report Var(arm_pic_data_is_text_relative) Init(TARGET_DEFAULT_PIC_DATA_IS_TEXT_RELATIVE)
163 Assume data segments are relative to text segment.
166 Target RejectNegative Joined Var(arm_pic_register_string)
167 Specify the register to be used for PIC addressing.
170 Target Report Mask(POKE_FUNCTION_NAME)
171 Store function names in object code.
174 Target Report Mask(SCHED_PROLOG)
175 Permit scheduling of a function's prologue sequence.
178 Target Report Mask(SINGLE_PIC_BASE)
179 Do not load the PIC register in function prologues.
182 Target RejectNegative Alias(mfloat-abi=, soft) Undocumented
184 mstructure-size-boundary=
185 Target RejectNegative Joined UInteger Var(arm_structure_size_boundary) Init(DEFAULT_STRUCTURE_SIZE_BOUNDARY)
186 Specify the minimum bit alignment of structures.
189 Target Report RejectNegative Mask(THUMB) Save
190 Generate code for Thumb state.
193 Target Report Mask(INTERWORK)
194 Support calls between Thumb and ARM instruction sets.
197 Target RejectNegative Joined Enum(tls_type) Var(target_tls_dialect) Init(TLS_GNU)
198 Specify thread local storage scheme.
201 Target RejectNegative Joined Enum(arm_tp_type) Var(target_thread_pointer) Init(TP_AUTO)
202 Specify how to access the thread pointer.
205 Name(arm_tp_type) Type(enum arm_tp_type)
206 Valid arguments to -mtp=:
209 Enum(arm_tp_type) String(soft) Value(TP_SOFT)
212 Enum(arm_tp_type) String(auto) Value(TP_AUTO)
215 Enum(arm_tp_type) String(cp15) Value(TP_CP15)
218 Target Report Mask(TPCS_FRAME)
219 Thumb: Generate (non-leaf) stack frames even if not needed.
222 Target Report Mask(TPCS_LEAF_FRAME)
223 Thumb: Generate (leaf) stack frames even if not needed.
226 Target RejectNegative ToLower Joined Enum(processor_type) Var(arm_tune_option) Init(arm_none)
227 Tune code for the given processor.
230 Target Report RejectNegative Var(print_tune_info) Init(0)
231 Print CPU tuning information as comment in assembler file. This is
232 an option used only for regression testing of the compiler and not
233 intended for ordinary use in compiling code.
235 ; Other processor_type values are loaded from arm-tables.opt
236 ; but that is a generated file and this is an odd-one-out.
238 Enum(processor_type) String(native) Value(-1) DriverOnly
240 mvectorize-with-neon-quad
241 Target Report RejectNegative InverseMask(NEON_VECTORIZE_DOUBLE)
242 Use Neon quad-word (rather than double-word) registers for vectorization.
244 mvectorize-with-neon-double
245 Target Report RejectNegative Mask(NEON_VECTORIZE_DOUBLE)
246 Use Neon double-word (rather than quad-word) registers for vectorization.
249 Target Report Var(target_word_relocations) Init(TARGET_DEFAULT_WORD_RELOCATIONS)
250 Only generate absolute relocations on word sized values.
253 Target Report Var(arm_restrict_it) Init(2) Save
254 Generate IT blocks appropriate for ARMv8.
257 Target Report Mask(OLD_RTX_COSTS)
258 Use the old RTX costing tables (transitional).
261 Target Report Mask(NEW_GENERIC_COSTS)
262 Use the new generic RTX cost tables if new core-specific cost table not available (transitional).
265 Target Report Var(fix_cm3_ldrd) Init(2)
266 Avoid overlapping destination and address registers on LDRD instructions
267 that may trigger Cortex-M3 errata.
270 Target Report Var(unaligned_access) Init(2) Save
271 Enable unaligned word and halfword accesses to packed data.
274 Target Report RejectNegative Var(use_neon_for_64bits) Init(0)
275 Use Neon to perform 64-bits operations rather than core registers.
278 Target Report Var(target_slow_flash_data) Init(0)
279 Assume loading data from flash is slower than fetching instructions.
282 Target Report Var(inline_asm_unified) Init(0) Save
283 Assume unified syntax for inline assembly code.