diff options
-rw-r--r-- | contrib/gcc/flags.h | 297 |
1 files changed, 196 insertions, 101 deletions
diff --git a/contrib/gcc/flags.h b/contrib/gcc/flags.h index a7c1b7e..ab449fb 100644 --- a/contrib/gcc/flags.h +++ b/contrib/gcc/flags.h @@ -1,27 +1,31 @@ -/* Compilation switch flag definitions for GNU CC. - Copyright (C) 1987, 88, 94-98, 1999 Free Software Foundation, Inc. +/* Compilation switch flag definitions for GCC. + Copyright (C) 1987, 1988, 1994, 1995, 1996, 1997, 1998, 1999, 2000 + Free Software Foundation, Inc. -This file is part of GNU CC. +This file is part of GCC. -GNU CC is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. -GNU CC is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. You should have received a copy of the GNU General Public License -along with GNU CC; see the file COPYING. If not, write to -the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. */ +along with GCC; see the file COPYING. If not, write to the Free +Software Foundation, 59 Temple Place - Suite 330, Boston, MA +02111-1307, USA. */ + +#ifndef GCC_FLAGS_H +#define GCC_FLAGS_H /* $FreeBSD$ */ /* Name of the input .c file being compiled. */ -extern char *main_input_filename; +extern const char *main_input_filename; enum debug_info_type { @@ -30,7 +34,10 @@ enum debug_info_type SDB_DEBUG, /* Write COFF for (old) SDB (using sdbout.c). */ DWARF_DEBUG, /* Write Dwarf debug info (using dwarfout.c). */ DWARF2_DEBUG, /* Write Dwarf v2 debug info (using dwarf2out.c). */ - XCOFF_DEBUG /* Write IBM/Xcoff debug info (using dbxout.c). */ + XCOFF_DEBUG, /* Write IBM/Xcoff debug info (using dbxout.c). */ + VMS_DEBUG, /* Write VMS debug info (using vmsdbgout.c). */ + VMS_AND_DWARF2_DEBUG /* Write VMS debug info (using vmsdbgout.c). + and DWARF v2 debug info (using dwarf2out.c). */ }; /* Specify which kind of debugging info to generate. */ @@ -40,7 +47,7 @@ enum debug_info_level { DINFO_LEVEL_NONE, /* Write no debugging info. */ DINFO_LEVEL_TERSE, /* Write minimal info to support tracebacks only. */ - DINFO_LEVEL_NORMAL, /* Write info for all declarations (and line table). */ + DINFO_LEVEL_NORMAL, /* Write info for all declarations (and line table). */ DINFO_LEVEL_VERBOSE /* Write normal info plus #define/#undef info. */ }; @@ -59,27 +66,47 @@ extern int optimize; extern int optimize_size; -/* Nonzero means do stupid register allocation. -noreg. - Currently, this is 1 if `optimize' is 0. */ - -extern int obey_regdecls; - /* Don't print functions as they are compiled and don't print times taken by the various passes. -quiet. */ extern int quiet_flag; +/* Print times taken by the various passes. -ftime-report. */ + +extern int time_report; + +/* Print memory still in use at end of compilation (which may have little + to do with peak memory consumption). -fmem-report. */ + +extern int mem_report; + /* Don't print warning messages. -w. */ extern int inhibit_warnings; +/* Don't suppress warnings from system headers. -Wsystem-headers. */ + +extern int warn_system_headers; + /* Do print extra warnings (such as for uninitialized variables). -W. */ extern int extra_warnings; -/* Nonzero to warn about unused local variables. */ +/* Nonzero to warn about unused variables, functions et.al. Use + set_Wunused() to update the -Wunused-* flags that correspond to the + -Wunused option. */ + +extern void set_Wunused PARAMS ((int setting)); + +extern int warn_unused_function; +extern int warn_unused_label; +extern int warn_unused_parameter; +extern int warn_unused_variable; +extern int warn_unused_value; + +/* Nonzero to warn about code which is never reached. */ -extern int warn_unused; +extern int warn_notreached; /* Nonzero means warn if inline function is too large. */ @@ -97,7 +124,7 @@ extern int warn_uninitialized; extern int warn_unknown_pragmas; -/* Nonzero means warn about all declarations which shadow others. */ +/* Nonzero means warn about all declarations which shadow others. */ extern int warn_shadow; @@ -110,59 +137,69 @@ extern int warn_switch; extern int warn_return_type; +/* Warn about functions which might be candidates for attribute noreturn. */ + +extern int warn_missing_noreturn; + /* Nonzero means warn about pointer casts that increase the required alignment of the target type (and might therefore lead to a crash due to a misaligned access). */ extern int warn_cast_align; -/* Nonzero means warn that dbx info for template class methods isn't fully - supported yet. */ - -extern int warn_template_debugging; - -/* Nonzero means warn about any identifiers that match in the first N - characters. The value N is in `id_clash_len'. */ - -extern int warn_id_clash; -extern unsigned id_clash_len; - /* Nonzero means warn about any objects definitions whose size is larger than N bytes. Also want about function definitions whose returned values are larger than N bytes. The value N is in `larger_than_size'. */ extern int warn_larger_than; -extern unsigned larger_than_size; +extern HOST_WIDE_INT larger_than_size; /* Warn if a function returns an aggregate, since there are often incompatible calling conventions for doing this. */ extern int warn_aggregate_return; -/* Nonzero means that -Wformat accepts certain non-ANSI formats. */ +/* Warn if packed attribute on struct is unnecessary and inefficient. */ -extern int flag_format_extensions; +extern int warn_packed; -/* Nonzero if generating code to do profiling. */ +/* Warn when gcc pads a structure to an alignment boundary. */ -extern int profile_flag; +extern int warn_padded; + +/* Warn when an optimization pass is disabled. */ + +extern int warn_disabled_optimization; + +/* Nonzero means warn about uses of __attribute__((deprecated)) + declarations. */ + +extern int warn_deprecated_decl; -/* Nonzero if generating code to do profiling on the basis of basic blocks. */ +/* Nonzero if generating code to do profiling. */ -extern int profile_block_flag; +extern int profile_flag; -/* Nonzero if generating code to profile program flow graph arcs. */ +/* Nonzero if generating code to profile program flow graph arcs. */ extern int profile_arc_flag; -/* Nonzero if generating info for gcov to calculate line test coverage. */ +/* Nonzero if generating info for gcov to calculate line test coverage. */ extern int flag_test_coverage; -/* Nonzero indicates that branch taken probabilities should be calculated. */ +/* Nonzero indicates that branch taken probabilities should be calculated. */ extern int flag_branch_probabilities; +/* Nonzero if basic blocks should be reordered. */ + +extern int flag_reorder_blocks; + +/* Nonzero if registers should be renamed. */ + +extern int flag_rename_registers; + /* Nonzero for -pedantic switch: warn about anything that standard C forbids. */ @@ -235,12 +272,16 @@ extern int flag_unroll_loops; extern int flag_unroll_all_loops; /* Nonzero forces all invariant computations in loops to be moved - outside the loop. */ + outside the loop. */ extern int flag_move_all_movables; +/* Nonzero enables prefetch optimizations for arrays in loops. */ + +extern int flag_prefetch_loop_arrays; + /* Nonzero forces all general induction variables in loops to be - strength reduced. */ + strength reduced. */ extern int flag_reduce_all_givs; @@ -290,21 +331,31 @@ extern int flag_volatile_global; extern int flag_volatile_static; -/* Nonzero allows GCC to violate some IEEE or ANSI rules regarding math - operations in the interest of optimization. For example it allows - GCC to assume arguments to sqrt are nonnegative numbers, allowing - faster code for sqrt to be generated. */ +/* Nonzero allows GCC to optimize sibling and tail recursive calls. */ -extern int flag_fast_math; +extern int flag_optimize_sibling_calls; /* Nonzero means the front end generally wants `errno' maintained by math - operations, like built-in SQRT, unless overridden by flag_fast_math. */ + operations, like built-in SQRT. */ extern int flag_errno_math; +/* Nonzero means that unsafe floating-point math optimizations are allowed + for the sake of speed. IEEE compliance is not guaranteed, and operations + are allowed to assume that their arguments and results are "normal" + (e.g., nonnegative for SQRT). */ + +extern int flag_unsafe_math_optimizations; + +/* Zero means that floating-point math operations cannot generate a + (user-visible) trap. This is the case, for example, in nonstop + IEEE 754 arithmetic. */ + +extern int flag_trapping_math; + /* 0 means straightforward implementation of complex divide acceptable. 1 means wide ranges of inputs must work for complex divide. - 2 means C9X-like requirements for complex divide (not yet implemented). */ + 2 means C99-like requirements for complex divide (not yet implemented). */ extern int flag_complex_divide_method; @@ -351,7 +402,6 @@ extern int flag_shared_data; extern int flag_schedule_insns; extern int flag_schedule_insns_after_reload; -#ifdef HAIFA /* The following flags have effect only for scheduling before register allocation: @@ -366,14 +416,18 @@ extern int flag_schedule_interblock; extern int flag_schedule_speculative; extern int flag_schedule_speculative_load; extern int flag_schedule_speculative_load_dangerous; -#endif /* HAIFA */ -/* flag_on_branch_count_reg means try to replace add-1,compare,branch tupple - by a cheaper branch, on a count register. */ +/* flag_branch_on_count_reg means try to replace add-1,compare,branch tupple + by a cheaper branch, on a count register. */ extern int flag_branch_on_count_reg; +/* This option is set to 1 on -fsingle-precision-constant option which is + used to convert the floating point constants to single precision + constants. */ -/* Nonzero means put things in delayed-branch slots if supported. */ +extern int flag_single_precision_constant; + +/* Nonzero means put things in delayed-branch slots if supported. */ extern int flag_delayed_branch; @@ -403,10 +457,13 @@ extern int flag_pic; extern int flag_exceptions; -/* Nonzero means use the new model for exception handling. Replaces - -DNEW_EH_MODEL as a compile option. */ +/* Nonzero means generate frame unwind info table when supported */ + +extern int flag_unwind_tables; -extern int flag_new_exceptions; +/* Nonzero means generate frame unwind info table exact at each insn boundary */ + +extern int flag_asynchronous_unwind_tables; /* Nonzero means don't place uninitialized global data in common storage by default. */ @@ -446,6 +503,8 @@ extern int flag_verbose_asm; extern int flag_debug_asm; +extern int flag_dump_rtl_in_asm; + /* -fgnu-linker specifies use of the GNU linker for initializations. -fno-gnu-linker says that collect will be used. */ extern int flag_gnu_linker; @@ -468,8 +527,8 @@ extern int flag_argument_noalias; if alias analysis (in general) is enabled. */ extern int flag_strict_aliasing; -/* Emit code to check for stack overflow; also may cause large objects - to be allocated dynamically. */ +/* Emit code to probe the stack, to help detect stack overflow; also + may cause large objects to be allocated dynamically. */ extern int flag_stack_check; /* Do the full regmove optimization pass. */ @@ -477,6 +536,37 @@ extern int flag_regmove; /* Instrument functions with calls at entry and exit, for profiling. */ extern int flag_instrument_function_entry_exit; + +/* Perform a peephole pass before sched2. */ +extern int flag_peephole2; + +/* Try to guess branch probablities. */ +extern int flag_guess_branch_prob; + +/* -fbounded-pointers causes gcc to compile pointers as composite + objects occupying three words: the pointer value, the base address + of the referent object, and the address immediately beyond the end + of the referent object. The base and extent allow us to perform + runtime bounds checking. -fbounded-pointers implies -fcheck-bounds. */ +extern int flag_bounded_pointers; + +/* -fcheck-bounds causes gcc to generate array bounds checks. + For C, C++: defaults to value of flag_bounded_pointers. + For ObjC: defaults to off. + For Java: defaults to on. + For Fortran: defaults to off. + For CHILL: defaults to off. */ +extern int flag_bounds_check; + +/* This will attempt to merge constant section constants, if 1 only + string constants and constants from constant pool, if 2 also constant + variables. */ +extern int flag_merge_constants; + +/* If one, renumber instruction UIDs to reduce the number of + unused UIDs if there are a lot of instructions. If greater than + one, unconditionally renumber instruction UIDs. */ +extern int flag_renumber_insns; /* Other basic status info about current function. */ @@ -486,47 +576,30 @@ extern int flag_instrument_function_entry_exit; extern int frame_pointer_needed; -/* Set nonzero if jump_optimize finds that control falls through - at the end of the function. */ - -extern int can_reach_end; - -/* Nonzero if function being compiled receives nonlocal gotos - from nested functions. */ - -extern int current_function_has_nonlocal_label; - -/* Nonzero if function being compiled has nonlocal gotos to parent - function. */ - -extern int current_function_has_nonlocal_goto; - -/* Nonzero if this function has a computed goto. - - It is computed during find_basic_blocks or during stupid life - analysis. */ - -extern int current_function_has_computed_jump; - -/* Nonzero if GCC must add code to check memory access (used by Checker). */ - -extern int flag_check_memory_usage; - -/* Nonzero if GCC must prefix function names (used with - flag_check_memory_usage). */ - -extern int flag_prefix_function_name; -/* Nonzero if the current function is a thunk, so we should try to cut - corners where we can. */ -extern int current_function_is_thunk; +/* Nonzero if the generated code should trap on signed overflow + for PLUS / SUB / MULT. */ +extern int flag_trapv; /* Value of the -G xx switch, and whether it was passed or not. */ extern int g_switch_value; extern int g_switch_set; -/* Value of the -finline-limit flag. */ - -extern int inline_max_insns; +/* Values of the -falign-* flags: how much to align labels in code. + 0 means `use default', 1 means `don't align'. + For each variable, there is an _log variant which is the power + of two not less than the variable, for .align output. */ + +extern int align_loops; +extern int align_loops_log; +extern int align_loops_max_skip; +extern int align_jumps; +extern int align_jumps_log; +extern int align_jumps_max_skip; +extern int align_labels; +extern int align_labels_log; +extern int align_labels_max_skip; +extern int align_functions; +extern int align_functions_log; /* Nonzero if we dump in VCG format, not plain text. */ extern int dump_for_graph; @@ -544,3 +617,25 @@ extern enum graph_dump_types graph_dump_format; string identifying the compiler. */ extern int flag_no_ident; + +/* Nonzero if we want to perform enhanced load motion during gcse. */ + +extern int flag_gcse_lm; + +/* Nonzero if we want to perform store motion after gcse. */ + +extern int flag_gcse_sm; + + +/* Nonzero means we should do dwarf2 duplicate elimination. */ + +extern int flag_eliminate_dwarf2_dups; + +/* Non-zero means to collect statistics which might be expensive + and to print them when we are done. */ +extern int flag_detailed_statistics; + +/* Nonzero means enable synchronous exceptions for non-call instructions. */ +extern int flag_non_call_exceptions; + +#endif /* ! GCC_FLAGS_H */ |