2016-07-07 Thomas Preud'homme <thomas.preudhomme@arm.com>
[official-gcc.git] / gcc / config / arm / arm.opt
blob0ebe0174390167b79a64583c35a3f8fb018f6538
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
10 ; version.
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.
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/>.
21 HeaderInclude
22 config/arm/arm-opts.h
24 Enum
25 Name(tls_type) Type(enum arm_tls_type)
26 TLS dialect to use:
28 EnumValue
29 Enum(tls_type) String(gnu) Value(TLS_GNU)
31 EnumValue
32 Enum(tls_type) String(gnu2) Value(TLS_GNU2)
34 mabi=
35 Target RejectNegative Joined Enum(arm_abi_type) Var(arm_abi) Init(ARM_DEFAULT_ABI)
36 Specify an ABI.
38 Enum
39 Name(arm_abi_type) Type(enum arm_abi_type)
40 Known ARM ABIs (for use with the -mabi= option):
42 EnumValue
43 Enum(arm_abi_type) String(apcs-gnu) Value(ARM_ABI_APCS)
45 EnumValue
46 Enum(arm_abi_type) String(atpcs) Value(ARM_ABI_ATPCS)
48 EnumValue
49 Enum(arm_abi_type) String(aapcs) Value(ARM_ABI_AAPCS)
51 EnumValue
52 Enum(arm_abi_type) String(iwmmxt) Value(ARM_ABI_IWMMXT)
54 EnumValue
55 Enum(arm_abi_type) String(aapcs-linux) Value(ARM_ABI_AAPCS_LINUX)
57 mabort-on-noreturn
58 Target Report Mask(ABORT_NORETURN)
59 Generate a call to abort if a noreturn function returns.
61 mapcs
62 Target RejectNegative Mask(APCS_FRAME) Undocumented
64 mapcs-float
65 Target Report Mask(APCS_FLOAT)
66 Pass FP arguments in FP registers.
68 mapcs-frame
69 Target Report Mask(APCS_FRAME)
70 Generate APCS conformant stack frames.
72 mapcs-reentrant
73 Target Report Mask(APCS_REENT)
74 Generate re-entrant, PIC code.
76 mapcs-stack-check
77 Target Report Mask(APCS_STACK) Undocumented
79 march=
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.
85 EnumValue
86 Enum(arm_arch) String(native) Value(-1) DriverOnly
88 marm
89 Target Report RejectNegative InverseMask(THUMB)
90 Generate code in 32 bit ARM state.
92 mbig-endian
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.
104 mcpu=
105 Target RejectNegative ToLower Joined Enum(processor_type) Var(arm_cpu_option) Init(arm_none)
106 Specify the name of the target CPU.
108 mfloat-abi=
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.
112 Enum
113 Name(float_abi_type) Type(enum float_abi_type)
114 Known floating-point ABIs (for use with the -mfloat-abi= option):
116 EnumValue
117 Enum(float_abi_type) String(soft) Value(ARM_FLOAT_ABI_SOFT)
119 EnumValue
120 Enum(float_abi_type) String(softfp) Value(ARM_FLOAT_ABI_SOFTFP)
122 EnumValue
123 Enum(float_abi_type) String(hard) Value(ARM_FLOAT_ABI_HARD)
125 mflip-thumb
126 Target Report Var(TARGET_FLIP_THUMB) Undocumented
127 Switch ARM/Thumb modes on alternating functions for compiler testing.
129 mfp16-format=
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.
133 Enum
134 Name(arm_fp16_format_type) Type(enum arm_fp16_format_type)
135 Known __fp16 formats (for use with the -mfp16-format= option):
137 EnumValue
138 Enum(arm_fp16_format_type) String(none) Value(ARM_FP16_FORMAT_NONE)
140 EnumValue
141 Enum(arm_fp16_format_type) String(ieee) Value(ARM_FP16_FORMAT_IEEE)
143 EnumValue
144 Enum(arm_fp16_format_type) String(alternative) Value(ARM_FP16_FORMAT_ALTERNATIVE)
146 mfpu=
147 Target RejectNegative Joined Enum(arm_fpu) Var(arm_fpu_index) Save
148 Specify the name of the target floating point hardware/format.
150 mhard-float
151 Target RejectNegative Alias(mfloat-abi=, hard) Undocumented
153 mlittle-endian
154 Target Report RejectNegative InverseMask(BIG_END)
155 Assume target CPU is configured as little endian.
157 mlong-calls
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.
165 mpic-register=
166 Target RejectNegative Joined Var(arm_pic_register_string)
167 Specify the register to be used for PIC addressing.
169 mpoke-function-name
170 Target Report Mask(POKE_FUNCTION_NAME)
171 Store function names in object code.
173 msched-prolog
174 Target Report Mask(SCHED_PROLOG)
175 Permit scheduling of a function's prologue sequence.
177 msingle-pic-base
178 Target Report Mask(SINGLE_PIC_BASE)
179 Do not load the PIC register in function prologues.
181 msoft-float
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.
188 mthumb
189 Target Report RejectNegative Mask(THUMB) Save
190 Generate code for Thumb state.
192 mthumb-interwork
193 Target Report Mask(INTERWORK)
194 Support calls between Thumb and ARM instruction sets.
196 mtls-dialect=
197 Target RejectNegative Joined Enum(tls_type) Var(target_tls_dialect) Init(TLS_GNU)
198 Specify thread local storage scheme.
200 mtp=
201 Target RejectNegative Joined Enum(arm_tp_type) Var(target_thread_pointer) Init(TP_AUTO)
202 Specify how to access the thread pointer.
204 Enum
205 Name(arm_tp_type) Type(enum arm_tp_type)
206 Valid arguments to -mtp=:
208 EnumValue
209 Enum(arm_tp_type) String(soft) Value(TP_SOFT)
211 EnumValue
212 Enum(arm_tp_type) String(auto) Value(TP_AUTO)
214 EnumValue
215 Enum(arm_tp_type) String(cp15) Value(TP_CP15)
217 mtpcs-frame
218 Target Report Mask(TPCS_FRAME)
219 Thumb: Generate (non-leaf) stack frames even if not needed.
221 mtpcs-leaf-frame
222 Target Report Mask(TPCS_LEAF_FRAME)
223 Thumb: Generate (leaf) stack frames even if not needed.
225 mtune=
226 Target RejectNegative ToLower Joined Enum(processor_type) Var(arm_tune_option) Init(arm_none)
227 Tune code for the given processor.
229 mprint-tune-info
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.
237 EnumValue
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.
248 mword-relocations
249 Target Report Var(target_word_relocations) Init(TARGET_DEFAULT_WORD_RELOCATIONS)
250 Only generate absolute relocations on word sized values.
252 mrestrict-it
253 Target Report Var(arm_restrict_it) Init(2) Save
254 Generate IT blocks appropriate for ARMv8.
256 mold-rtx-costs
257 Target Report Mask(OLD_RTX_COSTS)
258 Use the old RTX costing tables (transitional).
260 mnew-generic-costs
261 Target Report Mask(NEW_GENERIC_COSTS)
262 Use the new generic RTX cost tables if new core-specific cost table not available (transitional).
264 mfix-cortex-m3-ldrd
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.
269 munaligned-access
270 Target Report Var(unaligned_access) Init(2) Save
271 Enable unaligned word and halfword accesses to packed data.
273 mneon-for-64bits
274 Target Report RejectNegative Var(use_neon_for_64bits) Init(0)
275 Use Neon to perform 64-bits operations rather than core registers.
277 mslow-flash-data
278 Target Report Var(target_slow_flash_data) Init(0)
279 Assume loading data from flash is slower than fetching instructions.
281 masm-syntax-unified
282 Target Report Var(inline_asm_unified) Init(0) Save
283 Assume unified syntax for inline assembly code.