/* This file is auto-generated by opts.sh. */
#include "config.h"
#include "system.h"
#include "coretypes.h"
#include "tm.h"
#include "opts.h"
#include "intl.h"
/* Set by -Wabi.
Warn about things that will change when compiling with an ABI-compliant compiler */
int warn_abi;
/* Set by -Waggregate-return.
Warn about returning structures, unions or arrays */
int warn_aggregate_return;
/* Set by -Wassign-intercept.
Warn whenever an Objective-C assignment is being intercepted by the garbage collector */
int warn_assign_intercept;
/* Set by -Wattributes.
Warn about inappropriate attribute usage */
int warn_attributes = 1;
/* Set by -Wbad-function-cast.
Warn about casting functions to incompatible types */
int warn_bad_function_cast;
/* Set by -Wc++-compat.
Warn about C constructs that are not in the common subset of C and C++ */
int warn_cxx_compat;
/* Set by -Wcast-align.
Warn about pointer casts which increase alignment */
int warn_cast_align;
/* Set by -Wcast-qual.
Warn about casts which discard qualifiers */
int warn_cast_qual;
/* Set by -Wchar-subscripts.
Warn about subscripts whose type is \"char\" */
int warn_char_subscripts;
/* Set by -Wconversion.
Warn about possibly confusing type conversions */
int warn_conversion;
/* Set by -Wctor-dtor-privacy.
Warn when all constructors and destructors are private */
int warn_ctor_dtor_privacy;
/* Set by -Wdeclaration-after-statement.
Warn when a declaration is found after a statement */
int warn_declaration_after_statement;
/* Set by -Wdeprecated.
Warn about deprecated compiler features */
int warn_deprecated = 1;
/* Set by -Wdeprecated-declarations.
Warn about uses of __attribute__((deprecated)) declarations */
int warn_deprecated_decl = 1;
/* Set by -Wdisabled-optimization.
Warn when an optimization pass is disabled */
int warn_disabled_optimization;
/* Set by -Wdiv-by-zero.
Warn about compile-time integer division by zero */
int warn_div_by_zero = 1;
/* Set by -Weffc++.
Warn about violations of Effective C++ style rules */
int warn_ecpp;
/* Set by -Werror.
Treat all warnings as errors */
int warnings_are_errors;
/* Set by -Wfatal-errors.
Exit on the first error occurred */
int flag_fatal_errors;
/* Set by -Wfloat-equal.
Warn if testing floating point numbers for equality */
int warn_float_equal;
/* Set by -Wformat-extra-args.
Warn if passing too many arguments to a function for its format string */
int warn_format_extra_args;
/* Set by -Wformat-nonliteral.
Warn about format strings that are not literals */
int warn_format_nonliteral;
/* Set by -Wformat-security.
Warn about possible security problems with format functions */
int warn_format_security;
/* Set by -Wformat-y2k.
Warn about strftime formats yielding 2-digit years */
int warn_format_y2k;
/* Set by -Wformat-zero-length.
Warn about zero-length formats */
int warn_format_zero_length;
/* Set by -Wimplicit-function-declaration.
Warn about implicit function declarations */
int mesg_implicit_function_declaration = -1;
/* Set by -Wimplicit-int.
Warn when a declaration does not specify a type */
int warn_implicit_int;
/* Set by -Winit-self.
Warn about variables which are initialized to themselves */
int warn_init_self;
/* Set by -Winline.
Warn when an inlined function cannot be inlined */
int warn_inline;
/* Set by -Wint-to-pointer-cast.
Warn when there is a cast to a pointer from an integer of a different size */
int warn_int_to_pointer_cast = 1;
/* Set by -Winvalid-offsetof.
Warn about invalid uses of the \"offsetof\" macro */
int warn_invalid_offsetof = 1;
/* Set by -Wlong-long.
Do not warn about using \"long long\" when -pedantic */
int warn_long_long = 1;
/* Set by -Wmissing-braces.
Warn about possibly missing braces around initializers */
int warn_missing_braces;
/* Set by -Wmissing-declarations.
Warn about global functions without previous declarations */
int warn_missing_declarations;
/* Set by -Wmissing-field-initializers.
Warn about missing fields in struct initializers */
int warn_missing_field_initializers = -1;
/* Set by -Wmissing-format-attribute.
Warn about functions which might be candidates for format attributes */
int warn_missing_format_attribute;
/* Set by -Wmissing-noreturn.
Warn about functions which might be candidates for __attribute__((noreturn)) */
int warn_missing_noreturn;
/* Set by -Wmissing-prototypes.
Warn about global functions without prototypes */
int warn_missing_prototypes;
/* Set by -Wnested-externs.
Warn about \"extern\" declarations not at file scope */
int warn_nested_externs;
/* Set by -Wnon-template-friend.
Warn when non-templatized friend functions are declared within a template */
int warn_nontemplate_friend = 1;
/* Set by -Wnon-virtual-dtor.
Warn about non-virtual destructors */
int warn_nonvdtor;
/* Set by -Wnonnull.
Warn about NULL being passed to argument slots marked as requiring non-NULL */
int warn_nonnull;
/* Set by -Wold-style-cast.
Warn if a C-style cast is used in a program */
int warn_old_style_cast;
/* Set by -Wold-style-definition.
Warn if an old-style parameter definition is used */
int warn_old_style_definition;
/* Set by -Woverloaded-virtual.
Warn about overloaded virtual function names */
int warn_overloaded_virtual;
/* Set by -Wpacked.
Warn when the packed attribute has no effect on struct layout */
int warn_packed;
/* Set by -Wpadded.
Warn when padding is required to align structure members */
int warn_padded;
/* Set by -Wparentheses.
Warn about possibly missing parentheses */
int warn_parentheses;
/* Set by -Wpmf-conversions.
Warn when converting the type of pointers to member functions */
int warn_pmf2ptr = 1;
/* Set by -Wpointer-arith.
Warn about function pointer arithmetic */
int warn_pointer_arith;
/* Set by -Wpointer-sign.
Warn when a pointer differs in signedness in an assignment */
int warn_pointer_sign = -1;
/* Set by -Wpointer-to-int-cast.
Warn when a pointer is cast to an integer of a different size */
int warn_pointer_to_int_cast = 1;
/* Set by -Wpragmas.
Warn about misuses of pragmas */
int warn_pragmas = 1;
/* Set by -Wprotocol.
Warn if inherited methods are unimplemented */
int warn_protocol = 1;
/* Set by -Wredundant-decls.
Warn about multiple declarations of the same object */
int warn_redundant_decls;
/* Set by -Wreorder.
Warn when the compiler reorders code */
int warn_reorder;
/* Set by -Wreturn-type.
Warn whenever a function's return type defaults to \"int\" (C), or about inconsistent return types (C++) */
int warn_return_type;
/* Set by -Wselector.
Warn if a selector has multiple methods */
int warn_selector;
/* Set by -Wsequence-point.
Warn about possible violations of sequence point rules */
int warn_sequence_point;
/* Set by -Wshadow.
Warn when one local variable shadows another */
int warn_shadow;
/* Set by -Wsign-compare.
Warn about signed-unsigned comparisons */
int warn_sign_compare = -1;
/* Set by -Wsign-promo.
Warn when overload promotes from unsigned to signed */
int warn_sign_promo;
/* Set by -Wstack-protector.
Warn when not issuing stack smashing protection for some reason */
int warn_stack_protect;
/* Set by -Wstrict-prototypes.
Warn about unprototyped function declarations */
int warn_strict_prototypes;
/* Set by -Wstrict-selector-match.
Warn if type signatures of candidate methods do not match exactly */
int warn_strict_selector_match;
/* Set by -Wswitch.
Warn about enumerated switches, with no default, missing a case */
int warn_switch;
/* Set by -Wswitch-default.
Warn about enumerated switches missing a \"default:\" statement */
int warn_switch_default;
/* Set by -Wswitch-enum.
Warn about all enumerated switches missing a specific case */
int warn_switch_enum;
/* Set by -Wsynth.
Warn when synthesis behavior differs from Cfront */
int warn_synth;
/* Set by -Wsystem-headers.
Do not suppress warnings from system headers */
int warn_system_headers;
/* Set by -Wtraditional.
Warn about features not present in traditional C */
int warn_traditional;
/* Set by -Wundeclared-selector.
Warn about @selector()s without previously declared methods */
int warn_undeclared_selector;
/* Set by -Wuninitialized.
Warn about uninitialized automatic variables */
int warn_uninitialized;
/* Set by -Wunreachable-code.
Warn about code that will never be executed */
int warn_notreached;
/* Set by -Wunsafe-loop-optimizations.
Warn if the loop cannot be optimized due to nontrivial assumptions. */
int warn_unsafe_loop_optimizations;
/* Set by -Wunused-function.
Warn when a function is unused */
int warn_unused_function;
/* Set by -Wunused-label.
Warn when a label is unused */
int warn_unused_label;
/* Set by -Wunused-parameter.
Warn when a function parameter is unused */
int warn_unused_parameter;
/* Set by -Wunused-value.
Warn when an expression value is unused */
int warn_unused_value;
/* Set by -Wunused-variable.
Warn when a variable is unused */
int warn_unused_variable;
/* Set by -Wvolatile-register-var.
Warn when a register variable is declared volatile */
int warn_register_var;
/* Set by -fPIC.
Generate position-independent code if possible (large mode) */
int flag_pic;
/* Set by -fPIE.
Generate position-independent code for executables if possible (large mode) */
int flag_pie;
/* Set by -fabi-version=.
*/
int flag_abi_version = 2;
/* Set by -falign-functions.
Align the start of functions */
int align_functions;
/* Set by -falign-jumps.
Align labels which are only reached by jumping */
int align_jumps;
/* Set by -falign-labels.
Align all labels */
int align_labels;
/* Set by -falign-loops.
Align the start of loops */
int align_loops;
/* Set by -fargument-alias.
Specify that arguments may alias each other and globals */
int flag_argument_noalias;
/* Set by -fasynchronous-unwind-tables.
Generate unwind tables that are exact at each instruction boundary */
int flag_asynchronous_unwind_tables;
/* Set by -fbounds-check.
Generate code to check bounds before indexing arrays */
int flag_bounds_check;
/* Set by -fbranch-count-reg.
Replace add, compare, branch with branch on count register */
int flag_branch_on_count_reg = 1;
/* Set by -fbranch-probabilities.
Use profiling information for branch probabilities */
int flag_branch_probabilities;
/* Set by -fbranch-target-load-optimize.
Perform branch target load optimization before prologue / epilogue threading */
int flag_branch_target_load_optimize;
/* Set by -fbranch-target-load-optimize2.
Perform branch target load optimization after prologue / epilogue threading */
int flag_branch_target_load_optimize2;
/* Set by -fbtr-bb-exclusive.
Restrict target load migration not to re-use registers in any basic block */
int flag_btr_bb_exclusive;
/* Set by -fcaller-saves.
Save registers around function calls */
int flag_caller_saves;
/* Set by -fcommon.
Do not put uninitialized globals in the common section */
int flag_no_common;
/* Set by -fcprop-registers.
Perform a register copy-propagation optimization pass */
int flag_cprop_registers;
/* Set by -fcrossjumping.
Perform cross-jumping optimization */
int flag_crossjumping;
/* Set by -fcse-follow-jumps.
When running CSE, follow jumps to their targets */
int flag_cse_follow_jumps;
/* Set by -fcse-skip-blocks.
When running CSE, follow conditional jumps */
int flag_cse_skip_blocks;
/* Set by -fcx-limited-range.
Omit range reduction step when performing complex division */
int flag_cx_limited_range;
/* Set by -fdata-sections.
Place data items into their own section */
int flag_data_sections;
/* Set by -fdefer-pop.
Defer popping functions args from stack until later */
int flag_defer_pop;
/* Set by -fdelayed-branch.
Attempt to fill delay slots of branch instructions */
int flag_delayed_branch;
/* Set by -fdelete-null-pointer-checks.
Delete useless null pointer checks */
int flag_delete_null_pointer_checks;
/* Set by -fearly-inlining.
Perform early inlining */
int flag_early_inlining = 1;
/* Set by -feliminate-dwarf2-dups.
Perform DWARF2 duplicate elimination */
int flag_eliminate_dwarf2_dups;
/* Set by -feliminate-unused-debug-symbols.
Perform unused type elimination in debug info */
int flag_debug_only_used_symbols;
/* Set by -feliminate-unused-debug-types.
Perform unused type elimination in debug info */
int flag_eliminate_unused_debug_types = 1;
/* Set by -fexceptions.
Enable exception handling */
int flag_exceptions;
/* Set by -fexpensive-optimizations.
Perform a number of minor, expensive optimizations */
int flag_expensive_optimizations;
/* Set by -ffinite-math-only.
Assume no NaNs or infinities are generated */
int flag_finite_math_only;
/* Set by -ffloat-store.
Don't allocate floats and doubles in extended-precision registers */
int flag_float_store;
/* Set by -fforce-addr.
Copy memory address constants into registers before use */
int flag_force_addr;
/* Set by -fforce-mem.
Copy memory operands into registers before use */
int flag_force_mem;
/* Set by -ffriend-injection.
Inject friend functions into enclosing namespace */
int flag_friend_injection;
/* Set by -ffunction-cse.
Allow function addresses to be held in registers */
int flag_no_function_cse;
/* Set by -ffunction-sections.
Place each function into its own section */
int flag_function_sections;
/* Set by -fgcse.
Perform global common subexpression elimination */
int flag_gcse;
/* Set by -fgcse-after-reload.
Perform global common subexpression elimination after register allocation */
int flag_gcse_after_reload;
/* Set by -fgcse-las.
Perform redundant load after store elimination in global common subexpression */
int flag_gcse_las = 0;
/* Set by -fgcse-lm.
Perform enhanced load motion during global common subexpression elimination */
int flag_gcse_lm = 1;
/* Set by -fgcse-sm.
Perform store motion after global common subexpression elimination */
int flag_gcse_sm = 0;
/* Set by -fguess-branch-probability.
Enable guessing of branch probabilities */
int flag_guess_branch_prob;
/* Set by -fident.
Process #ident directives */
int flag_no_ident;
/* Set by -fif-conversion.
Perform conversion of conditional jumps to branchless equivalents */
int flag_if_conversion;
/* Set by -fif-conversion2.
Perform conversion of conditional jumps to conditional execution */
int flag_if_conversion2;
/* Set by -finhibit-size-directive.
Do not generate .size directives */
int flag_inhibit_size_directive;
/* Set by -finline.
Pay attention to the \"inline\" keyword */
int flag_no_inline = 2;
/* Set by -finline-functions.
Integrate simple functions into their callers */
int flag_inline_functions;
/* Set by -finline-functions-called-once.
Integrate functions called once into their callers */
int flag_inline_functions_called_once = 1;
/* Set by -finstrument-functions.
Instrument function entry and exit with profiling calls */
int flag_instrument_function_entry_exit;
/* Set by -fipa-cp.
Perform Interprocedural constant propagation */
int flag_ipa_cp;
/* Set by -fipa-pure-const.
Discover pure and const functions */
int flag_ipa_pure_const = 0;
/* Set by -fipa-reference.
Discover readonly and non addressable static variables */
int flag_ipa_reference = 0;
/* Set by -fipa-type-escape.
Type based escape and alias analysis */
int flag_ipa_type_escape = 0;
/* Set by -fivopts.
Optimize induction variables on trees */
int flag_ivopts = 1;
/* Set by -fjump-tables.
Use jump tables for sufficiently large switch statements */
int flag_jump_tables = 1;
/* Set by -fkeep-inline-functions.
Generate code for functions even if they are fully inlined */
int flag_keep_inline_functions;
/* Set by -fkeep-static-consts.
Emit static const variables even if they are not used */
int flag_keep_static_consts = 1;
/* Set by -fleading-underscore.
Give external symbols a leading underscore */
int flag_leading_underscore = -1;
/* Set by -floop-optimize.
Perform loop optimizations */
int flag_loop_optimize;
/* Set by -floop-optimize2.
Perform loop optimizations using the new loop optimizer */
int flag_loop_optimize2;
/* Set by -fmath-errno.
Set errno after built-in math functions */
int flag_errno_math = 1;
/* Set by -fmem-report.
Report on permanent memory allocation */
int mem_report;
/* Set by -fmerge-all-constants.
Attempt to merge identical constants and constant variables */
int flag_merge_constants = 1;
/* Set by -fmodulo-sched.
Perform SMS based modulo scheduling before the first scheduling pass */
int flag_modulo_sched;
/* Set by -fmove-loop-invariants.
Move loop invariant computations out of loops */
int flag_move_loop_invariants;
/* Set by -fmudflap.
Add mudflap bounds-checking instrumentation for single-threaded program */
int flag_mudflap;
/* Set by -fmudflapir.
Ignore read operations when inserting mudflap instrumentation */
int flag_mudflap_ignore_reads;
/* Set by -fmudflapth.
Add mudflap bounds-checking instrumentation for multi-threaded program */
int flag_mudflap_threads;
/* Set by -fnon-call-exceptions.
Support synchronous non-call exceptions */
int flag_non_call_exceptions;
/* Set by -fobjc-call-cxx-cdtors.
Generate special Objective-C methods to initialize/destroy non-POD C++ ivars, if needed */
int flag_objc_call_cxx_cdtors;
/* Set by -fobjc-direct-dispatch.
Allow fast jumps to the message dispatcher */
int flag_objc_direct_dispatch;
/* Set by -fobjc-exceptions.
Enable Objective-C exception and synchronization syntax */
int flag_objc_exceptions;
/* Set by -fobjc-gc.
Enable garbage collection (GC) in Objective-C/Objective-C++ programs */
int flag_objc_gc;
/* Set by -fobjc-sjlj-exceptions.
Enable Objective-C setjmp exception handling runtime */
int flag_objc_sjlj_exceptions = -1;
/* Set by -fomit-frame-pointer.
When possible do not generate stack frames */
int flag_omit_frame_pointer;
/* Set by -foptimize-register-move.
Do the full register move optimization pass */
int flag_regmove;
/* Set by -foptimize-sibling-calls.
Optimize sibling and tail recursive calls */
int flag_optimize_sibling_calls;
/* Set by -fpack-struct.
Pack structure members together without holes */
int flag_pack_struct;
/* Set by -fpeel-loops.
Perform loop peeling */
int flag_peel_loops;
/* Set by -fpeephole.
Enable machine specific peephole optimizations */
int flag_no_peephole;
/* Set by -fpeephole2.
Enable an RTL peephole pass before sched2 */
int flag_peephole2;
/* Set by -fprefetch-loop-arrays.
Generate prefetch instructions, if available, for arrays in loops */
int flag_prefetch_loop_arrays;
/* Set by -fprofile.
Enable basic program profiling code */
int profile_flag;
/* Set by -fprofile-arcs.
Insert arc-based program profiling code */
int profile_arc_flag;
/* Set by -fprofile-values.
Insert code to profile values of expressions */
int flag_profile_values;
/* Set by -frename-registers.
Perform a register renaming optimization pass */
int flag_rename_registers = 2;
/* Set by -freorder-blocks.
Reorder basic blocks to improve code placement */
int flag_reorder_blocks;
/* Set by -freorder-blocks-and-partition.
Reorder basic blocks and partition into hot and cold sections */
int flag_reorder_blocks_and_partition;
/* Set by -freorder-functions.
Reorder functions to improve code placement */
int flag_reorder_functions;
/* Set by -frerun-cse-after-loop.
Add a common subexpression elimination pass after loop optimizations */
int flag_rerun_cse_after_loop = 2;
/* Set by -frerun-loop-opt.
Run the loop optimizer twice */
int flag_rerun_loop_opt;
/* Set by -freschedule-modulo-scheduled-loops.
Enable/Disable the traditional scheduling in loops that already passed modulo scheduling */
int flag_resched_modulo_sched;
/* Set by -frounding-math.
Disable optimizations that assume default FP rounding behavior */
int flag_rounding_math;
/* Set by -fsched-interblock.
Enable scheduling across basic blocks */
int flag_schedule_interblock = 1;
/* Set by -fsched-spec.
Allow speculative motion of non-loads */
int flag_schedule_speculative = 1;
/* Set by -fsched-spec-load.
Allow speculative motion of some loads */
int flag_schedule_speculative_load;
/* Set by -fsched-spec-load-dangerous.
Allow speculative motion of more loads */
int flag_schedule_speculative_load_dangerous;
/* Set by -fsched-stalled-insns.
Allow premature scheduling of queued insns */
int flag_sched_stalled_insns;
/* Set by -fsched-stalled-insns-dep.
Set dependence distance checking in premature scheduling of queued insns */
int flag_sched_stalled_insns_dep = 1;
/* Set by -fsched2-use-superblocks.
If scheduling post reload, do superblock scheduling */
int flag_sched2_use_superblocks;
/* Set by -fsched2-use-traces.
If scheduling post reload, do trace scheduling */
int flag_sched2_use_traces;
/* Set by -fschedule-insns.
Reschedule instructions before register allocation */
int flag_schedule_insns;
/* Set by -fschedule-insns2.
Reschedule instructions after register allocation */
int flag_schedule_insns_after_reload;
/* Set by -fshared-data.
Mark data as shared rather than private */
int flag_shared_data;
/* Set by -fshow-column.
Show column numbers in diagnostics, when available. Default on */
int flag_show_column = 1;
/* Set by -fsignaling-nans.
Disable optimizations observable by IEEE signaling NaNs */
int flag_signaling_nans;
/* Set by -fsingle-precision-constant.
Convert floating point constants to single precision constants */
int flag_single_precision_constant;
/* Set by -fsplit-ivs-in-unroller.
Split lifetimes of induction variables when loops are unrolled */
int flag_split_ivs_in_unroller = 1;
/* Set by -fstack-check.
Insert stack checking code into the program */
int flag_stack_check;
/* Set by -fstack-protector.
Use propolice as a stack protection method */
int flag_stack_protect;
/* Set by -fstrength-reduce.
Perform strength reduction optimizations */
int flag_strength_reduce;
/* Set by -fstrict-aliasing.
Assume strict aliasing rules apply */
int flag_strict_aliasing;
/* Set by -fsyntax-only.
Check for syntax errors, then stop */
int flag_syntax_only;
/* Set by -ftest-coverage.
Create data files needed by \"gcov\" */
int flag_test_coverage;
/* Set by -fthread-jumps.
Perform jump threading optimizations */
int flag_thread_jumps;
/* Set by -ftime-report.
Report the time taken by each compiler pass */
int time_report;
/* Set by -ftracer.
Perform superblock formation via tail duplication */
int flag_tracer;
/* Set by -ftrapping-math.
Assume floating-point operations can trap */
int flag_trapping_math = 1;
/* Set by -ftrapv.
Trap for signed overflow in addition, subtraction and multiplication */
int flag_trapv;
/* Set by -ftree-ccp.
Enable SSA-CCP optimization on trees */
int flag_tree_ccp;
/* Set by -ftree-ch.
Enable loop header copying on trees */
int flag_tree_ch;
/* Set by -ftree-combine-temps.
Coalesce memory temporaries in the SSA->normal pass */
int flag_tree_combine_temps;
/* Set by -ftree-copy-prop.
Enable copy propagation on trees */
int flag_tree_copy_prop;
/* Set by -ftree-copyrename.
Replace SSA temporaries with better names in copies */
int flag_tree_copyrename;
/* Set by -ftree-dce.
Enable SSA dead code elimination optimization on trees */
int flag_tree_dce;
/* Set by -ftree-dominator-opts.
Enable dominator optimizations */
int flag_tree_dom;
/* Set by -ftree-dse.
Enable dead store elimination */
int flag_tree_dse;
/* Set by -ftree-fre.
Enable Full Redundancy Elimination (FRE) on trees */
int flag_tree_fre;
/* Set by -ftree-loop-im.
Enable loop invariant motion on trees */
int flag_tree_loop_im = 1;
/* Set by -ftree-loop-ivcanon.
Create canonical induction variables in loops */
int flag_tree_loop_ivcanon = 1;
/* Set by -ftree-loop-linear.
Enable linear loop transforms on trees */
int flag_tree_loop_linear;
/* Set by -ftree-loop-optimize.
Enable loop optimizations on tree level */
int flag_tree_loop_optimize = 1;
/* Set by -ftree-lrs.
Perform live range splitting during the SSA->normal pass */
int flag_tree_live_range_split;
/* Set by -ftree-pre.
Enable SSA-PRE optimization on trees */
int flag_tree_pre;
/* Set by -ftree-salias.
Perform structural alias analysis */
int flag_tree_salias;
/* Set by -ftree-sink.
Enable SSA code sinking on trees */
int flag_tree_sink;
/* Set by -ftree-sra.
Perform scalar replacement of aggregates */
int flag_tree_sra;
/* Set by -ftree-store-ccp.
Enable SSA-CCP optimization for stores and loads */
int flag_tree_store_ccp;
/* Set by -ftree-store-copy-prop.
Enable copy propagation for stores and loads */
int flag_tree_store_copy_prop;
/* Set by -ftree-ter.
Replace temporary expressions in the SSA->normal pass */
int flag_tree_ter;
/* Set by -ftree-vect-loop-version.
Enable loop versioning when doing loop vectorization on trees */
int flag_tree_vect_loop_version = 1;
/* Set by -ftree-vectorize.
Enable loop vectorization on trees */
int flag_tree_vectorize;
/* Set by -ftree-vrp.
Perform Value Range Propagation on trees */
int flag_tree_vrp = 0;
/* Set by -funit-at-a-time.
Compile whole compilation unit at a time */
int flag_unit_at_a_time;
/* Set by -funroll-all-loops.
Perform loop unrolling for all loops */
int flag_unroll_all_loops;
/* Set by -funroll-loops.
Perform loop unrolling when iteration count is known */
int flag_unroll_loops;
/* Set by -funsafe-loop-optimizations.
Allow loop optimizations to assume that the loops behave in normal way */
int flag_unsafe_loop_optimizations;
/* Set by -funsafe-math-optimizations.
Allow math optimizations that may violate IEEE or ISO standards */
int flag_unsafe_math_optimizations;
/* Set by -funswitch-loops.
Perform loop unswitching */
int flag_unswitch_loops;
/* Set by -funwind-tables.
Just generate unwind tables for exception handling */
int flag_unwind_tables;
/* Set by -fvariable-expansion-in-unroller.
Apply variable expansion when loops are unrolled */
int flag_variable_expansion_in_unroller;
/* Set by -fverbose-asm.
Add extra commentary to assembler output */
int flag_verbose_asm;
/* Set by -fvpt.
Use expression value profiles in optimizations */
int flag_value_profile_transformations;
/* Set by -fweb.
Construct webs and split unrelated uses of single variable */
int flag_web = 2;
/* Set by -fwhole-program.
Perform whole program optimizations */
int flag_whole_program = 0;
/* Set by -fwrapv.
Assume signed arithmetic overflow wraps around */
int flag_wrapv;
/* Set by -fzero-initialized-in-bss.
Put zero initialized data in the bss section */
int flag_zero_initialized_in_bss = 1;
/* Set by -malign-functions=.
Function starts are aligned to this power of 2 */
const char *ix86_align_funcs_string;
/* Set by -malign-jumps=.
Jump targets are aligned to this power of 2 */
const char *ix86_align_jumps_string;
/* Set by -malign-loops=.
Loop code aligned to this power of 2 */
const char *ix86_align_loops_string;
/* Set by -march=.
Generate code for given CPU */
const char *ix86_arch_string;
/* Set by -masm=.
Use given assembler dialect */
const char *ix86_asm_string;
/* Set by -mbranch-cost=.
Branches are this expensive (1-5, arbitrary units) */
const char *ix86_branch_cost_string;
/* Set by -mcmodel=.
Use given x86-64 code model */
const char *ix86_cmodel_string;
/* Set by -mdebug-addr.
*/
int TARGET_DEBUG_ADDR;
/* Set by -mdebug-arg.
*/
int TARGET_DEBUG_ARG;
/* Set by -mfix-and-continue.
Generate code suitable for fast turn around debugging */
int darwin_fix_and_continue;
/* Set by -mfpmath=.
Generate floating point mathematics using given instruction set */
const char *ix86_fpmath_string;
/* Set by -mlarge-data-threshold=.
Data greater than given threshold will go into .ldata section in x86-64 medium model */
const char *ix86_section_threshold_string;
/* Set by -mmacosx-version-min=.
The earliest MacOS X version on which this program will run */
const char *darwin_macosx_version_min;
/* Set by -mone-byte-bool.
Set sizeof(bool) to 1 */
int darwin_one_byte_bool;
/* Set by -mpreferred-stack-boundary=.
Attempt to keep stack aligned to this power of 2 */
const char *ix86_preferred_stack_boundary_string;
/* Set by -mregparm=.
Number of registers used to pass integer arguments */
const char *ix86_regparm_string;
/* Set by -mtls-dialect=.
Use given thread-local storage dialect */
const char *ix86_tls_dialect_string;
/* Set by -mtune=.
Schedule code for given CPU */
const char *ix86_tune_string;
/* Set by -pedantic.
Issue warnings needed for strict compliance to the standard */
int pedantic;
/* Set by -quiet.
Do not display functions compiled or elapsed time */
int quiet_flag;
/* Set by -version.
Display the compiler's version */
int version_flag;
/* Set by -w.
Suppress warnings */
int inhibit_warnings;
/* Local state variables. */
static int VAR_m386;
static int VAR_m486;
static int VAR_mintel_syntax;
static int VAR_mpentium;
static int VAR_mpentiumpro;
const char * const lang_names[] =
{
"C",
"C++",
"ObjC",
"ObjC++",
0
};
const unsigned int cl_options_count = N_OPTS;
const struct cl_option cl_options[] =
{
{ "--help",
"Display this information",
N_OPTS, 5,
CL_COMMON,
0, CLVC_BOOLEAN, 0 },
{ "--output-pch=",
0,
N_OPTS, 12,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_JOINED | CL_SEPARATE,
0, CLVC_STRING, 0 },
{ "--param",
"--param = Set parameter to value. See below for a complete list of parameters",
N_OPTS, 6,
CL_COMMON | CL_SEPARATE,
0, CLVC_BOOLEAN, 0 },
{ "--target-help",
0,
N_OPTS, 12,
CL_COMMON,
0, CLVC_BOOLEAN, 0 },
{ "--version",
0,
N_OPTS, 8,
CL_COMMON,
0, CLVC_BOOLEAN, 0 },
{ "-A",
"-A= Assert the to . Putting '-' before disables the to ",
N_OPTS, 1,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_JOINED | CL_SEPARATE,
0, CLVC_STRING, 0 },
{ "-C",
"Do not discard comments",
N_OPTS, 1,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-CC",
"Do not discard comments in macro expansions",
N_OPTS, 2,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-D",
"-D[=] Define a with as its value. If just is given, is taken to be 1",
N_OPTS, 1,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_JOINED | CL_SEPARATE,
0, CLVC_STRING, 0 },
{ "-E",
0,
N_OPTS, 1,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_UNDOCUMENTED,
0, CLVC_BOOLEAN, 0 },
{ "-F",
"-F Add to the end of the main framework include path",
N_OPTS, 1,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_JOINED | CL_SEPARATE,
0, CLVC_STRING, 0 },
{ "-G",
"-G Put global and static data smaller than bytes into a special section (on some targets)",
N_OPTS, 1,
CL_COMMON | CL_JOINED | CL_SEPARATE | CL_UINTEGER,
0, CLVC_BOOLEAN, 0 },
{ "-H",
"Print the name of header files as they are used",
N_OPTS, 1,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-I",
"-I Add to the end of the main include path",
N_OPTS, 1,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_JOINED | CL_SEPARATE,
0, CLVC_STRING, 0 },
{ "-M",
"Generate make dependencies",
N_OPTS, 1,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-MD",
"Generate make dependencies and compile",
N_OPTS, 2,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_SEPARATE,
0, CLVC_BOOLEAN, 0 },
{ "-MF",
"-MF Write dependency output to the given file",
N_OPTS, 2,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_JOINED | CL_SEPARATE,
0, CLVC_STRING, 0 },
{ "-MG",
"Treat missing header files as generated files",
N_OPTS, 2,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-MM",
"Like -M but ignore system header files",
N_OPTS, 2,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-MMD",
"Like -MD but ignore system header files",
N_OPTS, 3,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_SEPARATE,
0, CLVC_BOOLEAN, 0 },
{ "-MP",
"Generate phony targets for all headers",
N_OPTS, 2,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-MQ",
"-MQ Add a MAKE-quoted target",
N_OPTS, 2,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_JOINED | CL_SEPARATE,
0, CLVC_STRING, 0 },
{ "-MT",
"-MT Add an unquoted target",
N_OPTS, 2,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_JOINED | CL_SEPARATE,
0, CLVC_STRING, 0 },
{ "-O",
"-O Set optimization level to ",
N_OPTS, 1,
CL_COMMON | CL_JOINED | CL_MISSING_OK,
0, CLVC_STRING, 0 },
{ "-Os",
"Optimize for space rather than speed",
OPT_O, 2,
CL_COMMON,
0, CLVC_BOOLEAN, 0 },
{ "-P",
"Do not generate #line directives",
N_OPTS, 1,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-U",
"-U Undefine ",
N_OPTS, 1,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_JOINED | CL_SEPARATE,
0, CLVC_STRING, 0 },
{ "-W",
"This switch is deprecated; use -Wextra instead",
N_OPTS, 1,
CL_COMMON | CL_REJECT_NEGATIVE,
0, CLVC_BOOLEAN, 0 },
{ "-Wabi",
"Warn about things that will change when compiling with an ABI-compliant compiler",
N_OPTS, 4,
CL_CXX | CL_ObjCXX,
&warn_abi, CLVC_BOOLEAN, 0 },
{ "-Waggregate-return",
"Warn about returning structures, unions or arrays",
N_OPTS, 17,
CL_COMMON,
&warn_aggregate_return, CLVC_BOOLEAN, 0 },
{ "-Wall",
"Enable most warning messages",
N_OPTS, 4,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-Wassign-intercept",
"Warn whenever an Objective-C assignment is being intercepted by the garbage collector",
N_OPTS, 17,
CL_ObjC | CL_ObjCXX,
&warn_assign_intercept, CLVC_BOOLEAN, 0 },
{ "-Wattributes",
"Warn about inappropriate attribute usage",
N_OPTS, 11,
CL_COMMON,
&warn_attributes, CLVC_BOOLEAN, 0 },
{ "-Wbad-function-cast",
"Warn about casting functions to incompatible types",
N_OPTS, 18,
CL_C | CL_ObjC,
&warn_bad_function_cast, CLVC_BOOLEAN, 0 },
{ "-Wc++-compat",
"Warn about C constructs that are not in the common subset of C and C++",
N_OPTS, 11,
CL_C,
&warn_cxx_compat, CLVC_BOOLEAN, 0 },
{ "-Wcast-align",
"Warn about pointer casts which increase alignment",
N_OPTS, 11,
CL_COMMON,
&warn_cast_align, CLVC_BOOLEAN, 0 },
{ "-Wcast-qual",
"Warn about casts which discard qualifiers",
N_OPTS, 10,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
&warn_cast_qual, CLVC_BOOLEAN, 0 },
{ "-Wchar-subscripts",
"Warn about subscripts whose type is \"char\"",
N_OPTS, 16,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
&warn_char_subscripts, CLVC_BOOLEAN, 0 },
{ "-Wcomment",
"Warn about possibly nested block comments, and C++ comments spanning more than one physical line",
N_OPTS, 8,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-Wcomments",
"Synonym for -Wcomment",
N_OPTS, 9,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-Wconversion",
"Warn about possibly confusing type conversions",
N_OPTS, 11,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
&warn_conversion, CLVC_BOOLEAN, 0 },
{ "-Wctor-dtor-privacy",
"Warn when all constructors and destructors are private",
N_OPTS, 18,
CL_CXX | CL_ObjCXX,
&warn_ctor_dtor_privacy, CLVC_BOOLEAN, 0 },
{ "-Wdeclaration-after-statement",
"Warn when a declaration is found after a statement",
N_OPTS, 28,
CL_C | CL_ObjC,
&warn_declaration_after_statement, CLVC_BOOLEAN, 0 },
{ "-Wdeprecated",
"Warn about deprecated compiler features",
N_OPTS, 11,
CL_CXX | CL_ObjCXX,
&warn_deprecated, CLVC_BOOLEAN, 0 },
{ "-Wdeprecated-declarations",
"Warn about uses of __attribute__((deprecated)) declarations",
N_OPTS, 24,
CL_COMMON,
&warn_deprecated_decl, CLVC_BOOLEAN, 0 },
{ "-Wdisabled-optimization",
"Warn when an optimization pass is disabled",
N_OPTS, 22,
CL_COMMON,
&warn_disabled_optimization, CLVC_BOOLEAN, 0 },
{ "-Wdiv-by-zero",
"Warn about compile-time integer division by zero",
N_OPTS, 12,
CL_C | CL_ObjC,
&warn_div_by_zero, CLVC_BOOLEAN, 0 },
{ "-Weffc++",
"Warn about violations of Effective C++ style rules",
N_OPTS, 7,
CL_CXX | CL_ObjCXX,
&warn_ecpp, CLVC_BOOLEAN, 0 },
{ "-Wendif-labels",
"Warn about stray tokens after #elif and #endif",
N_OPTS, 13,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-Werror",
"Treat all warnings as errors",
N_OPTS, 6,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_COMMON,
&warnings_are_errors, CLVC_BOOLEAN, 0 },
{ "-Werror-implicit-function-declaration",
"Make implicit function declarations an error",
N_OPTS, 36,
CL_C | CL_ObjC | CL_REJECT_NEGATIVE,
0, CLVC_BOOLEAN, 0 },
{ "-Wextra",
"Print extra (possibly unwanted) warnings",
N_OPTS, 6,
CL_COMMON,
0, CLVC_BOOLEAN, 0 },
{ "-Wfatal-errors",
"Exit on the first error occurred",
N_OPTS, 13,
CL_COMMON,
&flag_fatal_errors, CLVC_BOOLEAN, 0 },
{ "-Wfloat-equal",
"Warn if testing floating point numbers for equality",
N_OPTS, 12,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
&warn_float_equal, CLVC_BOOLEAN, 0 },
{ "-Wformat",
"Warn about printf/scanf/strftime/strfmon format string anomalies",
N_OPTS, 7,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-Wformat-extra-args",
"Warn if passing too many arguments to a function for its format string",
N_OPTS, 18,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
&warn_format_extra_args, CLVC_BOOLEAN, 0 },
{ "-Wformat-nonliteral",
"Warn about format strings that are not literals",
N_OPTS, 18,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
&warn_format_nonliteral, CLVC_BOOLEAN, 0 },
{ "-Wformat-security",
"Warn about possible security problems with format functions",
N_OPTS, 16,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
&warn_format_security, CLVC_BOOLEAN, 0 },
{ "-Wformat-y2k",
"Warn about strftime formats yielding 2-digit years",
N_OPTS, 11,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
&warn_format_y2k, CLVC_BOOLEAN, 0 },
{ "-Wformat-zero-length",
"Warn about zero-length formats",
N_OPTS, 19,
CL_C | CL_ObjC,
&warn_format_zero_length, CLVC_BOOLEAN, 0 },
{ "-Wformat=",
0,
N_OPTS, 8,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_JOINED,
0, CLVC_STRING, 0 },
{ "-Wimplicit",
0,
N_OPTS, 9,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-Wimplicit-function-declaration",
"Warn about implicit function declarations",
N_OPTS, 30,
CL_C | CL_ObjC,
&mesg_implicit_function_declaration, CLVC_BOOLEAN, 0 },
{ "-Wimplicit-int",
"Warn when a declaration does not specify a type",
N_OPTS, 13,
CL_C | CL_ObjC,
&warn_implicit_int, CLVC_BOOLEAN, 0 },
{ "-Wimport",
"Deprecated. This switch has no effect",
N_OPTS, 7,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-Winit-self",
"Warn about variables which are initialized to themselves",
N_OPTS, 10,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
&warn_init_self, CLVC_BOOLEAN, 0 },
{ "-Winline",
"Warn when an inlined function cannot be inlined",
N_OPTS, 7,
CL_COMMON,
&warn_inline, CLVC_BOOLEAN, 0 },
{ "-Wint-to-pointer-cast",
"Warn when there is a cast to a pointer from an integer of a different size",
N_OPTS, 20,
CL_C | CL_ObjC,
&warn_int_to_pointer_cast, CLVC_BOOLEAN, 0 },
{ "-Winvalid-offsetof",
"Warn about invalid uses of the \"offsetof\" macro",
N_OPTS, 17,
CL_CXX | CL_ObjCXX,
&warn_invalid_offsetof, CLVC_BOOLEAN, 0 },
{ "-Winvalid-pch",
"Warn about PCH files that are found but not used",
N_OPTS, 12,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-Wlarger-than-",
"-Wlarger-than- Warn if an object is larger than bytes",
N_OPTS, 13,
CL_COMMON | CL_JOINED | CL_REJECT_NEGATIVE | CL_UINTEGER,
0, CLVC_BOOLEAN, 0 },
{ "-Wlong-long",
"Do not warn about using \"long long\" when -pedantic",
N_OPTS, 10,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
&warn_long_long, CLVC_BOOLEAN, 0 },
{ "-Wmain",
"Warn about suspicious declarations of \"main\"",
N_OPTS, 5,
CL_C | CL_ObjC,
0, CLVC_BOOLEAN, 0 },
{ "-Wmissing-braces",
"Warn about possibly missing braces around initializers",
N_OPTS, 15,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
&warn_missing_braces, CLVC_BOOLEAN, 0 },
{ "-Wmissing-declarations",
"Warn about global functions without previous declarations",
N_OPTS, 21,
CL_C | CL_ObjC,
&warn_missing_declarations, CLVC_BOOLEAN, 0 },
{ "-Wmissing-field-initializers",
"Warn about missing fields in struct initializers",
N_OPTS, 27,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
&warn_missing_field_initializers, CLVC_BOOLEAN, 0 },
{ "-Wmissing-format-attribute",
"Warn about functions which might be candidates for format attributes",
N_OPTS, 25,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
&warn_missing_format_attribute, CLVC_BOOLEAN, 0 },
{ "-Wmissing-include-dirs",
"Warn about user-specified include directories that do not exist",
N_OPTS, 21,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-Wmissing-noreturn",
"Warn about functions which might be candidates for __attribute__((noreturn))",
N_OPTS, 17,
CL_COMMON,
&warn_missing_noreturn, CLVC_BOOLEAN, 0 },
{ "-Wmissing-prototypes",
"Warn about global functions without prototypes",
N_OPTS, 19,
CL_C | CL_ObjC,
&warn_missing_prototypes, CLVC_BOOLEAN, 0 },
{ "-Wmultichar",
"Warn about use of multi-character character constants",
N_OPTS, 10,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-Wnested-externs",
"Warn about \"extern\" declarations not at file scope",
N_OPTS, 15,
CL_C | CL_ObjC,
&warn_nested_externs, CLVC_BOOLEAN, 0 },
{ "-Wnon-template-friend",
"Warn when non-templatized friend functions are declared within a template",
N_OPTS, 20,
CL_CXX | CL_ObjCXX,
&warn_nontemplate_friend, CLVC_BOOLEAN, 0 },
{ "-Wnon-virtual-dtor",
"Warn about non-virtual destructors",
N_OPTS, 17,
CL_CXX | CL_ObjCXX,
&warn_nonvdtor, CLVC_BOOLEAN, 0 },
{ "-Wnonnull",
"Warn about NULL being passed to argument slots marked as requiring non-NULL",
N_OPTS, 8,
CL_C | CL_ObjC,
&warn_nonnull, CLVC_BOOLEAN, 0 },
{ "-Wnormalized=",
"-Wnormalized= Warn about non-normalised Unicode strings",
N_OPTS, 12,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_JOINED,
0, CLVC_STRING, 0 },
{ "-Wold-style-cast",
"Warn if a C-style cast is used in a program",
N_OPTS, 15,
CL_CXX | CL_ObjCXX,
&warn_old_style_cast, CLVC_BOOLEAN, 0 },
{ "-Wold-style-definition",
"Warn if an old-style parameter definition is used",
N_OPTS, 21,
CL_C | CL_ObjC,
&warn_old_style_definition, CLVC_BOOLEAN, 0 },
{ "-Woverloaded-virtual",
"Warn about overloaded virtual function names",
N_OPTS, 19,
CL_CXX | CL_ObjCXX,
&warn_overloaded_virtual, CLVC_BOOLEAN, 0 },
{ "-Wpacked",
"Warn when the packed attribute has no effect on struct layout",
N_OPTS, 7,
CL_COMMON,
&warn_packed, CLVC_BOOLEAN, 0 },
{ "-Wpadded",
"Warn when padding is required to align structure members",
N_OPTS, 7,
CL_COMMON,
&warn_padded, CLVC_BOOLEAN, 0 },
{ "-Wparentheses",
"Warn about possibly missing parentheses",
N_OPTS, 12,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
&warn_parentheses, CLVC_BOOLEAN, 0 },
{ "-Wpmf-conversions",
"Warn when converting the type of pointers to member functions",
N_OPTS, 16,
CL_CXX | CL_ObjCXX,
&warn_pmf2ptr, CLVC_BOOLEAN, 0 },
{ "-Wpointer-arith",
"Warn about function pointer arithmetic",
N_OPTS, 14,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
&warn_pointer_arith, CLVC_BOOLEAN, 0 },
{ "-Wpointer-sign",
"Warn when a pointer differs in signedness in an assignment",
N_OPTS, 13,
CL_C | CL_ObjC,
&warn_pointer_sign, CLVC_BOOLEAN, 0 },
{ "-Wpointer-to-int-cast",
"Warn when a pointer is cast to an integer of a different size",
N_OPTS, 20,
CL_C | CL_ObjC,
&warn_pointer_to_int_cast, CLVC_BOOLEAN, 0 },
{ "-Wpragmas",
"Warn about misuses of pragmas",
N_OPTS, 8,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
&warn_pragmas, CLVC_BOOLEAN, 0 },
{ "-Wprotocol",
"Warn if inherited methods are unimplemented",
N_OPTS, 9,
CL_ObjC | CL_ObjCXX,
&warn_protocol, CLVC_BOOLEAN, 0 },
{ "-Wredundant-decls",
"Warn about multiple declarations of the same object",
N_OPTS, 16,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
&warn_redundant_decls, CLVC_BOOLEAN, 0 },
{ "-Wreorder",
"Warn when the compiler reorders code",
N_OPTS, 8,
CL_CXX | CL_ObjCXX,
&warn_reorder, CLVC_BOOLEAN, 0 },
{ "-Wreturn-type",
"Warn whenever a function's return type defaults to \"int\" (C), or about inconsistent return types (C++)",
N_OPTS, 12,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
&warn_return_type, CLVC_BOOLEAN, 0 },
{ "-Wselector",
"Warn if a selector has multiple methods",
N_OPTS, 9,
CL_ObjC | CL_ObjCXX,
&warn_selector, CLVC_BOOLEAN, 0 },
{ "-Wsequence-point",
"Warn about possible violations of sequence point rules",
N_OPTS, 15,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
&warn_sequence_point, CLVC_BOOLEAN, 0 },
{ "-Wshadow",
"Warn when one local variable shadows another",
N_OPTS, 7,
CL_COMMON,
&warn_shadow, CLVC_BOOLEAN, 0 },
{ "-Wsign-compare",
"Warn about signed-unsigned comparisons",
N_OPTS, 13,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
&warn_sign_compare, CLVC_BOOLEAN, 0 },
{ "-Wsign-promo",
"Warn when overload promotes from unsigned to signed",
N_OPTS, 11,
CL_CXX | CL_ObjCXX,
&warn_sign_promo, CLVC_BOOLEAN, 0 },
{ "-Wstack-protector",
"Warn when not issuing stack smashing protection for some reason",
N_OPTS, 16,
CL_COMMON,
&warn_stack_protect, CLVC_BOOLEAN, 0 },
{ "-Wstrict-aliasing",
"Warn about code which might break strict aliasing rules",
N_OPTS, 16,
CL_COMMON,
0, CLVC_BOOLEAN, 0 },
{ "-Wstrict-aliasing=",
"Warn about code which might break strict aliasing rules",
N_OPTS, 17,
CL_COMMON | CL_JOINED | CL_UINTEGER,
0, CLVC_BOOLEAN, 0 },
{ "-Wstrict-null-sentinel",
"Warn about uncasted NULL used as sentinel",
N_OPTS, 21,
CL_CXX | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-Wstrict-prototypes",
"Warn about unprototyped function declarations",
N_OPTS, 18,
CL_C | CL_ObjC,
&warn_strict_prototypes, CLVC_BOOLEAN, 0 },
{ "-Wstrict-selector-match",
"Warn if type signatures of candidate methods do not match exactly",
N_OPTS, 22,
CL_ObjC | CL_ObjCXX,
&warn_strict_selector_match, CLVC_BOOLEAN, 0 },
{ "-Wswitch",
"Warn about enumerated switches, with no default, missing a case",
N_OPTS, 7,
CL_COMMON,
&warn_switch, CLVC_BOOLEAN, 0 },
{ "-Wswitch-default",
"Warn about enumerated switches missing a \"default:\" statement",
N_OPTS, 15,
CL_COMMON,
&warn_switch_default, CLVC_BOOLEAN, 0 },
{ "-Wswitch-enum",
"Warn about all enumerated switches missing a specific case",
N_OPTS, 12,
CL_COMMON,
&warn_switch_enum, CLVC_BOOLEAN, 0 },
{ "-Wsynth",
"Warn when synthesis behavior differs from Cfront",
N_OPTS, 6,
CL_CXX | CL_ObjCXX,
&warn_synth, CLVC_BOOLEAN, 0 },
{ "-Wsystem-headers",
"Do not suppress warnings from system headers",
N_OPTS, 15,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_COMMON,
&warn_system_headers, CLVC_BOOLEAN, 0 },
{ "-Wtraditional",
"Warn about features not present in traditional C",
N_OPTS, 12,
CL_C | CL_ObjC,
&warn_traditional, CLVC_BOOLEAN, 0 },
{ "-Wtrigraphs",
"Warn if trigraphs are encountered that might affect the meaning of the program",
N_OPTS, 10,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-Wundeclared-selector",
"Warn about @selector()s without previously declared methods",
N_OPTS, 20,
CL_ObjC | CL_ObjCXX,
&warn_undeclared_selector, CLVC_BOOLEAN, 0 },
{ "-Wundef",
"Warn if an undefined macro is used in an #if directive",
N_OPTS, 6,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-Wuninitialized",
"Warn about uninitialized automatic variables",
N_OPTS, 14,
CL_COMMON,
&warn_uninitialized, CLVC_BOOLEAN, 0 },
{ "-Wunknown-pragmas",
"Warn about unrecognized pragmas",
N_OPTS, 16,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-Wunreachable-code",
"Warn about code that will never be executed",
N_OPTS, 17,
CL_COMMON,
&warn_notreached, CLVC_BOOLEAN, 0 },
{ "-Wunsafe-loop-optimizations",
"Warn if the loop cannot be optimized due to nontrivial assumptions.",
N_OPTS, 26,
CL_COMMON,
&warn_unsafe_loop_optimizations, CLVC_BOOLEAN, 0 },
{ "-Wunused",
"Enable all -Wunused- warnings",
N_OPTS, 7,
CL_COMMON,
0, CLVC_BOOLEAN, 0 },
{ "-Wunused-function",
"Warn when a function is unused",
N_OPTS, 16,
CL_COMMON,
&warn_unused_function, CLVC_BOOLEAN, 0 },
{ "-Wunused-label",
"Warn when a label is unused",
N_OPTS, 13,
CL_COMMON,
&warn_unused_label, CLVC_BOOLEAN, 0 },
{ "-Wunused-macros",
"Warn about macros defined in the main file that are not used",
N_OPTS, 14,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-Wunused-parameter",
"Warn when a function parameter is unused",
N_OPTS, 17,
CL_COMMON,
&warn_unused_parameter, CLVC_BOOLEAN, 0 },
{ "-Wunused-value",
"Warn when an expression value is unused",
N_OPTS, 13,
CL_COMMON,
&warn_unused_value, CLVC_BOOLEAN, 0 },
{ "-Wunused-variable",
"Warn when a variable is unused",
N_OPTS, 16,
CL_COMMON,
&warn_unused_variable, CLVC_BOOLEAN, 0 },
{ "-Wvariadic-macros",
"Do not warn about using variadic macros when -pedantic",
N_OPTS, 16,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-Wvolatile-register-var",
"Warn when a register variable is declared volatile",
N_OPTS, 22,
CL_COMMON,
&warn_register_var, CLVC_BOOLEAN, 0 },
{ "-Wwrite-strings",
"Give strings the type \"array of char\"",
N_OPTS, 14,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-ansi",
"A synonym for -std=c89 (for C) or -std=c++98 (for C++)",
N_OPTS, 4,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-aux-info",
"-aux-info Emit declaration information into ",
N_OPTS, 8,
CL_COMMON | CL_SEPARATE,
0, CLVC_BOOLEAN, 0 },
{ "-aux-info=",
0,
N_OPTS, 9,
CL_COMMON | CL_JOINED,
0, CLVC_STRING, 0 },
{ "-auxbase",
0,
N_OPTS, 7,
CL_COMMON | CL_SEPARATE,
0, CLVC_BOOLEAN, 0 },
{ "-auxbase-strip",
0,
N_OPTS, 13,
CL_COMMON | CL_SEPARATE,
0, CLVC_BOOLEAN, 0 },
{ "-d",
"-d Enable dumps from specific passes of the compiler",
N_OPTS, 1,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_COMMON | CL_JOINED,
0, CLVC_STRING, 0 },
{ "-dumpbase",
"-dumpbase Set the file basename to be used for dumps",
OPT_d, 8,
CL_COMMON | CL_SEPARATE,
0, CLVC_BOOLEAN, 0 },
{ "-fPIC",
"Generate position-independent code if possible (large mode)",
N_OPTS, 4,
CL_COMMON | CL_REPORT,
&flag_pic, CLVC_EQUAL, 2 },
{ "-fPIE",
"Generate position-independent code for executables if possible (large mode)",
N_OPTS, 4,
CL_COMMON | CL_REPORT,
&flag_pie, CLVC_EQUAL, 2 },
{ "-fabi-version=",
0,
N_OPTS, 13,
CL_COMMON | CL_JOINED | CL_UINTEGER,
&flag_abi_version, CLVC_BOOLEAN, 0 },
{ "-faccess-control",
"Enforce class member access control semantics",
N_OPTS, 15,
CL_CXX | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-falign-functions",
"Align the start of functions",
N_OPTS, 16,
CL_COMMON | CL_REPORT,
&align_functions, CLVC_EQUAL, 0 },
{ "-falign-functions=",
0,
N_OPTS, 17,
CL_COMMON | CL_JOINED | CL_REJECT_NEGATIVE | CL_UINTEGER,
0, CLVC_BOOLEAN, 0 },
{ "-falign-jumps",
"Align labels which are only reached by jumping",
N_OPTS, 12,
CL_COMMON | CL_REPORT,
&align_jumps, CLVC_EQUAL, 0 },
{ "-falign-jumps=",
0,
N_OPTS, 13,
CL_COMMON | CL_JOINED | CL_REJECT_NEGATIVE | CL_UINTEGER,
0, CLVC_BOOLEAN, 0 },
{ "-falign-labels",
"Align all labels",
N_OPTS, 13,
CL_COMMON | CL_REPORT,
&align_labels, CLVC_EQUAL, 0 },
{ "-falign-labels=",
0,
N_OPTS, 14,
CL_COMMON | CL_JOINED | CL_REJECT_NEGATIVE | CL_UINTEGER,
0, CLVC_BOOLEAN, 0 },
{ "-falign-loops",
"Align the start of loops",
N_OPTS, 12,
CL_COMMON | CL_REPORT,
&align_loops, CLVC_BOOLEAN, 0 },
{ "-falign-loops=",
0,
N_OPTS, 13,
CL_COMMON | CL_JOINED | CL_REJECT_NEGATIVE | CL_UINTEGER,
0, CLVC_BOOLEAN, 0 },
{ "-fall-virtual",
0,
N_OPTS, 12,
CL_CXX | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-falt-external-templates",
"Change when template instances are emitted",
N_OPTS, 23,
CL_CXX | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fargument-alias",
"Specify that arguments may alias each other and globals",
N_OPTS, 15,
CL_COMMON | CL_REPORT,
&flag_argument_noalias, CLVC_EQUAL, 0 },
{ "-fargument-noalias",
"Assume arguments may alias globals but not each other",
N_OPTS, 17,
CL_COMMON | CL_REPORT,
&flag_argument_noalias, CLVC_EQUAL, 1 },
{ "-fargument-noalias-global",
"Assume arguments alias neither each other nor globals",
N_OPTS, 24,
CL_COMMON | CL_REPORT,
&flag_argument_noalias, CLVC_EQUAL, 2 },
{ "-fasm",
"Recognize the \"asm\" keyword",
N_OPTS, 4,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fasynchronous-unwind-tables",
"Generate unwind tables that are exact at each instruction boundary",
N_OPTS, 27,
CL_COMMON | CL_REPORT,
&flag_asynchronous_unwind_tables, CLVC_BOOLEAN, 0 },
{ "-fbounds-check",
"Generate code to check bounds before indexing arrays",
N_OPTS, 13,
CL_COMMON | CL_REPORT,
&flag_bounds_check, CLVC_BOOLEAN, 0 },
{ "-fbranch-count-reg",
"Replace add, compare, branch with branch on count register",
N_OPTS, 17,
CL_COMMON | CL_REPORT,
&flag_branch_on_count_reg, CLVC_BOOLEAN, 0 },
{ "-fbranch-probabilities",
"Use profiling information for branch probabilities",
N_OPTS, 21,
CL_COMMON | CL_REPORT,
&flag_branch_probabilities, CLVC_BOOLEAN, 0 },
{ "-fbranch-target-load-optimize",
"Perform branch target load optimization before prologue / epilogue threading",
N_OPTS, 28,
CL_COMMON | CL_REPORT,
&flag_branch_target_load_optimize, CLVC_BOOLEAN, 0 },
{ "-fbranch-target-load-optimize2",
"Perform branch target load optimization after prologue / epilogue threading",
N_OPTS, 29,
CL_COMMON | CL_REPORT,
&flag_branch_target_load_optimize2, CLVC_BOOLEAN, 0 },
{ "-fbtr-bb-exclusive",
"Restrict target load migration not to re-use registers in any basic block",
N_OPTS, 17,
CL_COMMON | CL_REPORT,
&flag_btr_bb_exclusive, CLVC_BOOLEAN, 0 },
{ "-fbuiltin",
"Recognize built-in functions",
N_OPTS, 8,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fbuiltin-",
0,
N_OPTS, 9,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_JOINED,
0, CLVC_STRING, 0 },
{ "-fcall-saved-",
"-fcall-saved- Mark as being preserved across functions",
N_OPTS, 12,
CL_COMMON | CL_JOINED | CL_REJECT_NEGATIVE,
0, CLVC_STRING, 0 },
{ "-fcall-used-",
"-fcall-used- Mark as being corrupted by function calls",
N_OPTS, 11,
CL_COMMON | CL_JOINED | CL_REJECT_NEGATIVE,
0, CLVC_STRING, 0 },
{ "-fcaller-saves",
"Save registers around function calls",
N_OPTS, 13,
CL_COMMON | CL_REPORT,
&flag_caller_saves, CLVC_BOOLEAN, 0 },
{ "-fcheck-new",
"Check the return value of new",
N_OPTS, 10,
CL_CXX | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fcommon",
"Do not put uninitialized globals in the common section",
N_OPTS, 7,
CL_COMMON | CL_REPORT,
&flag_no_common, CLVC_EQUAL, 0 },
{ "-fcond-mismatch",
"Allow the arguments of the '?' operator to have different types",
N_OPTS, 14,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fconserve-space",
"Reduce the size of object files",
N_OPTS, 15,
CL_CXX | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fconst-strings",
"Make string literals \"const char[]\" not \"char[]\"",
N_OPTS, 14,
CL_CXX | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fconstant-string-class=",
"-fconst-string-class= Use class for constant strings",
N_OPTS, 23,
CL_ObjC | CL_ObjCXX | CL_JOINED,
0, CLVC_STRING, 0 },
{ "-fcprop-registers",
"Perform a register copy-propagation optimization pass",
N_OPTS, 16,
CL_COMMON | CL_REPORT,
&flag_cprop_registers, CLVC_BOOLEAN, 0 },
{ "-fcrossjumping",
"Perform cross-jumping optimization",
N_OPTS, 13,
CL_COMMON | CL_REPORT,
&flag_crossjumping, CLVC_BOOLEAN, 0 },
{ "-fcse-follow-jumps",
"When running CSE, follow jumps to their targets",
N_OPTS, 17,
CL_COMMON | CL_REPORT,
&flag_cse_follow_jumps, CLVC_BOOLEAN, 0 },
{ "-fcse-skip-blocks",
"When running CSE, follow conditional jumps",
N_OPTS, 16,
CL_COMMON | CL_REPORT,
&flag_cse_skip_blocks, CLVC_BOOLEAN, 0 },
{ "-fcx-limited-range",
"Omit range reduction step when performing complex division",
N_OPTS, 17,
CL_COMMON | CL_REPORT,
&flag_cx_limited_range, CLVC_BOOLEAN, 0 },
{ "-fdata-sections",
"Place data items into their own section",
N_OPTS, 14,
CL_COMMON | CL_REPORT,
&flag_data_sections, CLVC_BOOLEAN, 0 },
{ "-fdefault-inline",
"Inline member functions by default",
N_OPTS, 15,
CL_CXX | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fdefer-pop",
"Defer popping functions args from stack until later",
N_OPTS, 10,
CL_COMMON | CL_REPORT,
&flag_defer_pop, CLVC_BOOLEAN, 0 },
{ "-fdelayed-branch",
"Attempt to fill delay slots of branch instructions",
N_OPTS, 15,
CL_COMMON | CL_REPORT,
&flag_delayed_branch, CLVC_BOOLEAN, 0 },
{ "-fdelete-null-pointer-checks",
"Delete useless null pointer checks",
N_OPTS, 27,
CL_COMMON | CL_REPORT,
&flag_delete_null_pointer_checks, CLVC_BOOLEAN, 0 },
{ "-fdiagnostics-show-location=",
"-fdiagnostics-show-location=[once|every-line] How often to emit source location at the beginning of line-wrapped diagnostics",
N_OPTS, 27,
CL_COMMON | CL_JOINED | CL_REJECT_NEGATIVE,
0, CLVC_STRING, 0 },
{ "-fdiagnostics-show-option",
"Amend appropriate diagnostic messages with the command line option that controls them",
N_OPTS, 24,
CL_COMMON,
0, CLVC_BOOLEAN, 0 },
{ "-fdollars-in-identifiers",
"Permit '$' as an identifier character",
N_OPTS, 23,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fdump-",
"-fdump- Dump various compiler internals to a file",
N_OPTS, 6,
CL_COMMON | CL_JOINED | CL_REJECT_NEGATIVE,
0, CLVC_STRING, 0 },
{ "-fdump-unnumbered",
"Suppress output of instruction numbers and line number notes in debugging dumps",
OPT_fdump_, 16,
CL_COMMON | CL_REPORT,
&flag_dump_unnumbered, CLVC_BOOLEAN, 0 },
{ "-fearly-inlining",
"Perform early inlining",
N_OPTS, 15,
CL_COMMON | CL_REPORT,
&flag_early_inlining, CLVC_BOOLEAN, 0 },
{ "-felide-constructors",
0,
N_OPTS, 19,
CL_CXX | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-feliminate-dwarf2-dups",
"Perform DWARF2 duplicate elimination",
N_OPTS, 22,
CL_COMMON | CL_REPORT,
&flag_eliminate_dwarf2_dups, CLVC_BOOLEAN, 0 },
{ "-feliminate-unused-debug-symbols",
"Perform unused type elimination in debug info",
N_OPTS, 31,
CL_COMMON | CL_REPORT,
&flag_debug_only_used_symbols, CLVC_BOOLEAN, 0 },
{ "-feliminate-unused-debug-types",
"Perform unused type elimination in debug info",
N_OPTS, 29,
CL_COMMON | CL_REPORT,
&flag_eliminate_unused_debug_types, CLVC_BOOLEAN, 0 },
{ "-fenforce-eh-specs",
"Generate code to check exception specifications",
N_OPTS, 17,
CL_CXX | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fenum-int-equiv",
0,
N_OPTS, 15,
CL_CXX | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fexceptions",
"Enable exception handling",
N_OPTS, 11,
CL_COMMON | CL_REPORT,
&flag_exceptions, CLVC_BOOLEAN, 0 },
{ "-fexec-charset=",
"-fexec-charset= Convert all strings and character constants to character set ",
N_OPTS, 14,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_JOINED | CL_REJECT_NEGATIVE,
0, CLVC_STRING, 0 },
{ "-fexpensive-optimizations",
"Perform a number of minor, expensive optimizations",
N_OPTS, 24,
CL_COMMON | CL_REPORT,
&flag_expensive_optimizations, CLVC_BOOLEAN, 0 },
{ "-fextended-identifiers",
"Permit universal character names (\\u and \\U) in identifiers",
N_OPTS, 21,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fexternal-templates",
0,
N_OPTS, 19,
CL_CXX | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-ffast-math",
0,
N_OPTS, 10,
CL_COMMON,
0, CLVC_BOOLEAN, 0 },
{ "-ffinite-math-only",
"Assume no NaNs or infinities are generated",
N_OPTS, 17,
CL_COMMON | CL_REPORT,
&flag_finite_math_only, CLVC_BOOLEAN, 0 },
{ "-ffixed-",
"-ffixed- Mark as being unavailable to the compiler",
N_OPTS, 7,
CL_COMMON | CL_JOINED | CL_REJECT_NEGATIVE,
0, CLVC_STRING, 0 },
{ "-ffixed-form",
0,
OPT_ffixed_, 11,
CL_C | CL_ObjC,
0, CLVC_BOOLEAN, 0 },
{ "-ffixed-line-length-",
0,
OPT_ffixed_, 19,
CL_C | CL_ObjC | CL_JOINED,
0, CLVC_STRING, 0 },
{ "-ffixed-line-length-none",
0,
OPT_ffixed_line_length_, 23,
CL_C | CL_ObjC,
0, CLVC_BOOLEAN, 0 },
{ "-ffloat-store",
"Don't allocate floats and doubles in extended-precision registers",
N_OPTS, 12,
CL_COMMON | CL_REPORT,
&flag_float_store, CLVC_BOOLEAN, 0 },
{ "-ffor-scope",
"Scope of for-init-statement variables is local to the loop",
N_OPTS, 10,
CL_CXX | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fforce-addr",
"Copy memory address constants into registers before use",
N_OPTS, 11,
CL_COMMON | CL_REPORT,
&flag_force_addr, CLVC_BOOLEAN, 0 },
{ "-fforce-mem",
"Copy memory operands into registers before use",
N_OPTS, 10,
CL_COMMON | CL_REPORT,
&flag_force_mem, CLVC_BOOLEAN, 0 },
{ "-ffreestanding",
"Do not assume that standard C libraries and \"main\" exist",
N_OPTS, 13,
CL_C | CL_ObjC,
0, CLVC_BOOLEAN, 0 },
{ "-ffriend-injection",
"Inject friend functions into enclosing namespace",
N_OPTS, 17,
CL_CXX,
&flag_friend_injection, CLVC_BOOLEAN, 0 },
{ "-ffunction-cse",
"Allow function addresses to be held in registers",
N_OPTS, 13,
CL_COMMON | CL_REPORT,
&flag_no_function_cse, CLVC_EQUAL, 0 },
{ "-ffunction-sections",
"Place each function into its own section",
N_OPTS, 18,
CL_COMMON | CL_REPORT,
&flag_function_sections, CLVC_BOOLEAN, 0 },
{ "-fgcse",
"Perform global common subexpression elimination",
N_OPTS, 5,
CL_COMMON | CL_REPORT,
&flag_gcse, CLVC_BOOLEAN, 0 },
{ "-fgcse-after-reload",
"Perform global common subexpression elimination after register allocation",
N_OPTS, 18,
CL_COMMON | CL_REPORT,
&flag_gcse_after_reload, CLVC_BOOLEAN, 0 },
{ "-fgcse-las",
"Perform redundant load after store elimination in global common subexpression",
N_OPTS, 9,
CL_COMMON | CL_REPORT,
&flag_gcse_las, CLVC_BOOLEAN, 0 },
{ "-fgcse-lm",
"Perform enhanced load motion during global common subexpression elimination",
N_OPTS, 8,
CL_COMMON | CL_REPORT,
&flag_gcse_lm, CLVC_BOOLEAN, 0 },
{ "-fgcse-sm",
"Perform store motion after global common subexpression elimination",
N_OPTS, 8,
CL_COMMON | CL_REPORT,
&flag_gcse_sm, CLVC_BOOLEAN, 0 },
{ "-fgnu-keywords",
"Recognize GNU-defined keywords",
N_OPTS, 13,
CL_CXX | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fgnu-runtime",
"Generate code for GNU runtime environment",
N_OPTS, 12,
CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fguess-branch-probability",
"Enable guessing of branch probabilities",
N_OPTS, 25,
CL_COMMON | CL_REPORT,
&flag_guess_branch_prob, CLVC_BOOLEAN, 0 },
{ "-fguiding-decls",
0,
N_OPTS, 14,
CL_CXX | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fhandle-exceptions",
0,
N_OPTS, 18,
CL_CXX | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fhonor-std",
0,
N_OPTS, 10,
CL_CXX | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fhosted",
"Assume normal C execution environment",
N_OPTS, 7,
CL_C | CL_ObjC,
0, CLVC_BOOLEAN, 0 },
{ "-fhuge-objects",
"Enable support for huge objects",
N_OPTS, 13,
CL_CXX | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fident",
"Process #ident directives",
N_OPTS, 6,
CL_COMMON | CL_REPORT,
&flag_no_ident, CLVC_EQUAL, 0 },
{ "-fif-conversion",
"Perform conversion of conditional jumps to branchless equivalents",
N_OPTS, 14,
CL_COMMON | CL_REPORT,
&flag_if_conversion, CLVC_BOOLEAN, 0 },
{ "-fif-conversion2",
"Perform conversion of conditional jumps to conditional execution",
N_OPTS, 15,
CL_COMMON | CL_REPORT,
&flag_if_conversion2, CLVC_BOOLEAN, 0 },
{ "-fimplement-inlines",
"Export functions even if they can be inlined",
N_OPTS, 18,
CL_CXX | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fimplicit-inline-templates",
"Emit implicit instantiations of inline templates",
N_OPTS, 26,
CL_CXX | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fimplicit-templates",
"Emit implicit instantiations of templates",
N_OPTS, 19,
CL_CXX | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-finhibit-size-directive",
"Do not generate .size directives",
N_OPTS, 23,
CL_COMMON | CL_REPORT,
&flag_inhibit_size_directive, CLVC_BOOLEAN, 0 },
{ "-finline",
"Pay attention to the \"inline\" keyword",
N_OPTS, 7,
CL_COMMON | CL_REPORT,
&flag_no_inline, CLVC_EQUAL, 0 },
{ "-finline-functions",
"Integrate simple functions into their callers",
N_OPTS, 17,
CL_COMMON | CL_REPORT,
&flag_inline_functions, CLVC_BOOLEAN, 0 },
{ "-finline-functions-called-once",
"Integrate functions called once into their callers",
N_OPTS, 29,
CL_COMMON | CL_REPORT,
&flag_inline_functions_called_once, CLVC_BOOLEAN, 0 },
{ "-finline-limit-",
0,
N_OPTS, 14,
CL_COMMON | CL_JOINED | CL_REJECT_NEGATIVE | CL_UINTEGER,
0, CLVC_BOOLEAN, 0 },
{ "-finline-limit=",
"-finline-limit= Limit the size of inlined functions to ",
N_OPTS, 14,
CL_COMMON | CL_JOINED | CL_REJECT_NEGATIVE | CL_UINTEGER,
0, CLVC_BOOLEAN, 0 },
{ "-finput-charset=",
"-finput-charset= Specify the default character set for source files",
N_OPTS, 15,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_JOINED | CL_REJECT_NEGATIVE,
0, CLVC_STRING, 0 },
{ "-finstrument-functions",
"Instrument function entry and exit with profiling calls",
N_OPTS, 21,
CL_COMMON | CL_REPORT,
&flag_instrument_function_entry_exit, CLVC_BOOLEAN, 0 },
{ "-fipa-cp",
"Perform Interprocedural constant propagation",
N_OPTS, 7,
CL_COMMON | CL_REPORT,
&flag_ipa_cp, CLVC_BOOLEAN, 0 },
{ "-fipa-pure-const",
"Discover pure and const functions",
N_OPTS, 15,
CL_COMMON | CL_REPORT,
&flag_ipa_pure_const, CLVC_BOOLEAN, 0 },
{ "-fipa-reference",
"Discover readonly and non addressable static variables",
N_OPTS, 14,
CL_COMMON | CL_REPORT,
&flag_ipa_reference, CLVC_BOOLEAN, 0 },
{ "-fipa-type-escape",
"Type based escape and alias analysis",
N_OPTS, 16,
CL_COMMON | CL_REPORT,
&flag_ipa_type_escape, CLVC_BOOLEAN, 0 },
{ "-fivopts",
"Optimize induction variables on trees",
N_OPTS, 7,
CL_COMMON | CL_REPORT,
&flag_ivopts, CLVC_BOOLEAN, 0 },
{ "-fjump-tables",
"Use jump tables for sufficiently large switch statements",
N_OPTS, 12,
CL_COMMON,
&flag_jump_tables, CLVC_BOOLEAN, 0 },
{ "-fkeep-inline-functions",
"Generate code for functions even if they are fully inlined",
N_OPTS, 22,
CL_COMMON | CL_REPORT,
&flag_keep_inline_functions, CLVC_BOOLEAN, 0 },
{ "-fkeep-static-consts",
"Emit static const variables even if they are not used",
N_OPTS, 19,
CL_COMMON | CL_REPORT,
&flag_keep_static_consts, CLVC_BOOLEAN, 0 },
{ "-flabels-ok",
0,
N_OPTS, 10,
CL_CXX | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fleading-underscore",
"Give external symbols a leading underscore",
N_OPTS, 19,
CL_COMMON | CL_REPORT,
&flag_leading_underscore, CLVC_BOOLEAN, 0 },
{ "-floop-optimize",
"Perform loop optimizations",
N_OPTS, 14,
CL_COMMON | CL_REPORT,
&flag_loop_optimize, CLVC_BOOLEAN, 0 },
{ "-floop-optimize2",
"Perform loop optimizations using the new loop optimizer",
N_OPTS, 15,
CL_COMMON | CL_REPORT,
&flag_loop_optimize2, CLVC_BOOLEAN, 0 },
{ "-fmath-errno",
"Set errno after built-in math functions",
N_OPTS, 11,
CL_COMMON | CL_REPORT,
&flag_errno_math, CLVC_BOOLEAN, 0 },
{ "-fmem-report",
"Report on permanent memory allocation",
N_OPTS, 11,
CL_COMMON | CL_REPORT,
&mem_report, CLVC_BOOLEAN, 0 },
{ "-fmerge-all-constants",
"Attempt to merge identical constants and constant variables",
N_OPTS, 20,
CL_COMMON | CL_REPORT,
&flag_merge_constants, CLVC_EQUAL, 2 },
{ "-fmerge-constants",
"Attempt to merge identical constants across compilation units",
N_OPTS, 16,
CL_COMMON | CL_REPORT,
&flag_merge_constants, CLVC_EQUAL, 1 },
{ "-fmessage-length=",
"-fmessage-length= Limit diagnostics to characters per line. 0 suppresses line-wrapping",
N_OPTS, 16,
CL_COMMON | CL_JOINED | CL_REJECT_NEGATIVE | CL_UINTEGER,
0, CLVC_BOOLEAN, 0 },
{ "-fmodulo-sched",
"Perform SMS based modulo scheduling before the first scheduling pass",
N_OPTS, 13,
CL_COMMON | CL_REPORT,
&flag_modulo_sched, CLVC_BOOLEAN, 0 },
{ "-fmove-loop-invariants",
"Move loop invariant computations out of loops",
N_OPTS, 21,
CL_COMMON | CL_REPORT,
&flag_move_loop_invariants, CLVC_BOOLEAN, 0 },
{ "-fms-extensions",
"Don't warn about uses of Microsoft extensions",
N_OPTS, 14,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fmudflap",
"Add mudflap bounds-checking instrumentation for single-threaded program",
N_OPTS, 8,
CL_COMMON | CL_REJECT_NEGATIVE | CL_REPORT,
&flag_mudflap, CLVC_BOOLEAN, 0 },
{ "-fmudflapir",
"Ignore read operations when inserting mudflap instrumentation",
N_OPTS, 10,
CL_COMMON | CL_REJECT_NEGATIVE | CL_REPORT,
&flag_mudflap_ignore_reads, CLVC_BOOLEAN, 0 },
{ "-fmudflapth",
"Add mudflap bounds-checking instrumentation for multi-threaded program",
N_OPTS, 10,
CL_COMMON | CL_REJECT_NEGATIVE | CL_REPORT,
&flag_mudflap_threads, CLVC_BOOLEAN, 0 },
{ "-fname-mangling-version-",
0,
N_OPTS, 23,
CL_CXX | CL_ObjCXX | CL_JOINED,
0, CLVC_STRING, 0 },
{ "-fnew-abi",
0,
N_OPTS, 8,
CL_CXX | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fnext-runtime",
"Generate code for NeXT (Apple Mac OS X) runtime environment",
N_OPTS, 13,
CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fnil-receivers",
"Assume that receivers of Objective-C messages may be nil",
N_OPTS, 14,
CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fnon-call-exceptions",
"Support synchronous non-call exceptions",
N_OPTS, 20,
CL_COMMON | CL_REPORT,
&flag_non_call_exceptions, CLVC_BOOLEAN, 0 },
{ "-fnonansi-builtins",
0,
N_OPTS, 17,
CL_CXX | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fnonnull-objects",
0,
N_OPTS, 16,
CL_CXX | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fobjc-call-cxx-cdtors",
"Generate special Objective-C methods to initialize/destroy non-POD C++ ivars, if needed",
N_OPTS, 21,
CL_ObjCXX,
&flag_objc_call_cxx_cdtors, CLVC_BOOLEAN, 0 },
{ "-fobjc-direct-dispatch",
"Allow fast jumps to the message dispatcher",
N_OPTS, 21,
CL_ObjC | CL_ObjCXX,
&flag_objc_direct_dispatch, CLVC_BOOLEAN, 0 },
{ "-fobjc-exceptions",
"Enable Objective-C exception and synchronization syntax",
N_OPTS, 16,
CL_ObjC | CL_ObjCXX,
&flag_objc_exceptions, CLVC_BOOLEAN, 0 },
{ "-fobjc-gc",
"Enable garbage collection (GC) in Objective-C/Objective-C++ programs",
N_OPTS, 8,
CL_ObjC | CL_ObjCXX,
&flag_objc_gc, CLVC_BOOLEAN, 0 },
{ "-fobjc-sjlj-exceptions",
"Enable Objective-C setjmp exception handling runtime",
N_OPTS, 21,
CL_ObjC | CL_ObjCXX,
&flag_objc_sjlj_exceptions, CLVC_BOOLEAN, 0 },
{ "-fomit-frame-pointer",
"When possible do not generate stack frames",
N_OPTS, 19,
CL_COMMON | CL_REPORT,
&flag_omit_frame_pointer, CLVC_BOOLEAN, 0 },
{ "-foperator-names",
"Recognize C++ kewords like \"compl\" and \"xor\"",
N_OPTS, 15,
CL_CXX | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-foptimize-register-move",
"Do the full register move optimization pass",
N_OPTS, 23,
CL_COMMON | CL_REPORT,
&flag_regmove, CLVC_BOOLEAN, 0 },
{ "-foptimize-sibling-calls",
"Optimize sibling and tail recursive calls",
N_OPTS, 23,
CL_COMMON | CL_REPORT,
&flag_optimize_sibling_calls, CLVC_BOOLEAN, 0 },
{ "-foptional-diags",
"Enable optional diagnostics",
N_OPTS, 15,
CL_CXX | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fpack-struct",
"Pack structure members together without holes",
N_OPTS, 12,
CL_COMMON | CL_REPORT,
&flag_pack_struct, CLVC_BOOLEAN, 0 },
{ "-fpack-struct=",
"-fpack-struct= Set initial maximum structure member alignment",
N_OPTS, 13,
CL_COMMON | CL_JOINED | CL_REJECT_NEGATIVE | CL_UINTEGER,
0, CLVC_BOOLEAN, 0 },
{ "-fpcc-struct-return",
"Return small aggregates in memory, not registers",
N_OPTS, 18,
CL_COMMON | CL_REPORT,
&flag_pcc_struct_return, CLVC_EQUAL, 1 },
{ "-fpch-deps",
0,
N_OPTS, 9,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fpch-preprocess",
"Look for and use PCH files even when preprocessing",
N_OPTS, 15,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fpeel-loops",
"Perform loop peeling",
N_OPTS, 11,
CL_COMMON | CL_REPORT,
&flag_peel_loops, CLVC_BOOLEAN, 0 },
{ "-fpeephole",
"Enable machine specific peephole optimizations",
N_OPTS, 9,
CL_COMMON | CL_REPORT,
&flag_no_peephole, CLVC_EQUAL, 0 },
{ "-fpeephole2",
"Enable an RTL peephole pass before sched2",
N_OPTS, 10,
CL_COMMON | CL_REPORT,
&flag_peephole2, CLVC_BOOLEAN, 0 },
{ "-fpermissive",
"Downgrade conformance errors to warnings",
N_OPTS, 11,
CL_CXX | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fpic",
"Generate position-independent code if possible (small mode)",
N_OPTS, 4,
CL_COMMON | CL_REPORT,
&flag_pic, CLVC_EQUAL, 1 },
{ "-fpie",
"Generate position-independent code for executables if possible (small mode)",
N_OPTS, 4,
CL_COMMON | CL_REPORT,
&flag_pie, CLVC_EQUAL, 1 },
{ "-fprefetch-loop-arrays",
"Generate prefetch instructions, if available, for arrays in loops",
N_OPTS, 21,
CL_COMMON | CL_REPORT,
&flag_prefetch_loop_arrays, CLVC_BOOLEAN, 0 },
{ "-fpreprocessed",
"Treat the input file as already preprocessed",
N_OPTS, 13,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fprofile",
"Enable basic program profiling code",
N_OPTS, 8,
CL_COMMON | CL_REPORT,
&profile_flag, CLVC_BOOLEAN, 0 },
{ "-fprofile-arcs",
"Insert arc-based program profiling code",
N_OPTS, 13,
CL_COMMON | CL_REPORT,
&profile_arc_flag, CLVC_BOOLEAN, 0 },
{ "-fprofile-generate",
"Enable common options for generating profile info for profile feedback directed optimizations",
N_OPTS, 17,
CL_COMMON,
0, CLVC_BOOLEAN, 0 },
{ "-fprofile-use",
"Enable common options for performing profile feedback directed optimizations",
N_OPTS, 12,
CL_COMMON,
0, CLVC_BOOLEAN, 0 },
{ "-fprofile-values",
"Insert code to profile values of expressions",
N_OPTS, 15,
CL_COMMON | CL_REPORT,
&flag_profile_values, CLVC_BOOLEAN, 0 },
{ "-frandom-seed",
0,
N_OPTS, 12,
CL_COMMON,
0, CLVC_BOOLEAN, 0 },
{ "-frandom-seed=",
"-frandom-seed= Make compile reproducible using ",
N_OPTS, 13,
CL_COMMON | CL_JOINED | CL_REJECT_NEGATIVE,
0, CLVC_STRING, 0 },
{ "-freg-struct-return",
"Return small aggregates in registers",
N_OPTS, 18,
CL_COMMON | CL_REPORT,
&flag_pcc_struct_return, CLVC_EQUAL, 0 },
{ "-fregmove",
"Enables a register move optimization",
N_OPTS, 8,
CL_COMMON | CL_REPORT,
&flag_regmove, CLVC_BOOLEAN, 0 },
{ "-frename-registers",
"Perform a register renaming optimization pass",
N_OPTS, 17,
CL_COMMON | CL_REPORT,
&flag_rename_registers, CLVC_BOOLEAN, 0 },
{ "-freorder-blocks",
"Reorder basic blocks to improve code placement",
N_OPTS, 15,
CL_COMMON | CL_REPORT,
&flag_reorder_blocks, CLVC_BOOLEAN, 0 },
{ "-freorder-blocks-and-partition",
"Reorder basic blocks and partition into hot and cold sections",
N_OPTS, 29,
CL_COMMON | CL_REPORT,
&flag_reorder_blocks_and_partition, CLVC_BOOLEAN, 0 },
{ "-freorder-functions",
"Reorder functions to improve code placement",
N_OPTS, 18,
CL_COMMON | CL_REPORT,
&flag_reorder_functions, CLVC_BOOLEAN, 0 },
{ "-freplace-objc-classes",
"Used in Fix-and-Continue mode to indicate that object files may be swapped in at runtime",
N_OPTS, 21,
CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-frepo",
"Enable automatic template instantiation",
N_OPTS, 5,
CL_CXX | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-frerun-cse-after-loop",
"Add a common subexpression elimination pass after loop optimizations",
N_OPTS, 21,
CL_COMMON | CL_REPORT,
&flag_rerun_cse_after_loop, CLVC_BOOLEAN, 0 },
{ "-frerun-loop-opt",
"Run the loop optimizer twice",
N_OPTS, 15,
CL_COMMON | CL_REPORT,
&flag_rerun_loop_opt, CLVC_BOOLEAN, 0 },
{ "-freschedule-modulo-scheduled-loops",
"Enable/Disable the traditional scheduling in loops that already passed modulo scheduling",
N_OPTS, 34,
CL_COMMON | CL_REPORT,
&flag_resched_modulo_sched, CLVC_BOOLEAN, 0 },
{ "-frounding-math",
"Disable optimizations that assume default FP rounding behavior",
N_OPTS, 14,
CL_COMMON | CL_REPORT,
&flag_rounding_math, CLVC_BOOLEAN, 0 },
{ "-frtti",
"Generate run time type descriptor information",
N_OPTS, 5,
CL_CXX | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fsched-interblock",
"Enable scheduling across basic blocks",
N_OPTS, 17,
CL_COMMON | CL_REPORT,
&flag_schedule_interblock, CLVC_BOOLEAN, 0 },
{ "-fsched-spec",
"Allow speculative motion of non-loads",
N_OPTS, 11,
CL_COMMON | CL_REPORT,
&flag_schedule_speculative, CLVC_BOOLEAN, 0 },
{ "-fsched-spec-load",
"Allow speculative motion of some loads",
N_OPTS, 16,
CL_COMMON | CL_REPORT,
&flag_schedule_speculative_load, CLVC_BOOLEAN, 0 },
{ "-fsched-spec-load-dangerous",
"Allow speculative motion of more loads",
N_OPTS, 26,
CL_COMMON | CL_REPORT,
&flag_schedule_speculative_load_dangerous, CLVC_BOOLEAN, 0 },
{ "-fsched-stalled-insns",
"Allow premature scheduling of queued insns",
N_OPTS, 20,
CL_COMMON | CL_REPORT,
&flag_sched_stalled_insns, CLVC_BOOLEAN, 0 },
{ "-fsched-stalled-insns-dep",
"Set dependence distance checking in premature scheduling of queued insns",
N_OPTS, 24,
CL_COMMON | CL_REPORT,
&flag_sched_stalled_insns_dep, CLVC_EQUAL, 1 },
{ "-fsched-stalled-insns-dep=",
"-fsched-stalled-insns-dep= Set dependence distance checking in premature scheduling of queued insns",
N_OPTS, 25,
CL_COMMON | CL_JOINED | CL_REJECT_NEGATIVE | CL_UINTEGER,
0, CLVC_BOOLEAN, 0 },
{ "-fsched-stalled-insns=",
"-fsched-stalled-insns= Set number of queued insns that can be prematurely scheduled",
N_OPTS, 21,
CL_COMMON | CL_JOINED | CL_REJECT_NEGATIVE | CL_UINTEGER,
0, CLVC_BOOLEAN, 0 },
{ "-fsched-verbose=",
"-fsched-verbose= Set the verbosity level of the scheduler",
N_OPTS, 15,
CL_COMMON | CL_JOINED | CL_REJECT_NEGATIVE,
0, CLVC_STRING, 0 },
{ "-fsched2-use-superblocks",
"If scheduling post reload, do superblock scheduling",
N_OPTS, 23,
CL_COMMON | CL_REPORT,
&flag_sched2_use_superblocks, CLVC_BOOLEAN, 0 },
{ "-fsched2-use-traces",
"If scheduling post reload, do trace scheduling",
N_OPTS, 18,
CL_COMMON | CL_REPORT,
&flag_sched2_use_traces, CLVC_BOOLEAN, 0 },
{ "-fschedule-insns",
"Reschedule instructions before register allocation",
N_OPTS, 15,
CL_COMMON | CL_REPORT,
&flag_schedule_insns, CLVC_BOOLEAN, 0 },
{ "-fschedule-insns2",
"Reschedule instructions after register allocation",
N_OPTS, 16,
CL_COMMON | CL_REPORT,
&flag_schedule_insns_after_reload, CLVC_BOOLEAN, 0 },
{ "-fshared-data",
"Mark data as shared rather than private",
N_OPTS, 12,
CL_COMMON | CL_REPORT,
&flag_shared_data, CLVC_BOOLEAN, 0 },
{ "-fshort-double",
"Use the same size for double as for float",
N_OPTS, 13,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fshort-enums",
"Use the narrowest integer type possible for enumeration types",
N_OPTS, 12,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fshort-wchar",
"Force the underlying type for \"wchar_t\" to be \"unsigned short\"",
N_OPTS, 12,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fshow-column",
"Show column numbers in diagnostics, when available. Default on",
N_OPTS, 12,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_COMMON | CL_REPORT,
&flag_show_column, CLVC_BOOLEAN, 0 },
{ "-fsignaling-nans",
"Disable optimizations observable by IEEE signaling NaNs",
N_OPTS, 15,
CL_COMMON | CL_REPORT,
&flag_signaling_nans, CLVC_BOOLEAN, 0 },
{ "-fsigned-bitfields",
"When \"signed\" or \"unsigned\" is not given make the bitfield signed",
N_OPTS, 17,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fsigned-char",
"Make \"char\" signed by default",
N_OPTS, 12,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fsingle-precision-constant",
"Convert floating point constants to single precision constants",
N_OPTS, 26,
CL_COMMON | CL_REPORT,
&flag_single_precision_constant, CLVC_BOOLEAN, 0 },
{ "-fsplit-ivs-in-unroller",
"Split lifetimes of induction variables when loops are unrolled",
N_OPTS, 22,
CL_COMMON | CL_REPORT,
&flag_split_ivs_in_unroller, CLVC_BOOLEAN, 0 },
{ "-fsquangle",
0,
N_OPTS, 9,
CL_CXX | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fstack-check",
"Insert stack checking code into the program",
N_OPTS, 12,
CL_COMMON | CL_REPORT,
&flag_stack_check, CLVC_BOOLEAN, 0 },
{ "-fstack-limit",
0,
N_OPTS, 12,
CL_COMMON,
0, CLVC_BOOLEAN, 0 },
{ "-fstack-limit-register=",
"-fstack-limit-register= Trap if the stack goes past ",
N_OPTS, 22,
CL_COMMON | CL_JOINED | CL_REJECT_NEGATIVE,
0, CLVC_STRING, 0 },
{ "-fstack-limit-symbol=",
"-fstack-limit-symbol= Trap if the stack goes past symbol ",
N_OPTS, 20,
CL_COMMON | CL_JOINED | CL_REJECT_NEGATIVE,
0, CLVC_STRING, 0 },
{ "-fstack-protector",
"Use propolice as a stack protection method",
N_OPTS, 16,
CL_COMMON | CL_REPORT,
&flag_stack_protect, CLVC_EQUAL, 1 },
{ "-fstack-protector-all",
"Use a stack protection method for every function",
N_OPTS, 20,
CL_COMMON | CL_REJECT_NEGATIVE | CL_REPORT,
&flag_stack_protect, CLVC_EQUAL, 2 },
{ "-fstats",
"Display statistics accumulated during compilation",
N_OPTS, 6,
CL_CXX | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fstrength-reduce",
"Perform strength reduction optimizations",
N_OPTS, 16,
CL_COMMON | CL_REPORT,
&flag_strength_reduce, CLVC_BOOLEAN, 0 },
{ "-fstrict-aliasing",
"Assume strict aliasing rules apply",
N_OPTS, 16,
CL_COMMON | CL_REPORT,
&flag_strict_aliasing, CLVC_BOOLEAN, 0 },
{ "-fstrict-prototype",
0,
N_OPTS, 17,
CL_CXX | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fsyntax-only",
"Check for syntax errors, then stop",
N_OPTS, 12,
CL_COMMON | CL_REPORT,
&flag_syntax_only, CLVC_BOOLEAN, 0 },
{ "-ftabstop=",
"-ftabstop= Distance between tab stops for column reporting",
N_OPTS, 9,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_JOINED | CL_REJECT_NEGATIVE | CL_UINTEGER,
0, CLVC_BOOLEAN, 0 },
{ "-ftemplate-depth-",
"-ftemplate-depth- Specify maximum template instantiation depth",
N_OPTS, 16,
CL_CXX | CL_ObjCXX | CL_JOINED | CL_REJECT_NEGATIVE | CL_UINTEGER,
0, CLVC_BOOLEAN, 0 },
{ "-ftest-coverage",
"Create data files needed by \"gcov\"",
N_OPTS, 14,
CL_COMMON | CL_REPORT,
&flag_test_coverage, CLVC_BOOLEAN, 0 },
{ "-fthis-is-variable",
0,
N_OPTS, 17,
CL_CXX | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fthread-jumps",
"Perform jump threading optimizations",
N_OPTS, 13,
CL_COMMON | CL_REPORT,
&flag_thread_jumps, CLVC_BOOLEAN, 0 },
{ "-fthreadsafe-statics",
"-fno-threadsafe-statics Do not generate thread-safe code for initializing local statics",
N_OPTS, 19,
CL_CXX | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-ftime-report",
"Report the time taken by each compiler pass",
N_OPTS, 12,
CL_COMMON | CL_REPORT,
&time_report, CLVC_BOOLEAN, 0 },
{ "-ftls-model=",
"-ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec] Set the default thread-local storage code generation model",
N_OPTS, 11,
CL_COMMON | CL_JOINED | CL_REJECT_NEGATIVE,
0, CLVC_STRING, 0 },
{ "-ftracer",
"Perform superblock formation via tail duplication",
N_OPTS, 7,
CL_COMMON | CL_REPORT,
&flag_tracer, CLVC_BOOLEAN, 0 },
{ "-ftrapping-math",
"Assume floating-point operations can trap",
N_OPTS, 14,
CL_COMMON | CL_REPORT,
&flag_trapping_math, CLVC_BOOLEAN, 0 },
{ "-ftrapv",
"Trap for signed overflow in addition, subtraction and multiplication",
N_OPTS, 6,
CL_COMMON | CL_REPORT,
&flag_trapv, CLVC_BOOLEAN, 0 },
{ "-ftree-ccp",
"Enable SSA-CCP optimization on trees",
N_OPTS, 9,
CL_COMMON | CL_REPORT,
&flag_tree_ccp, CLVC_BOOLEAN, 0 },
{ "-ftree-ch",
"Enable loop header copying on trees",
N_OPTS, 8,
CL_COMMON | CL_REPORT,
&flag_tree_ch, CLVC_BOOLEAN, 0 },
{ "-ftree-combine-temps",
"Coalesce memory temporaries in the SSA->normal pass",
N_OPTS, 19,
CL_COMMON | CL_REPORT,
&flag_tree_combine_temps, CLVC_BOOLEAN, 0 },
{ "-ftree-copy-prop",
"Enable copy propagation on trees",
N_OPTS, 15,
CL_COMMON | CL_REPORT,
&flag_tree_copy_prop, CLVC_BOOLEAN, 0 },
{ "-ftree-copyrename",
"Replace SSA temporaries with better names in copies",
N_OPTS, 16,
CL_COMMON | CL_REPORT,
&flag_tree_copyrename, CLVC_BOOLEAN, 0 },
{ "-ftree-dce",
"Enable SSA dead code elimination optimization on trees",
N_OPTS, 9,
CL_COMMON | CL_REPORT,
&flag_tree_dce, CLVC_BOOLEAN, 0 },
{ "-ftree-dominator-opts",
"Enable dominator optimizations",
N_OPTS, 20,
CL_COMMON | CL_REPORT,
&flag_tree_dom, CLVC_BOOLEAN, 0 },
{ "-ftree-dse",
"Enable dead store elimination",
N_OPTS, 9,
CL_COMMON | CL_REPORT,
&flag_tree_dse, CLVC_BOOLEAN, 0 },
{ "-ftree-fre",
"Enable Full Redundancy Elimination (FRE) on trees",
N_OPTS, 9,
CL_COMMON | CL_REPORT,
&flag_tree_fre, CLVC_BOOLEAN, 0 },
{ "-ftree-loop-im",
"Enable loop invariant motion on trees",
N_OPTS, 13,
CL_COMMON | CL_REPORT,
&flag_tree_loop_im, CLVC_BOOLEAN, 0 },
{ "-ftree-loop-ivcanon",
"Create canonical induction variables in loops",
N_OPTS, 18,
CL_COMMON | CL_REPORT,
&flag_tree_loop_ivcanon, CLVC_BOOLEAN, 0 },
{ "-ftree-loop-linear",
"Enable linear loop transforms on trees",
N_OPTS, 17,
CL_COMMON | CL_REPORT,
&flag_tree_loop_linear, CLVC_BOOLEAN, 0 },
{ "-ftree-loop-optimize",
"Enable loop optimizations on tree level",
N_OPTS, 19,
CL_COMMON | CL_REPORT,
&flag_tree_loop_optimize, CLVC_BOOLEAN, 0 },
{ "-ftree-lrs",
"Perform live range splitting during the SSA->normal pass",
N_OPTS, 9,
CL_COMMON | CL_REPORT,
&flag_tree_live_range_split, CLVC_BOOLEAN, 0 },
{ "-ftree-pre",
"Enable SSA-PRE optimization on trees",
N_OPTS, 9,
CL_COMMON | CL_REPORT,
&flag_tree_pre, CLVC_BOOLEAN, 0 },
{ "-ftree-salias",
"Perform structural alias analysis",
N_OPTS, 12,
CL_COMMON | CL_REPORT,
&flag_tree_salias, CLVC_BOOLEAN, 0 },
{ "-ftree-sink",
"Enable SSA code sinking on trees",
N_OPTS, 10,
CL_COMMON | CL_REPORT,
&flag_tree_sink, CLVC_BOOLEAN, 0 },
{ "-ftree-sra",
"Perform scalar replacement of aggregates",
N_OPTS, 9,
CL_COMMON | CL_REPORT,
&flag_tree_sra, CLVC_BOOLEAN, 0 },
{ "-ftree-store-ccp",
"Enable SSA-CCP optimization for stores and loads",
N_OPTS, 15,
CL_COMMON | CL_REPORT,
&flag_tree_store_ccp, CLVC_BOOLEAN, 0 },
{ "-ftree-store-copy-prop",
"Enable copy propagation for stores and loads",
N_OPTS, 21,
CL_COMMON | CL_REPORT,
&flag_tree_store_copy_prop, CLVC_BOOLEAN, 0 },
{ "-ftree-ter",
"Replace temporary expressions in the SSA->normal pass",
N_OPTS, 9,
CL_COMMON | CL_REPORT,
&flag_tree_ter, CLVC_BOOLEAN, 0 },
{ "-ftree-vect-loop-version",
"Enable loop versioning when doing loop vectorization on trees",
N_OPTS, 23,
CL_COMMON | CL_REPORT,
&flag_tree_vect_loop_version, CLVC_BOOLEAN, 0 },
{ "-ftree-vectorize",
"Enable loop vectorization on trees",
N_OPTS, 15,
CL_COMMON | CL_REPORT,
&flag_tree_vectorize, CLVC_BOOLEAN, 0 },
{ "-ftree-vectorizer-verbose=",
"-ftree-vectorizer-verbose= Set the verbosity level of the vectorizer",
N_OPTS, 25,
CL_COMMON | CL_JOINED | CL_REJECT_NEGATIVE,
0, CLVC_STRING, 0 },
{ "-ftree-vrp",
"Perform Value Range Propagation on trees",
N_OPTS, 9,
CL_COMMON | CL_REPORT,
&flag_tree_vrp, CLVC_BOOLEAN, 0 },
{ "-funit-at-a-time",
"Compile whole compilation unit at a time",
N_OPTS, 15,
CL_COMMON | CL_REPORT,
&flag_unit_at_a_time, CLVC_BOOLEAN, 0 },
{ "-funroll-all-loops",
"Perform loop unrolling for all loops",
N_OPTS, 17,
CL_COMMON | CL_REPORT,
&flag_unroll_all_loops, CLVC_BOOLEAN, 0 },
{ "-funroll-loops",
"Perform loop unrolling when iteration count is known",
N_OPTS, 13,
CL_COMMON | CL_REPORT,
&flag_unroll_loops, CLVC_BOOLEAN, 0 },
{ "-funsafe-loop-optimizations",
"Allow loop optimizations to assume that the loops behave in normal way",
N_OPTS, 26,
CL_COMMON | CL_REPORT,
&flag_unsafe_loop_optimizations, CLVC_BOOLEAN, 0 },
{ "-funsafe-math-optimizations",
"Allow math optimizations that may violate IEEE or ISO standards",
N_OPTS, 26,
CL_COMMON | CL_REPORT,
&flag_unsafe_math_optimizations, CLVC_BOOLEAN, 0 },
{ "-funsigned-bitfields",
"When \"signed\" or \"unsigned\" is not given make the bitfield unsigned",
N_OPTS, 19,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-funsigned-char",
"Make \"char\" unsigned by default",
N_OPTS, 14,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-funswitch-loops",
"Perform loop unswitching",
N_OPTS, 15,
CL_COMMON | CL_REPORT,
&flag_unswitch_loops, CLVC_BOOLEAN, 0 },
{ "-funwind-tables",
"Just generate unwind tables for exception handling",
N_OPTS, 14,
CL_COMMON | CL_REPORT,
&flag_unwind_tables, CLVC_BOOLEAN, 0 },
{ "-fuse-cxa-atexit",
"Use __cxa_atexit to register destructors",
N_OPTS, 15,
CL_CXX | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fvar-tracking",
"Perform variable tracking",
N_OPTS, 13,
CL_COMMON | CL_REPORT,
&flag_var_tracking, CLVC_BOOLEAN, 0 },
{ "-fvariable-expansion-in-unroller",
"Apply variable expansion when loops are unrolled",
N_OPTS, 31,
CL_COMMON | CL_REPORT,
&flag_variable_expansion_in_unroller, CLVC_BOOLEAN, 0 },
{ "-fverbose-asm",
"Add extra commentary to assembler output",
N_OPTS, 12,
CL_COMMON | CL_REPORT,
&flag_verbose_asm, CLVC_BOOLEAN, 0 },
{ "-fvisibility-inlines-hidden",
"Marks all inlined methods as having hidden visibility",
N_OPTS, 26,
CL_CXX | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fvisibility=",
"-fvisibility=[default|internal|hidden|protected] Set the default symbol visibility",
N_OPTS, 12,
CL_COMMON | CL_JOINED | CL_REJECT_NEGATIVE,
0, CLVC_STRING, 0 },
{ "-fvpt",
"Use expression value profiles in optimizations",
N_OPTS, 4,
CL_COMMON | CL_REPORT,
&flag_value_profile_transformations, CLVC_BOOLEAN, 0 },
{ "-fvtable-gc",
"Discard unused virtual functions",
N_OPTS, 10,
CL_CXX | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fvtable-thunks",
"Implement vtables using thunks",
N_OPTS, 14,
CL_CXX | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fweak",
"Emit common-like symbols as weak symbols",
N_OPTS, 5,
CL_CXX | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fweb",
"Construct webs and split unrelated uses of single variable",
N_OPTS, 4,
CL_COMMON | CL_REPORT,
&flag_web, CLVC_BOOLEAN, 0 },
{ "-fwhole-program",
"Perform whole program optimizations",
N_OPTS, 14,
CL_COMMON | CL_REPORT,
&flag_whole_program, CLVC_BOOLEAN, 0 },
{ "-fwide-exec-charset=",
"-fwide-exec-charset= Convert all wide strings and character constants to character set ",
N_OPTS, 19,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_JOINED | CL_REJECT_NEGATIVE,
0, CLVC_STRING, 0 },
{ "-fworking-directory",
"Generate a #line directive pointing at the current working directory",
N_OPTS, 18,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fwrapv",
"Assume signed arithmetic overflow wraps around",
N_OPTS, 6,
CL_COMMON | CL_REPORT,
&flag_wrapv, CLVC_BOOLEAN, 0 },
{ "-fxref",
"Emit cross referencing information",
N_OPTS, 5,
CL_CXX | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-fzero-initialized-in-bss",
"Put zero initialized data in the bss section",
N_OPTS, 24,
CL_COMMON | CL_REPORT,
&flag_zero_initialized_in_bss, CLVC_BOOLEAN, 0 },
{ "-fzero-link",
"Generate lazy class lookup (via objc_getClass()) for use in Zero-Link mode",
N_OPTS, 10,
CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-g",
"Generate debug information in default format",
N_OPTS, 1,
CL_COMMON | CL_JOINED | CL_MISSING_OK,
0, CLVC_STRING, 0 },
{ "-gcoff",
"Generate debug information in COFF format",
OPT_g, 5,
CL_COMMON | CL_JOINED | CL_MISSING_OK,
0, CLVC_STRING, 0 },
{ "-gdwarf-2",
"Generate debug information in DWARF v2 format",
OPT_g, 8,
CL_COMMON | CL_JOINED | CL_MISSING_OK,
0, CLVC_STRING, 0 },
{ "-gen-decls",
"Dump declarations to a .decl file",
OPT_g, 9,
CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-ggdb",
"Generate debug information in default extended format",
OPT_g, 4,
CL_COMMON | CL_JOINED | CL_MISSING_OK,
0, CLVC_STRING, 0 },
{ "-gstabs",
"Generate debug information in STABS format",
OPT_g, 6,
CL_COMMON | CL_JOINED | CL_MISSING_OK,
0, CLVC_STRING, 0 },
{ "-gstabs+",
"Generate debug information in extended STABS format",
OPT_gstabs, 7,
CL_COMMON | CL_JOINED | CL_MISSING_OK,
0, CLVC_STRING, 0 },
{ "-gvms",
"Generate debug information in VMS format",
OPT_g, 4,
CL_COMMON | CL_JOINED | CL_MISSING_OK,
0, CLVC_STRING, 0 },
{ "-gxcoff",
"Generate debug information in XCOFF format",
OPT_g, 6,
CL_COMMON | CL_JOINED | CL_MISSING_OK,
0, CLVC_STRING, 0 },
{ "-gxcoff+",
"Generate debug information in extended XCOFF format",
OPT_gxcoff, 7,
CL_COMMON | CL_JOINED | CL_MISSING_OK,
0, CLVC_STRING, 0 },
{ "-idirafter",
"-idirafter Add to the end of the system include path",
N_OPTS, 9,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_JOINED | CL_SEPARATE,
0, CLVC_STRING, 0 },
{ "-imacros",
"-imacros Accept definition of macros in ",
N_OPTS, 7,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_JOINED | CL_SEPARATE,
0, CLVC_STRING, 0 },
{ "-include",
"-include Include the contents of before other files",
N_OPTS, 7,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_JOINED | CL_SEPARATE,
0, CLVC_STRING, 0 },
{ "-iprefix",
"-iprefix Specify as a prefix for next two options",
N_OPTS, 7,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_JOINED | CL_SEPARATE,
0, CLVC_STRING, 0 },
{ "-iquote",
"-iquote Add to the end of the quote include path",
N_OPTS, 6,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_JOINED | CL_SEPARATE,
0, CLVC_STRING, 0 },
{ "-isysroot",
"-isysroot Set to be the system root directory",
N_OPTS, 8,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_JOINED | CL_SEPARATE,
0, CLVC_STRING, 0 },
{ "-isystem",
"-isystem Add to the start of the system include path",
N_OPTS, 7,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_JOINED | CL_SEPARATE,
0, CLVC_STRING, 0 },
{ "-iwithprefix",
"-iwithprefix Add to the end of the system include path",
N_OPTS, 11,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_JOINED | CL_SEPARATE,
0, CLVC_STRING, 0 },
{ "-iwithprefixbefore",
"-iwithprefixbefore Add to the end of the main include path",
OPT_iwithprefix, 17,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_JOINED | CL_SEPARATE,
0, CLVC_STRING, 0 },
{ "-lang-asm",
0,
N_OPTS, 8,
CL_C | CL_UNDOCUMENTED,
0, CLVC_BOOLEAN, 0 },
{ "-lang-fortran",
0,
N_OPTS, 12,
CL_C | CL_UNDOCUMENTED,
0, CLVC_BOOLEAN, 0 },
{ "-lang-objc",
0,
N_OPTS, 9,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_UNDOCUMENTED,
0, CLVC_BOOLEAN, 0 },
{ "-m128bit-long-double",
"sizeof(long double) is 16",
N_OPTS, 19,
CL_TARGET | CL_REJECT_NEGATIVE | CL_REPORT,
&target_flags, CLVC_BIT_SET, MASK_128BIT_LONG_DOUBLE },
{ "-m32",
"Generate 32bit i386 code",
N_OPTS, 3,
CL_TARGET | CL_REJECT_NEGATIVE | CL_REPORT,
&target_flags, CLVC_BIT_CLEAR, MASK_64BIT },
{ "-m386",
0,
N_OPTS, 4,
CL_TARGET | CL_REJECT_NEGATIVE | CL_UNDOCUMENTED,
&VAR_m386, CLVC_BOOLEAN, 0 },
{ "-m3dnow",
"Support 3DNow! built-in functions",
N_OPTS, 6,
CL_TARGET | CL_REPORT,
&target_flags, CLVC_BIT_SET, MASK_3DNOW },
{ "-m486",
0,
N_OPTS, 4,
CL_TARGET | CL_REJECT_NEGATIVE | CL_UNDOCUMENTED,
&VAR_m486, CLVC_BOOLEAN, 0 },
{ "-m64",
"Generate 64bit x86-64 code",
N_OPTS, 3,
CL_TARGET | CL_REJECT_NEGATIVE | CL_REPORT,
&target_flags, CLVC_BIT_SET, MASK_64BIT },
{ "-m80387",
"Use hardware fp",
N_OPTS, 6,
CL_TARGET | CL_REPORT,
&target_flags, CLVC_BIT_SET, MASK_80387 },
{ "-m96bit-long-double",
"sizeof(long double) is 12",
N_OPTS, 18,
CL_TARGET | CL_REJECT_NEGATIVE | CL_REPORT,
&target_flags, CLVC_BIT_CLEAR, MASK_128BIT_LONG_DOUBLE },
{ "-maccumulate-outgoing-args",
"Reserve space for outgoing arguments in the function prologue",
N_OPTS, 25,
CL_TARGET | CL_REPORT,
&target_flags, CLVC_BIT_SET, MASK_ACCUMULATE_OUTGOING_ARGS },
{ "-malign-double",
"Align some doubles on dword boundary",
N_OPTS, 13,
CL_TARGET | CL_REPORT,
&target_flags, CLVC_BIT_SET, MASK_ALIGN_DOUBLE },
{ "-malign-functions=",
"Function starts are aligned to this power of 2",
N_OPTS, 17,
CL_TARGET | CL_JOINED | CL_REJECT_NEGATIVE,
&ix86_align_funcs_string, CLVC_STRING, 0 },
{ "-malign-jumps=",
"Jump targets are aligned to this power of 2",
N_OPTS, 13,
CL_TARGET | CL_JOINED | CL_REJECT_NEGATIVE,
&ix86_align_jumps_string, CLVC_STRING, 0 },
{ "-malign-loops=",
"Loop code aligned to this power of 2",
N_OPTS, 13,
CL_TARGET | CL_JOINED | CL_REJECT_NEGATIVE,
&ix86_align_loops_string, CLVC_STRING, 0 },
{ "-malign-stringops",
"Align destination of the string operations",
N_OPTS, 16,
CL_TARGET | CL_REJECT_NEGATIVE | CL_REPORT,
&target_flags, CLVC_BIT_CLEAR, MASK_NO_ALIGN_STRINGOPS },
{ "-march=",
"Generate code for given CPU",
N_OPTS, 6,
CL_TARGET | CL_JOINED | CL_REJECT_NEGATIVE,
&ix86_arch_string, CLVC_STRING, 0 },
{ "-masm=",
"Use given assembler dialect",
N_OPTS, 5,
CL_TARGET | CL_JOINED | CL_REJECT_NEGATIVE,
&ix86_asm_string, CLVC_STRING, 0 },
{ "-mbranch-cost=",
"Branches are this expensive (1-5, arbitrary units)",
N_OPTS, 13,
CL_TARGET | CL_JOINED | CL_REJECT_NEGATIVE,
&ix86_branch_cost_string, CLVC_STRING, 0 },
{ "-mcmodel=",
"Use given x86-64 code model",
N_OPTS, 8,
CL_TARGET | CL_JOINED | CL_REJECT_NEGATIVE,
&ix86_cmodel_string, CLVC_STRING, 0 },
{ "-mdebug-addr",
0,
N_OPTS, 11,
CL_TARGET | CL_REJECT_NEGATIVE | CL_UNDOCUMENTED,
&TARGET_DEBUG_ADDR, CLVC_BOOLEAN, 0 },
{ "-mdebug-arg",
0,
N_OPTS, 10,
CL_TARGET | CL_REJECT_NEGATIVE | CL_UNDOCUMENTED,
&TARGET_DEBUG_ARG, CLVC_BOOLEAN, 0 },
{ "-mfancy-math-387",
"Generate sin, cos, sqrt for FPU",
N_OPTS, 15,
CL_TARGET | CL_REJECT_NEGATIVE | CL_REPORT,
&target_flags, CLVC_BIT_CLEAR, MASK_NO_FANCY_MATH_387 },
{ "-mfix-and-continue",
"Generate code suitable for fast turn around debugging",
N_OPTS, 17,
CL_TARGET | CL_REPORT,
&darwin_fix_and_continue, CLVC_BOOLEAN, 0 },
{ "-mfp-ret-in-387",
"Return values of functions in FPU registers",
N_OPTS, 14,
CL_TARGET | CL_REPORT,
&target_flags, CLVC_BIT_SET, MASK_FLOAT_RETURNS },
{ "-mfpmath=",
"Generate floating point mathematics using given instruction set",
N_OPTS, 8,
CL_TARGET | CL_JOINED | CL_REJECT_NEGATIVE,
&ix86_fpmath_string, CLVC_STRING, 0 },
{ "-mhard-float",
"Use hardware fp",
N_OPTS, 11,
CL_TARGET | CL_REJECT_NEGATIVE,
&target_flags, CLVC_BIT_SET, MASK_80387 },
{ "-mieee-fp",
"Use IEEE math for fp comparisons",
N_OPTS, 8,
CL_TARGET | CL_REPORT,
&target_flags, CLVC_BIT_SET, MASK_IEEE_FP },
{ "-minline-all-stringops",
"Inline all known string operations",
N_OPTS, 21,
CL_TARGET | CL_REPORT,
&target_flags, CLVC_BIT_SET, MASK_INLINE_ALL_STRINGOPS },
{ "-mintel-syntax",
0,
N_OPTS, 13,
CL_TARGET | CL_UNDOCUMENTED,
&VAR_mintel_syntax, CLVC_BOOLEAN, 0 },
{ "-mlarge-data-threshold=",
"Data greater than given threshold will go into .ldata section in x86-64 medium model",
N_OPTS, 22,
CL_TARGET | CL_JOINED | CL_REJECT_NEGATIVE,
&ix86_section_threshold_string, CLVC_STRING, 0 },
{ "-mmacosx-version-min=",
"The earliest MacOS X version on which this program will run",
N_OPTS, 20,
CL_TARGET | CL_JOINED | CL_REPORT,
&darwin_macosx_version_min, CLVC_STRING, 0 },
{ "-mmmx",
"Support MMX built-in functions",
N_OPTS, 4,
CL_TARGET | CL_REPORT,
&target_flags, CLVC_BIT_SET, MASK_MMX },
{ "-mms-bitfields",
"Use native (MS) bitfield layout",
N_OPTS, 13,
CL_TARGET | CL_REPORT,
&target_flags, CLVC_BIT_SET, MASK_MS_BITFIELD_LAYOUT },
{ "-mno-align-stringops",
0,
N_OPTS, 19,
CL_TARGET | CL_REJECT_NEGATIVE | CL_UNDOCUMENTED | CL_REPORT,
&target_flags, CLVC_BIT_SET, MASK_NO_ALIGN_STRINGOPS },
{ "-mno-fancy-math-387",
0,
N_OPTS, 18,
CL_TARGET | CL_REJECT_NEGATIVE | CL_UNDOCUMENTED | CL_REPORT,
&target_flags, CLVC_BIT_SET, MASK_NO_FANCY_MATH_387 },
{ "-mno-push-args",
0,
N_OPTS, 13,
CL_TARGET | CL_REJECT_NEGATIVE | CL_UNDOCUMENTED | CL_REPORT,
&target_flags, CLVC_BIT_SET, MASK_NO_PUSH_ARGS },
{ "-mno-red-zone",
0,
N_OPTS, 12,
CL_TARGET | CL_REJECT_NEGATIVE | CL_UNDOCUMENTED | CL_REPORT,
&target_flags, CLVC_BIT_SET, MASK_NO_RED_ZONE },
{ "-momit-leaf-frame-pointer",
"Omit the frame pointer in leaf functions",
N_OPTS, 24,
CL_TARGET | CL_REPORT,
&target_flags, CLVC_BIT_SET, MASK_OMIT_LEAF_FRAME_POINTER },
{ "-mone-byte-bool",
"Set sizeof(bool) to 1",
N_OPTS, 14,
CL_TARGET | CL_REJECT_NEGATIVE | CL_REPORT,
&darwin_one_byte_bool, CLVC_BOOLEAN, 0 },
{ "-mpentium",
0,
N_OPTS, 8,
CL_TARGET | CL_REJECT_NEGATIVE | CL_UNDOCUMENTED,
&VAR_mpentium, CLVC_BOOLEAN, 0 },
{ "-mpentiumpro",
0,
N_OPTS, 11,
CL_TARGET | CL_REJECT_NEGATIVE | CL_UNDOCUMENTED,
&VAR_mpentiumpro, CLVC_BOOLEAN, 0 },
{ "-mpreferred-stack-boundary=",
"Attempt to keep stack aligned to this power of 2",
N_OPTS, 26,
CL_TARGET | CL_JOINED | CL_REJECT_NEGATIVE,
&ix86_preferred_stack_boundary_string, CLVC_STRING, 0 },
{ "-mpush-args",
"Use push instructions to save outgoing arguments",
N_OPTS, 10,
CL_TARGET | CL_REPORT,
&target_flags, CLVC_BIT_CLEAR, MASK_NO_PUSH_ARGS },
{ "-mred-zone",
"Use red-zone in the x86-64 code",
N_OPTS, 9,
CL_TARGET | CL_REJECT_NEGATIVE | CL_REPORT,
&target_flags, CLVC_BIT_CLEAR, MASK_NO_RED_ZONE },
{ "-mregparm=",
"Number of registers used to pass integer arguments",
N_OPTS, 9,
CL_TARGET | CL_JOINED | CL_REJECT_NEGATIVE,
&ix86_regparm_string, CLVC_STRING, 0 },
{ "-mrtd",
"Alternate calling convention",
N_OPTS, 4,
CL_TARGET | CL_REPORT,
&target_flags, CLVC_BIT_SET, MASK_RTD },
{ "-msoft-float",
"Do not use hardware fp",
N_OPTS, 11,
CL_TARGET,
&target_flags, CLVC_BIT_CLEAR, MASK_80387 },
{ "-msse",
"Support MMX and SSE built-in functions and code generation",
N_OPTS, 4,
CL_TARGET | CL_REPORT,
&target_flags, CLVC_BIT_SET, MASK_SSE },
{ "-msse2",
"Support MMX, SSE and SSE2 built-in functions and code generation",
N_OPTS, 5,
CL_TARGET | CL_REPORT,
&target_flags, CLVC_BIT_SET, MASK_SSE2 },
{ "-msse3",
"Support MMX, SSE, SSE2 and SSE3 built-in functions and code generation",
N_OPTS, 5,
CL_TARGET | CL_REPORT,
&target_flags, CLVC_BIT_SET, MASK_SSE3 },
{ "-msseregparm",
"Use SSE register passing conventions for SF and DF mode",
N_OPTS, 11,
CL_TARGET | CL_REJECT_NEGATIVE,
&target_flags, CLVC_BIT_SET, MASK_SSEREGPARM },
{ "-mstack-arg-probe",
"Enable stack probing",
N_OPTS, 16,
CL_TARGET | CL_REPORT,
&target_flags, CLVC_BIT_SET, MASK_STACK_PROBE },
{ "-msvr3-shlib",
"Uninitialized locals in .bss",
N_OPTS, 11,
CL_TARGET | CL_REPORT,
&target_flags, CLVC_BIT_SET, MASK_SVR3_SHLIB },
{ "-mtls-dialect=",
"Use given thread-local storage dialect",
N_OPTS, 13,
CL_TARGET | CL_JOINED | CL_REJECT_NEGATIVE,
&ix86_tls_dialect_string, CLVC_STRING, 0 },
{ "-mtls-direct-seg-refs",
"Use direct references against %gs when accessing tls data",
N_OPTS, 20,
CL_TARGET | CL_REPORT,
&target_flags, CLVC_BIT_SET, MASK_TLS_DIRECT_SEG_REFS },
{ "-mtune=",
"Schedule code for given CPU",
N_OPTS, 6,
CL_TARGET | CL_JOINED | CL_REJECT_NEGATIVE,
&ix86_tune_string, CLVC_STRING, 0 },
{ "-nostdinc",
"Do not search standard system include directories (those specified with -isystem will still be used)",
N_OPTS, 8,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-nostdinc++",
"Do not search standard system include directories for C++",
N_OPTS, 10,
CL_CXX | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-o",
"-o Place output into ",
N_OPTS, 1,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_COMMON | CL_JOINED | CL_SEPARATE,
0, CLVC_STRING, 0 },
{ "-p",
"Enable function profiling",
N_OPTS, 1,
CL_COMMON,
&profile_flag, CLVC_BOOLEAN, 0 },
{ "-pedantic",
"Issue warnings needed for strict compliance to the standard",
N_OPTS, 8,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_COMMON,
&pedantic, CLVC_BOOLEAN, 0 },
{ "-pedantic-errors",
"Like -pedantic but issue them as errors",
N_OPTS, 15,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_COMMON,
0, CLVC_BOOLEAN, 0 },
{ "-print-objc-runtime-info",
"Generate C header of platform-specific features",
N_OPTS, 23,
CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-print-pch-checksum",
"Print a checksum of the executable for PCH validity checking, and stop",
N_OPTS, 18,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-quiet",
"Do not display functions compiled or elapsed time",
N_OPTS, 5,
CL_COMMON,
&quiet_flag, CLVC_BOOLEAN, 0 },
{ "-remap",
"Remap file names when including files",
N_OPTS, 5,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-std=c++98",
"Conform to the ISO 1998 C++ standard",
N_OPTS, 9,
CL_CXX | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-std=c89",
"Conform to the ISO 1990 C standard",
N_OPTS, 7,
CL_C | CL_ObjC,
0, CLVC_BOOLEAN, 0 },
{ "-std=c99",
"Conform to the ISO 1999 C standard",
N_OPTS, 7,
CL_C | CL_ObjC,
0, CLVC_BOOLEAN, 0 },
{ "-std=c9x",
"Deprecated in favor of -std=c99",
N_OPTS, 7,
CL_C | CL_ObjC,
0, CLVC_BOOLEAN, 0 },
{ "-std=gnu++98",
"Conform to the ISO 1998 C++ standard with GNU extensions",
N_OPTS, 11,
CL_CXX | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-std=gnu89",
"Conform to the ISO 1990 C standard with GNU extensions",
N_OPTS, 9,
CL_C | CL_ObjC,
0, CLVC_BOOLEAN, 0 },
{ "-std=gnu99",
"Conform to the ISO 1999 C standard with GNU extensions",
N_OPTS, 9,
CL_C | CL_ObjC,
0, CLVC_BOOLEAN, 0 },
{ "-std=gnu9x",
"Deprecated in favor of -std=gnu99",
N_OPTS, 9,
CL_C | CL_ObjC,
0, CLVC_BOOLEAN, 0 },
{ "-std=iso9899:1990",
"Conform to the ISO 1990 C standard",
N_OPTS, 16,
CL_C | CL_ObjC,
0, CLVC_BOOLEAN, 0 },
{ "-std=iso9899:199409",
"Conform to the ISO 1990 C standard as amended in 1994",
N_OPTS, 18,
CL_C | CL_ObjC,
0, CLVC_BOOLEAN, 0 },
{ "-std=iso9899:1999",
"Conform to the ISO 1999 C standard",
N_OPTS, 16,
CL_C | CL_ObjC,
0, CLVC_BOOLEAN, 0 },
{ "-std=iso9899:199x",
"Deprecated in favor of -std=iso9899:1999",
N_OPTS, 16,
CL_C | CL_ObjC,
0, CLVC_BOOLEAN, 0 },
{ "-traditional-cpp",
"Enable traditional preprocessing",
N_OPTS, 15,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-trigraphs",
"-trigraphs Support ISO C trigraphs",
N_OPTS, 9,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-undef",
"Do not predefine system-specific and GCC-specific macros",
N_OPTS, 5,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-v",
"Enable verbose output",
N_OPTS, 1,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX,
0, CLVC_BOOLEAN, 0 },
{ "-version",
"Display the compiler's version",
N_OPTS, 7,
CL_COMMON,
&version_flag, CLVC_BOOLEAN, 0 },
{ "-w",
"Suppress warnings",
N_OPTS, 1,
CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_COMMON,
&inhibit_warnings, CLVC_BOOLEAN, 0 }
};