1 ; Options for the ARM port of the compiler.
3 ; Copyright (C) 2005-2017 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 const char *x_arm_arch_string
28 const char *x_arm_cpu_string
31 const char *x_arm_tune_string
34 Name(tls_type) Type(enum arm_tls_type)
38 Enum(tls_type) String(gnu) Value(TLS_GNU)
41 Enum(tls_type) String(gnu2) Value(TLS_GNU2)
44 Target RejectNegative Joined Enum(arm_abi_type) Var(arm_abi) Init(ARM_DEFAULT_ABI)
48 Name(arm_abi_type) Type(enum arm_abi_type)
49 Known ARM ABIs (for use with the -mabi= option):
52 Enum(arm_abi_type) String(apcs-gnu) Value(ARM_ABI_APCS)
55 Enum(arm_abi_type) String(atpcs) Value(ARM_ABI_ATPCS)
58 Enum(arm_abi_type) String(aapcs) Value(ARM_ABI_AAPCS)
61 Enum(arm_abi_type) String(iwmmxt) Value(ARM_ABI_IWMMXT)
64 Enum(arm_abi_type) String(aapcs-linux) Value(ARM_ABI_AAPCS_LINUX)
67 Target Report Mask(ABORT_NORETURN)
68 Generate a call to abort if a noreturn function returns.
71 Target RejectNegative Mask(APCS_FRAME) Undocumented
74 Target Report Mask(APCS_FRAME)
75 Generate APCS conformant stack frames.
78 Target Report Mask(APCS_REENT)
79 Generate re-entrant, PIC code.
82 Target Report Mask(APCS_STACK) Undocumented
85 Target RejectNegative ToLower Joined Var(arm_arch_string)
86 Specify the name of the target architecture.
88 ; Other arm_arch values are loaded from arm-tables.opt
89 ; but that is a generated file and this is an odd-one-out.
91 Enum(arm_arch) String(native) Value(-1) DriverOnly
94 Target Report RejectNegative Negative(mthumb) InverseMask(THUMB)
95 Generate code in 32 bit ARM state.
98 Target Report RejectNegative Negative(mlittle-endian) Mask(BIG_END)
99 Assume target CPU is configured as big endian.
101 mcallee-super-interworking
102 Target Report Mask(CALLEE_INTERWORKING)
103 Thumb: Assume non-static functions may be called from ARM code.
105 mcaller-super-interworking
106 Target Report Mask(CALLER_INTERWORKING)
107 Thumb: Assume function pointers may go to non-Thumb aware code.
110 Target RejectNegative ToLower Joined Var(arm_cpu_string)
111 Specify the name of the target CPU.
114 Target RejectNegative Joined Enum(float_abi_type) Var(arm_float_abi) Init(TARGET_DEFAULT_FLOAT_ABI)
115 Specify if floating point hardware should be used.
118 Target RejectNegative Var(use_cmse)
119 Specify that the compiler should target secure code as per ARMv8-M Security Extensions.
122 Name(float_abi_type) Type(enum float_abi_type)
123 Known floating-point ABIs (for use with the -mfloat-abi= option):
126 Enum(float_abi_type) String(soft) Value(ARM_FLOAT_ABI_SOFT)
129 Enum(float_abi_type) String(softfp) Value(ARM_FLOAT_ABI_SOFTFP)
132 Enum(float_abi_type) String(hard) Value(ARM_FLOAT_ABI_HARD)
135 Target Report Var(TARGET_FLIP_THUMB) Undocumented
136 Switch ARM/Thumb modes on alternating functions for compiler testing.
139 Target RejectNegative Joined Enum(arm_fp16_format_type) Var(arm_fp16_format) Init(ARM_FP16_FORMAT_NONE)
140 Specify the __fp16 floating-point format.
143 Name(arm_fp16_format_type) Type(enum arm_fp16_format_type)
144 Known __fp16 formats (for use with the -mfp16-format= option):
147 Enum(arm_fp16_format_type) String(none) Value(ARM_FP16_FORMAT_NONE)
150 Enum(arm_fp16_format_type) String(ieee) Value(ARM_FP16_FORMAT_IEEE)
153 Enum(arm_fp16_format_type) String(alternative) Value(ARM_FP16_FORMAT_ALTERNATIVE)
156 Target RejectNegative Joined Enum(arm_fpu) Var(arm_fpu_index) Init(TARGET_FPU_auto) Save
157 Specify the name of the target floating point hardware/format.
160 Target RejectNegative Alias(mfloat-abi=, hard) Undocumented
163 Target Report RejectNegative Negative(mbig-endian) InverseMask(BIG_END)
164 Assume target CPU is configured as little endian.
167 Target Report Mask(LONG_CALLS)
168 Generate call insns as indirect calls, if necessary.
170 mpic-data-is-text-relative
171 Target Report Var(arm_pic_data_is_text_relative) Init(TARGET_DEFAULT_PIC_DATA_IS_TEXT_RELATIVE)
172 Assume data segments are relative to text segment.
175 Target RejectNegative Joined Var(arm_pic_register_string)
176 Specify the register to be used for PIC addressing.
179 Target Report Mask(POKE_FUNCTION_NAME)
180 Store function names in object code.
183 Target Report Mask(SCHED_PROLOG)
184 Permit scheduling of a function's prologue sequence.
187 Target Report Mask(SINGLE_PIC_BASE)
188 Do not load the PIC register in function prologues.
191 Target RejectNegative Alias(mfloat-abi=, soft) Undocumented
193 mstructure-size-boundary=
194 Target RejectNegative Joined UInteger Var(arm_structure_size_boundary) Init(DEFAULT_STRUCTURE_SIZE_BOUNDARY)
195 Specify the minimum bit alignment of structures. (Deprecated).
198 Target Report RejectNegative Negative(marm) Mask(THUMB) Save
199 Generate code for Thumb state.
202 Target Report Mask(INTERWORK)
203 Support calls between Thumb and ARM instruction sets.
206 Target RejectNegative Joined Enum(tls_type) Var(target_tls_dialect) Init(TLS_GNU)
207 Specify thread local storage scheme.
210 Target RejectNegative Joined Enum(arm_tp_type) Var(target_thread_pointer) Init(TP_AUTO)
211 Specify how to access the thread pointer.
214 Name(arm_tp_type) Type(enum arm_tp_type)
215 Valid arguments to -mtp=:
218 Enum(arm_tp_type) String(soft) Value(TP_SOFT)
221 Enum(arm_tp_type) String(auto) Value(TP_AUTO)
224 Enum(arm_tp_type) String(cp15) Value(TP_CP15)
227 Target Report Mask(TPCS_FRAME)
228 Thumb: Generate (non-leaf) stack frames even if not needed.
231 Target Report Mask(TPCS_LEAF_FRAME)
232 Thumb: Generate (leaf) stack frames even if not needed.
235 Target RejectNegative ToLower Joined Var(arm_tune_string)
236 Tune code for the given processor.
239 Target Report RejectNegative Var(print_tune_info) Init(0)
240 Print CPU tuning information as comment in assembler file. This is
241 an option used only for regression testing of the compiler and not
242 intended for ordinary use in compiling code.
244 ; Other processor_type values are loaded from arm-tables.opt
245 ; but that is a generated file and this is an odd-one-out.
247 Enum(processor_type) String(native) Value(-1) DriverOnly
249 mvectorize-with-neon-quad
250 Target Report RejectNegative InverseMask(NEON_VECTORIZE_DOUBLE)
251 Use Neon quad-word (rather than double-word) registers for vectorization.
253 mvectorize-with-neon-double
254 Target Report RejectNegative Mask(NEON_VECTORIZE_DOUBLE)
255 Use Neon double-word (rather than quad-word) registers for vectorization.
258 Target Report Var(target_word_relocations) Init(TARGET_DEFAULT_WORD_RELOCATIONS)
259 Only generate absolute relocations on word sized values.
262 Target Report Var(arm_restrict_it) Init(2) Save
263 Generate IT blocks appropriate for ARMv8.
266 Target Report Var(fix_cm3_ldrd) Init(2)
267 Avoid overlapping destination and address registers on LDRD instructions
268 that may trigger Cortex-M3 errata.
271 Target Report Var(unaligned_access) Init(2) Save
272 Enable unaligned word and halfword accesses to packed data.
275 Target Report RejectNegative Var(use_neon_for_64bits) Init(0)
276 Use Neon to perform 64-bits operations rather than core registers.
279 Target Report Var(target_slow_flash_data) Init(0)
280 Assume loading data from flash is slower than fetching instructions.
283 Target Report Var(inline_asm_unified) Init(0) Save
284 Assume unified syntax for inline assembly code.
287 Target Report Var(target_pure_code) Init(0)
288 Do not allow constant data to be placed in code sections.
291 Target Report RejectNegative Negative(mbe32) Mask(BE8)
292 When linking for big-endian targets, generate a BE8 format image.
295 Target Report RejectNegative Negative(mbe8) InverseMask(BE8)
296 When linking for big-endian targets, generate a legacy BE32 format image.