diff options
Diffstat (limited to 'contrib/gcc/flags.h')
-rw-r--r-- | contrib/gcc/flags.h | 213 |
1 files changed, 147 insertions, 66 deletions
diff --git a/contrib/gcc/flags.h b/contrib/gcc/flags.h index 0a8979d..e947f2a 100644 --- a/contrib/gcc/flags.h +++ b/contrib/gcc/flags.h @@ -1,5 +1,6 @@ /* Compilation switch flag definitions for GCC. - Copyright (C) 1987, 1988, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002 + Copyright (C) 1987, 1988, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002, + 2003 Free Software Foundation, Inc. This file is part of GCC. @@ -22,9 +23,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA #ifndef GCC_FLAGS_H #define GCC_FLAGS_H -/* Name of the input .c file being compiled. */ -extern const char *main_input_filename; - enum debug_info_type { NO_DEBUG, /* Write no debug info. */ @@ -41,6 +39,9 @@ enum debug_info_type /* Specify which kind of debugging info to generate. */ extern enum debug_info_type write_symbols; +/* Names of debug_info_type, for error messages. */ +extern const char *const debug_type_names[]; + enum debug_info_level { DINFO_LEVEL_NONE, /* Write no debugging info. */ @@ -54,7 +55,10 @@ extern enum debug_info_level debug_info_level; /* Nonzero means use GNU-only extensions in the generated symbolic debugging information. */ -extern int use_gnu_debug_info_extensions; +extern bool use_gnu_debug_info_extensions; + +/* Nonzero means emit debugging information only for symbols which are used. */ +extern int flag_debug_only_used_symbols; /* Nonzero means do optimizations. -opt. */ @@ -69,10 +73,6 @@ extern int optimize_size; 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. */ @@ -80,65 +80,62 @@ extern int mem_report; /* Don't print warning messages. -w. */ -extern int inhibit_warnings; +extern bool inhibit_warnings; /* Don't suppress warnings from system headers. -Wsystem-headers. */ -extern int warn_system_headers; +extern bool warn_system_headers; + +/* Do print extra warnings (such as for uninitialized variables). + -W/-Wextra. */ -/* Do print extra warnings (such as for uninitialized variables). -W. */ +extern bool extra_warnings; -extern int extra_warnings; +/* If -Werror. */ + +extern bool warnings_are_errors; /* 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 void set_Wunused (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; +extern bool warn_unused_function; +extern bool warn_unused_label; +extern bool warn_unused_parameter; +extern bool warn_unused_variable; +extern bool warn_unused_value; /* Nonzero to warn about code which is never reached. */ -extern int warn_notreached; +extern bool warn_notreached; /* Nonzero means warn if inline function is too large. */ -extern int warn_inline; +extern bool warn_inline; /* Nonzero to warn about variables used before they are initialized. */ extern int warn_uninitialized; -/* Zero if unknown pragmas are ignored - One if the compiler should warn about an unknown pragma not in - a system include file. - Greater than one if the compiler should warn for all unknown - pragmas. */ - -extern int warn_unknown_pragmas; - /* Nonzero means warn about all declarations which shadow others. */ -extern int warn_shadow; +extern bool warn_shadow; /* Warn if a switch on an enum, that does not have a default case, fails to have a case for every enum value. */ -extern int warn_switch; +extern bool warn_switch; /* Warn if a switch does not have a default case. */ -extern int warn_switch_default; +extern bool warn_switch_default; /* Warn if a switch on an enum fails to have a case for every enum value (regardless of the presence or otherwise of a default case). */ -extern int warn_switch_enum; +extern bool warn_switch_enum; /* Nonzero means warn about function definitions that default the return type or that use a null return and have a return-type other than void. */ @@ -147,47 +144,47 @@ extern int warn_return_type; /* Warn about functions which might be candidates for attribute noreturn. */ -extern int warn_missing_noreturn; +extern bool 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; +extern bool warn_cast_align; /* 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 bool warn_larger_than; 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; +extern bool warn_aggregate_return; /* Warn if packed attribute on struct is unnecessary and inefficient. */ -extern int warn_packed; +extern bool warn_packed; /* Warn when gcc pads a structure to an alignment boundary. */ -extern int warn_padded; +extern bool warn_padded; /* Warn when an optimization pass is disabled. */ -extern int warn_disabled_optimization; +extern bool warn_disabled_optimization; /* Nonzero means warn about uses of __attribute__((deprecated)) declarations. */ -extern int warn_deprecated_decl; +extern bool warn_deprecated_decl; /* Nonzero means warn about constructs which might not be strict aliasing safe. */ -extern int warn_strict_aliasing; +extern bool warn_strict_aliasing; /* Nonzero if generating code to do profiling. */ @@ -197,6 +194,10 @@ extern int profile_flag; extern int profile_arc_flag; +/* Nonzero if value profile should be measured. */ + +extern int flag_profile_values; + /* Nonzero if generating info for gcov to calculate line test coverage. */ extern int flag_test_coverage; @@ -281,12 +282,12 @@ extern int flag_strength_reduce; UNROLL_MODULO) or at run-time (preconditioned to be UNROLL_MODULO) are unrolled. */ -extern int flag_unroll_loops; +extern int flag_old_unroll_loops; /* Nonzero enables loop unrolling in unroll.c. All loops are unrolled. This is generally not a win. */ -extern int flag_unroll_all_loops; +extern int flag_old_unroll_all_loops; /* Nonzero forces all invariant computations in loops to be moved outside the loop. */ @@ -336,18 +337,6 @@ extern int flag_omit_frame_pointer; extern int flag_no_peephole; -/* Nonzero means all references through pointers are volatile. */ - -extern int flag_volatile; - -/* Nonzero means treat all global and extern variables as volatile. */ - -extern int flag_volatile_global; - -/* Nonzero means treat all static variables as volatile. */ - -extern int flag_volatile_static; - /* Nonzero allows GCC to optimize sibling and tail recursive calls. */ extern int flag_optimize_sibling_calls; @@ -374,6 +363,11 @@ extern int flag_finite_math_only; extern int flag_trapping_math; +/* Nonzero means disable transformations that assume default floating + point rounding behavior. */ + +extern int flag_rounding_math; + /* 0 means straightforward implementation of complex divide acceptable. 1 means wide ranges of inputs must work for complex divide. 2 means C99-like requirements for complex divide (not yet implemented). */ @@ -427,6 +421,8 @@ extern int flag_shared_data; extern int flag_schedule_insns; extern int flag_schedule_insns_after_reload; +extern int flag_sched2_use_superblocks; +extern int flag_sched2_use_traces; /* The following flags have effect only for scheduling before register allocation: @@ -443,6 +439,20 @@ extern int flag_schedule_speculative; extern int flag_schedule_speculative_load; extern int flag_schedule_speculative_load_dangerous; +/* The following flags have an effect during scheduling after register + allocation: + + sched_stalled_insns means that insns can be moved prematurely from the queue + of stalled insns into the ready list. + + sched_stalled_insns_dep controls how many recently scheduled cycles will + be examined for a dependency on a stalled insn that is candidate for + premature removal from the queue of stalled insns into the ready list (has + an effect only if the flag 'sched_stalled_insns' is set). */ + +extern int flag_sched_stalled_insns; +extern int flag_sched_stalled_insns_dep; + /* 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; @@ -472,16 +482,26 @@ extern int flag_pedantic_errors; extern int flag_pic; +/* Nonzero if we are compiling position independent code for executable. + 1 vs 2 for a target-dependent "small" or "large" mode. */ + +extern int flag_pie; + +/* Nonzero if we are compiling code for a shared library, zero for + executable. */ + +extern int flag_shlib; + /* Nonzero means generate extra code for exception handling and enable exception handling. */ extern int flag_exceptions; -/* Nonzero means generate frame unwind info table when supported */ +/* Nonzero means generate frame unwind info table when supported. */ extern int flag_unwind_tables; -/* Nonzero means generate frame unwind info table exact at each insn boundary */ +/* Nonzero means generate frame unwind info table exact at each insn boundary. */ extern int flag_asynchronous_unwind_tables; @@ -525,9 +545,9 @@ 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; +/* Greater than zero if user symbols are prepended by a leading underscore + in generated assembly code. */ +extern int flag_leading_underscore; /* Tag all structures with __attribute__(packed) */ extern int flag_pack_struct; @@ -560,7 +580,7 @@ extern int flag_instrument_function_entry_exit; /* Perform a peephole pass before sched2. */ extern int flag_peephole2; -/* Try to guess branch probablities. */ +/* Try to guess branch probabilities. */ extern int flag_guess_branch_prob; /* -fcheck-bounds causes gcc to generate array bounds checks. @@ -591,9 +611,15 @@ extern int frame_pointer_needed; for PLUS / SUB / MULT. */ extern int flag_trapv; +/* Nonzero if the signed arithmetic overflow should wrap around. */ +extern int flag_wrapv; + +/* Nonzero if subexpressions must be evaluated from left-to-right. */ +extern int flag_evaluation_order; + /* Value of the -G xx switch, and whether it was passed or not. */ -extern int g_switch_value; -extern int g_switch_set; +extern unsigned HOST_WIDE_INT g_switch_value; +extern bool g_switch_set; /* Values of the -falign-* flags: how much to align labels in code. 0 means `use default', 1 means `don't align'. @@ -633,6 +659,10 @@ extern enum graph_dump_types graph_dump_format; extern int flag_no_ident; +/* Nonzero means perform global CSE. */ + +extern int flag_gcse; + /* Nonzero if we want to perform enhanced load motion during gcse. */ extern int flag_gcse_lm; @@ -641,11 +671,33 @@ extern int flag_gcse_lm; extern int flag_gcse_sm; +/* Nonzero if we want to perform redundant load-after-store elimination + in gcse. */ + +extern int flag_gcse_las; + +/* Nonzero if value histograms should be used to optimize code. */ +extern int flag_value_profile_transformations; + +/* Perform branch target register optimization before prologue / epilogue + threading. */ + +extern int flag_branch_target_load_optimize; + +/* Perform branch target register optimization after prologue / epilogue + threading and jump2. */ + +extern int flag_branch_target_load_optimize2; + /* Nonzero means we should do dwarf2 duplicate elimination. */ extern int flag_eliminate_dwarf2_dups; +/* Nonzero means we should do unused type elimination. */ + +extern int flag_eliminate_unused_debug_types; + /* Nonzero means to collect statistics which might be expensive and to print them when we are done. */ extern int flag_detailed_statistics; @@ -659,11 +711,40 @@ extern int flag_zero_initialized_in_bss; /* Nonzero means disable transformations observable by signaling NaNs. */ extern int flag_signaling_nans; +extern int flag_unit_at_a_time; + +extern int flag_web; + +/* Nonzero means that we defer emitting functions until they are actually + used. */ +extern int flag_remove_unreachable_functions; + /* A string that's used when a random name is required. NULL means to make it really random. */ extern const char *flag_random_seed; +/* The version of the C++ ABI in use. The following values are + allowed: + + 0: The version of the ABI believed most conformant with the + C++ ABI specification. This ABI may change as bugs are + discovered and fixed. Therefore, 0 will not necessarily + indicate the same ABI in different versions of G++. + + 1: The version of the ABI first used in G++ 3.2. + + Additional positive integers will be assigned as new versions of + the ABI become the default version of the ABI. */ + +extern int flag_abi_version; + +/* Returns TRUE if generated code should match ABI version N or + greater is in use. */ + +#define abi_version_at_least(N) \ + (flag_abi_version == 0 || flag_abi_version >= (N)) + /* True if the given mode has a NaN representation and the treatment of NaN operands is important. Certain optimizations, such as folding x * 0 into x, are not correct for NaN operands, and are normally @@ -681,13 +762,13 @@ extern const char *flag_random_seed; (MODE_HAS_INFINITIES (MODE) && !flag_finite_math_only) /* Like HONOR_NANS, but true if the given mode distinguishes between - postive and negative zero, and the sign of zero is important. */ + positive and negative zero, and the sign of zero is important. */ #define HONOR_SIGNED_ZEROS(MODE) \ (MODE_HAS_SIGNED_ZEROS (MODE) && !flag_unsafe_math_optimizations) /* Like HONOR_NANS, but true if given mode supports sign-dependent rounding, and the rounding mode is important. */ #define HONOR_SIGN_DEPENDENT_ROUNDING(MODE) \ - (MODE_HAS_SIGN_DEPENDENT_ROUNDING (MODE) && !flag_unsafe_math_optimizations) + (MODE_HAS_SIGN_DEPENDENT_ROUNDING (MODE) && flag_rounding_math) #endif /* ! GCC_FLAGS_H */ |