/* 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 } };