/* Compilation switch flag definitions for GCC.
Copyright (C) 1987, 1988, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002,
- 2003, 2004, 2005, 2006, 2007
+ 2003, 2004, 2005, 2006, 2007, 2008, 2009
Free Software Foundation, Inc.
This file is part of GCC.
#include "coretypes.h"
#include "options.h"
+#include "real.h"
enum debug_info_type
{
extern int optimize_size;
-/* Do print extra warnings (such as for uninitialized variables).
- -W/-Wextra. */
-
-extern bool extra_warnings;
-
-/* 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 (int setting);
-
/* Used to set the level of -Wstrict-aliasing, when no level is specified.
The external way to set the default level is to use
-Wstrict-aliasing=level.
extern bool warn_larger_than;
extern HOST_WIDE_INT larger_than_size;
-/* Nonzero means warn about constructs which might not be strict
- aliasing safe. */
-
-extern int warn_strict_aliasing;
+/* Nonzero means warn about any function whose frame size is larger
+ than N bytes. */
-/* Nonzero means warn about optimizations which rely on undefined
- signed overflow. */
-
-extern int warn_strict_overflow;
-
-/* Temporarily suppress certain warnings.
- This is set while reading code from a system header file. */
-
-extern int in_system_header;
+extern bool warn_frame_larger_than;
+extern HOST_WIDE_INT frame_larger_than_size;
/* Nonzero for -dp: annotate the assembly with a comment describing the
pattern and alternative used. */
extern int flag_complex_method;
-/* Nonzero means that we don't want inlining by virtue of -fno-inline,
- not just because the tree inliner turned us off. */
-
-extern int flag_really_no_inline;
-
/* Nonzero if we are only using compiler to check syntax errors. */
extern int rtl_dump_and_exit;
extern int flag_pedantic_errors;
+/* Nonzero means make permerror produce warnings instead of errors. */
+
+extern int flag_permissive;
+
/* Nonzero if we are compiling code for a shared library, zero for
executable. */
extern int flag_next_runtime;
extern int flag_dump_rtl_in_asm;
-\f
-/* Other basic status info about current function. */
-/* Nonzero means current function must be given a frame pointer.
- Set in stmt.c if anything is allocated on the stack there.
- Set in reload1.c if anything is allocated on the stack there. */
+/* The algorithm used for the integrated register allocator (IRA). */
+enum ira_algorithm
+{
+ IRA_ALGORITHM_CB,
+ IRA_ALGORITHM_PRIORITY
+};
+
+extern enum ira_algorithm flag_ira_algorithm;
-extern int frame_pointer_needed;
+/* The regions used for the integrated register allocator (IRA). */
+enum ira_region
+{
+ IRA_REGION_ONE,
+ IRA_REGION_ALL,
+ IRA_REGION_MIXED
+};
+
+extern enum ira_region flag_ira_region;
+
+extern unsigned int flag_ira_verbose;
+
+/* The options for excess precision. */
+enum excess_precision
+{
+ EXCESS_PRECISION_DEFAULT,
+ EXCESS_PRECISION_FAST,
+ EXCESS_PRECISION_STANDARD
+};
+
+/* The excess precision specified on the command line, or defaulted by
+ the front end. */
+extern enum excess_precision flag_excess_precision_cmdline;
+
+/* The excess precision currently in effect. */
+extern enum excess_precision flag_excess_precision;
+
+\f
+/* Other basic status info about current function. */
/* Nonzero if subexpressions must be evaluated from left-to-right. */
extern int flag_evaluation_order;
extern unsigned HOST_WIDE_INT g_switch_value;
extern bool g_switch_set;
+/* Same for selective scheduling. */
+extern bool sel_sched_switch_set;
+
/* 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
warning message in case flag was set by -fprofile-{generate,use}. */
extern bool flag_speculative_prefetching_set;
+/* Type of stack check. */
+enum stack_check_type
+{
+ /* Do not check the stack. */
+ NO_STACK_CHECK = 0,
+
+ /* Check the stack generically, i.e. assume no specific support
+ from the target configuration files. */
+ GENERIC_STACK_CHECK,
+
+ /* Check the stack and rely on the target configuration files to
+ check the static frame of functions, i.e. use the generic
+ mechanism only for dynamic stack allocations. */
+ STATIC_BUILTIN_STACK_CHECK,
+
+ /* Check the stack and entirely rely on the target configuration
+ files, i.e. do not use the generic mechanism at all. */
+ FULL_BUILTIN_STACK_CHECK
+};
+extern enum stack_check_type flag_stack_check;
+
/* Returns TRUE if generated code should match ABI version N or
greater is in use. */
#define TYPE_OVERFLOW_TRAPS(TYPE) \
(!TYPE_UNSIGNED (TYPE) && flag_trapv)
+/* True if pointer types have undefined overflow. */
+#define POINTER_TYPE_OVERFLOW_UNDEFINED (flag_strict_overflow)
+
/* Names for the different levels of -Wstrict-overflow=N. The numeric
values here correspond to N. */