RISC-V: Error if function declared with different interrupt modes.
[official-gcc.git] / gcc / config / s390 / s390.opt
blobeb16f9c821fb05ec8b3d8cfa5cb4027d61181e09
1 ; Options for the S/390 / zSeries port of the compiler.
3 ; Copyright (C) 2005-2018 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/s390/s390-opts.h
24 ;; Definitions to add to the cl_target_option and gcc_options structures
26 ;; whether -march was specified
27 TargetVariable
28 unsigned char s390_arch_specified
30 ;; Flags derived from s390_arch
31 TargetVariable
32 int s390_arch_flags
34 ;; whether -mtune was specified
35 TargetVariable
36 unsigned char s390_tune_specified
38 ;; Flags derived from s390_tune
39 TargetVariable
40 int s390_tune_flags
42 ;; Cpu cost table (this is actually a "const struct processor_cost *")
43 Variable
44 long s390_cost_pointer
46 m31
47 Target Report RejectNegative Negative(m64) InverseMask(64BIT)
48 31 bit ABI.
50 m64
51 Target Report RejectNegative Negative(m31) Mask(64BIT)
52 64 bit ABI.
54 march=
55 Target RejectNegative Joined Enum(processor_type) Var(s390_arch) Init(PROCESSOR_max) Save
56 Generate code for given CPU.
58 Enum
59 Name(processor_type) Type(enum processor_type)
61 EnumValue
62 Enum(processor_type) String(g5) Value(PROCESSOR_9672_G5)
64 EnumValue
65 Enum(processor_type) String(arch3) Value(PROCESSOR_9672_G5)
67 EnumValue
68 Enum(processor_type) String(g6) Value(PROCESSOR_9672_G6)
70 EnumValue
71 Enum(processor_type) String(z900) Value(PROCESSOR_2064_Z900)
73 EnumValue
74 Enum(processor_type) String(arch5) Value(PROCESSOR_2064_Z900)
76 EnumValue
77 Enum(processor_type) String(z990) Value(PROCESSOR_2084_Z990)
79 EnumValue
80 Enum(processor_type) String(arch6) Value(PROCESSOR_2084_Z990)
82 EnumValue
83 Enum(processor_type) String(z9-109) Value(PROCESSOR_2094_Z9_109)
85 EnumValue
86 Enum(processor_type) String(z9-ec) Value(PROCESSOR_2094_Z9_EC)
88 EnumValue
89 Enum(processor_type) String(arch7) Value(PROCESSOR_2094_Z9_EC)
91 EnumValue
92 Enum(processor_type) String(z10) Value(PROCESSOR_2097_Z10)
94 EnumValue
95 Enum(processor_type) String(arch8) Value(PROCESSOR_2097_Z10)
97 EnumValue
98 Enum(processor_type) String(z196) Value(PROCESSOR_2817_Z196)
100 EnumValue
101 Enum(processor_type) String(arch9) Value(PROCESSOR_2817_Z196)
103 EnumValue
104 Enum(processor_type) String(zEC12) Value(PROCESSOR_2827_ZEC12)
106 EnumValue
107 Enum(processor_type) String(arch10) Value(PROCESSOR_2827_ZEC12)
109 EnumValue
110 Enum(processor_type) String(z13) Value(PROCESSOR_2964_Z13)
112 EnumValue
113 Enum(processor_type) String(arch11) Value(PROCESSOR_2964_Z13)
115 EnumValue
116 Enum(processor_type) String(z14) Value(PROCESSOR_3906_Z14)
118 EnumValue
119 Enum(processor_type) String(arch12) Value(PROCESSOR_3906_Z14)
121 EnumValue
122 Enum(processor_type) String(native) Value(PROCESSOR_NATIVE) DriverOnly
124 mbackchain
125 Target Report Mask(BACKCHAIN) Save
126 Maintain backchain pointer.
128 mdebug
129 Target Report Mask(DEBUG_ARG) Save
130 Additional debug prints.
132 mesa
133 Target Report RejectNegative Negative(mzarch) InverseMask(ZARCH)
134 ESA/390 architecture.
136 mhard-dfp
137 Target Report Mask(HARD_DFP) Save
138 Enable decimal floating point hardware support.
140 mhard-float
141 Target Report RejectNegative Negative(msoft-float) InverseMask(SOFT_FLOAT, HARD_FLOAT) Save
142 Enable hardware floating point.
144 mhotpatch=
145 Target RejectNegative Report Joined Var(s390_deferred_options) Defer
146 Takes two non-negative integer numbers separated by a comma.
147 Prepend the function label with the number of two-byte Nop
148 instructions indicated by the first.  Append Nop instructions
149 covering the number of halfwords indicated by the second after the
150 label.  Nop instructions of the largest possible size are used
151 (six, four or two bytes), beginning with the largest possible
152 size.  Using 0 for both values disables hotpatching.
154 mlong-double-128
155 Target Report RejectNegative Negative(mlong-double-64) Mask(LONG_DOUBLE_128)
156 Use 128-bit long double.
158 mlong-double-64
159 Target Report RejectNegative Negative(mlong-double-128) InverseMask(LONG_DOUBLE_128)
160 Use 64-bit long double.
162 mhtm
163 Target Report Mask(OPT_HTM) Save
164 Use hardware transactional execution instructions.
167 Target Report Mask(OPT_VX) Save
168 Use hardware vector facility instructions and enable the vector ABI.
170 mpacked-stack
171 Target Report Mask(PACKED_STACK) Save
172 Use packed stack layout.
174 msmall-exec
175 Target Report Mask(SMALL_EXEC) Save
176 Use bras for executable < 64k.
178 msoft-float
179 Target Report RejectNegative Negative(mhard-float) Mask(SOFT_FLOAT) Save
180 Disable hardware floating point.
182 mstack-guard=
183 Target RejectNegative Negative(mno-stack-guard) Joined UInteger Var(s390_stack_guard) Save
184 Set the max. number of bytes which has to be left to stack size before a trap instruction is triggered.
186 mno-stack-guard
187 Target RejectNegative Alias(mstack-guard=,0) Negative(mstack-guard=)
188 Switches off the -mstack-guard= option.
190 mstack-size=
191 Target RejectNegative Joined UInteger Var(s390_stack_size) Save
192 Emit extra code in the function prologue in order to trap if the stack size exceeds the given limit.
194 mno-stack-size
195 Target RejectNegative Alias(mstack-size=,0) Negative(mstack-size=)
196 Switches off the -mstack-size= option.
198 mtune=
199 Target RejectNegative Joined Enum(processor_type) Var(s390_tune) Init(PROCESSOR_max) Save
200 Schedule code for given CPU.
202 mmvcle
203 Target Report Mask(MVCLE) Save
204 Use the mvcle instruction for block moves.
206 mzvector
207 Target Report Mask(ZVECTOR) Save
208 Enable the z vector language extension providing the context-sensitive
209 vector macro and enable the Altivec-style builtins in vecintrin.h.
211 mwarn-dynamicstack
212 Target Var(s390_warn_dynamicstack_p) Save
213 Warn if a function uses alloca or creates an array with dynamic size.
215 mwarn-framesize=
216 Target RejectNegative Joined UInteger Var(s390_warn_framesize) Save
217 Warn if a single function's framesize exceeds the given framesize.
219 mzarch
220 Target Report RejectNegative Negative(mesa) Mask(ZARCH)
221 z/Architecture.
223 mbranch-cost=
224 Target Report Joined RejectNegative UInteger Var(s390_branch_cost) Init(1) Save
225 Set the branch costs for conditional branch instructions.  Reasonable
226 values are small, non-negative integers.  The default branch cost is
229 mlra
230 Target Report Var(s390_lra_flag) Init(1) Save
231 Use LRA instead of reload.
233 mpic-data-is-text-relative
234 Target Report Var(s390_pic_data_is_text_relative) Init(TARGET_DEFAULT_PIC_DATA_IS_TEXT_RELATIVE)
235 Assume data segments are relative to text segment.
238 mindirect-branch=
239 Target Report RejectNegative Joined Enum(indirect_branch) Var(s390_indirect_branch) Init(indirect_branch_keep)
240 Wrap all indirect branches into execute in order to disable branch
241 prediction.
243 mindirect-branch-jump=
244 Target Report RejectNegative Joined Enum(indirect_branch) Var(s390_indirect_branch_jump) Init(indirect_branch_keep)
245 Wrap indirect table jumps and computed gotos into execute in order to
246 disable branch prediction.  Using thunk or thunk-extern with this
247 option requires the thunks to be considered signal handlers to order to
248 generate correct CFI.  For environments where unwinding (e.g. for
249 exceptions) is required please use thunk-inline instead.
251 mindirect-branch-call=
252 Target Report RejectNegative Joined Enum(indirect_branch) Var(s390_indirect_branch_call) Init(indirect_branch_keep)
253 Wrap all indirect calls into execute in order to disable branch prediction.
255 mfunction-return=
256 Target Report RejectNegative Joined Enum(indirect_branch) Var(s390_function_return) Init(indirect_branch_keep)
257 Wrap all indirect return branches into execute in order to disable branch
258 prediction.
260 mfunction-return-mem=
261 Target Report RejectNegative Joined Enum(indirect_branch) Var(s390_function_return_mem) Init(indirect_branch_keep)
262 Wrap indirect return branches into execute in order to disable branch
263 prediction. This affects only branches where the return address is
264 going to be restored from memory.
266 mfunction-return-reg=
267 Target Report RejectNegative Joined Enum(indirect_branch) Var(s390_function_return_reg) Init(indirect_branch_keep)
268 Wrap indirect return branches into execute in order to disable branch
269 prediction. This affects only branches where the return address
270 doesn't need to be restored from memory.
272 Enum
273 Name(indirect_branch) Type(enum indirect_branch)
274 Known indirect branch choices (for use with the -mindirect-branch=/-mfunction-return= options):
276 EnumValue
277 Enum(indirect_branch) String(keep) Value(indirect_branch_keep)
279 EnumValue
280 Enum(indirect_branch) String(thunk) Value(indirect_branch_thunk)
282 EnumValue
283 Enum(indirect_branch) String(thunk-inline) Value(indirect_branch_thunk_inline)
285 EnumValue
286 Enum(indirect_branch) String(thunk-extern) Value(indirect_branch_thunk_extern)
288 mindirect-branch-table
289 Target Report Var(s390_indirect_branch_table) Init(TARGET_DEFAULT_INDIRECT_BRANCH_TABLE)
290 Generate sections .s390_indirect_jump, .s390_indirect_call,
291 .s390_return_reg, and .s390_return_mem to contain the indirect branch
292 locations which have been patched as part of using one of the
293 -mindirect-branch* or -mfunction-return* options.  The sections
294 consist of an array of 32 bit elements. Each entry holds the offset
295 from the entry to the patched location.