X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Fflags.h;h=626993fca6e20e5388b6fd9b0d02c12eb502d103;hb=ecbfdc878159c748742c4a5e8d416e4edd90cac9;hp=aed3386f4c8e3fd7207c66b5c7d4fe6b4e51cc92;hpb=5d364be7dedd78666517a776837f07d7dbd56cc5;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/flags.h b/gcc/flags.h index aed3386f4c8..626993fca6e 100644 --- a/gcc/flags.h +++ b/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, 2004 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,66 +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. */ -extern int extra_warnings; +extern bool 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. */ @@ -148,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. */ @@ -198,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; @@ -363,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). */ @@ -434,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; @@ -463,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; @@ -520,10 +549,6 @@ extern int flag_dump_rtl_in_asm; in generated assembly code. */ extern int flag_leading_underscore; -/* -fgnu-linker specifies use of the GNU linker for initializations. - -fno-gnu-linker says that collect will be used. */ -extern int flag_gnu_linker; - /* Tag all structures with __attribute__(packed) */ extern int flag_pack_struct; @@ -586,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'. @@ -640,6 +671,28 @@ 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; + +/* For the bt-load pass, nonzero means don't re-use branch target registers + in any basic block. */ +extern int flag_btr_bb_exclusive; + /* Nonzero means we should do dwarf2 duplicate elimination. */ @@ -664,6 +717,41 @@ 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; + +/* Nonzero if we should track variables. */ +extern int flag_var_tracking; + +/* 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 @@ -688,6 +776,6 @@ extern int flag_unit_at_a_time; /* 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 */