Annotation of gcc/flags.h, revision 1.1.1.8

1.1       root        1: /* Compilation switch flag definitions for GNU CC.
1.1.1.8 ! root        2:    Copyright (C) 1987, 1988, 1994, 1995 Free Software Foundation, Inc.
1.1       root        3: 
                      4: This file is part of GNU CC.
                      5: 
                      6: GNU CC is free software; you can redistribute it and/or modify
                      7: it under the terms of the GNU General Public License as published by
                      8: the Free Software Foundation; either version 2, or (at your option)
                      9: any later version.
                     10: 
                     11: GNU CC is distributed in the hope that it will be useful,
                     12: but WITHOUT ANY WARRANTY; without even the implied warranty of
                     13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                     14: GNU General Public License for more details.
                     15: 
                     16: You should have received a copy of the GNU General Public License
                     17: along with GNU CC; see the file COPYING.  If not, write to
1.1.1.8 ! root       18: the Free Software Foundation, 59 Temple Place - Suite 330,
        !            19: Boston, MA 02111-1307, USA.  */
1.1       root       20: 
                     21: /* Name of the input .c file being compiled.  */
                     22: extern char *main_input_filename;
                     23: 
                     24: enum debug_info_type
                     25: {
                     26:   NO_DEBUG,        /* Write no debug info.  */
                     27:   DBX_DEBUG,       /* Write BSD .stabs for DBX (using dbxout.c).  */
                     28:   SDB_DEBUG,       /* Write COFF for (old) SDB (using sdbout.c).  */
1.1.1.2   root       29:   DWARF_DEBUG,     /* Write Dwarf debug info (using dwarfout.c).  */
                     30:   XCOFF_DEBUG      /* Write IBM/Xcoff debug info (using dbxout.c).  */
1.1       root       31: };
                     32: 
                     33: /* Specify which kind of debugging info to generate.  */
                     34: extern enum debug_info_type write_symbols;
                     35: 
                     36: enum debug_info_level
                     37: {
                     38:   DINFO_LEVEL_NONE,    /* Write no debugging info.  */
                     39:   DINFO_LEVEL_TERSE,   /* Write minimal info to support tracebacks only.  */
                     40:   DINFO_LEVEL_NORMAL,  /* Write info for all declarations (and line table). */
                     41:   DINFO_LEVEL_VERBOSE  /* Write normal info plus #define/#undef info.  */
                     42: };
                     43: 
                     44: /* Specify how much debugging info to generate.  */
                     45: extern enum debug_info_level debug_info_level;
                     46: 
1.1.1.4   root       47: /* Nonzero means use GNU-only extensions in the generated symbolic
                     48:    debugging information.  */
                     49: extern int use_gnu_debug_info_extensions;
1.1       root       50: 
                     51: /* Nonzero means do optimizations.  -opt.  */
                     52: 
                     53: extern int optimize;
                     54: 
                     55: /* Nonzero means do stupid register allocation.  -noreg.
                     56:    Currently, this is 1 if `optimize' is 0.  */
                     57: 
                     58: extern int obey_regdecls;
                     59: 
                     60: /* Don't print functions as they are compiled and don't print
                     61:    times taken by the various passes.  -quiet.  */
                     62: 
                     63: extern int quiet_flag;
                     64: 
                     65: /* Don't print warning messages.  -w.  */
                     66: 
                     67: extern int inhibit_warnings;
                     68: 
                     69: /* Do print extra warnings (such as for uninitialized variables).  -W.  */
                     70: 
                     71: extern int extra_warnings;
                     72: 
                     73: /* Nonzero to warn about unused local variables.  */
                     74: 
                     75: extern int warn_unused;
                     76: 
1.1.1.5   root       77: /* Nonzero means warn if inline function is too large.  */
                     78: 
                     79: extern int warn_inline;
                     80: 
1.1       root       81: /* Nonzero to warn about variables used before they are initialized.  */
                     82: 
                     83: extern int warn_uninitialized;
                     84: 
                     85: /* Nonzero means warn about all declarations which shadow others.   */
                     86: 
                     87: extern int warn_shadow;
                     88: 
                     89: /* Warn if a switch on an enum fails to have a case for every enum value.  */
                     90: 
                     91: extern int warn_switch;
                     92: 
                     93: /* Nonzero means warn about function definitions that default the return type
                     94:    or that use a null return and have a return-type other than void.  */
                     95: 
                     96: extern int warn_return_type;
                     97: 
                     98: /* Nonzero means warn about pointer casts that increase the required
                     99:    alignment of the target type (and might therefore lead to a crash
                    100:    due to a misaligned access).  */
                    101: 
                    102: extern int warn_cast_align;
                    103: 
1.1.1.5   root      104: /* Nonzero means warn that dbx info for template class methods isn't fully
                    105:    supported yet.  */
                    106: 
                    107: extern int warn_template_debugging;
                    108: 
1.1       root      109: /* Nonzero means warn about any identifiers that match in the first N
                    110:    characters.  The value N is in `id_clash_len'.  */
                    111: 
                    112: extern int warn_id_clash;
1.1.1.7   root      113: extern unsigned id_clash_len;
                    114: 
                    115: /* Nonzero means warn about any objects definitions whose size is larger
                    116:    than N bytes.  Also want about function definitions whose returned
                    117:    values are larger than N bytes. The value N is in `larger_than_size'.  */
                    118: 
                    119: extern int warn_larger_than;
                    120: extern unsigned larger_than_size;
1.1       root      121: 
                    122: /* Warn if a function returns an aggregate,
                    123:    since there are often incompatible calling conventions for doing this.  */
                    124: 
                    125: extern int warn_aggregate_return;
                    126: 
                    127: /* Nonzero if generating code to do profiling.  */
                    128: 
                    129: extern int profile_flag;
                    130: 
                    131: /* Nonzero if generating code to do profiling on the basis of basic blocks.  */
                    132: 
                    133: extern int profile_block_flag;
                    134: 
                    135: /* Nonzero for -pedantic switch: warn about anything
                    136:    that standard C forbids.  */
                    137: 
                    138: extern int pedantic;
                    139: 
                    140: /* Temporarily suppress certain warnings.
                    141:    This is set while reading code from a system header file.  */
                    142: 
                    143: extern int in_system_header;
                    144: 
                    145: /* Nonzero for -dp: annotate the assembly with a comment describing the
                    146:    pattern and alternative used.  */
                    147: 
                    148: extern int flag_print_asm_name;
                    149: 
                    150: /* Now the symbols that are set with `-f' switches.  */
                    151: 
                    152: /* Nonzero means `char' should be signed.  */
                    153: 
                    154: extern int flag_signed_char;
                    155: 
                    156: /* Nonzero means give an enum type only as many bytes as it needs.  */
                    157: 
                    158: extern int flag_short_enums;
                    159: 
                    160: /* Nonzero for -fcaller-saves: allocate values in regs that need to
                    161:    be saved across function calls, if that produces overall better code.
                    162:    Optional now, so people can test it.  */
                    163: 
                    164: extern int flag_caller_saves;
                    165: 
                    166: /* Nonzero for -fpcc-struct-return: return values the same way PCC does.  */
                    167: 
                    168: extern int flag_pcc_struct_return;
                    169: 
                    170: /* Nonzero for -fforce-mem: load memory value into a register
                    171:    before arithmetic on it.  This makes better cse but slower compilation.  */
                    172: 
                    173: extern int flag_force_mem;
                    174: 
                    175: /* Nonzero for -fforce-addr: load memory address into a register before
                    176:    reference to memory.  This makes better cse but slower compilation.  */
                    177: 
                    178: extern int flag_force_addr;
                    179: 
                    180: /* Nonzero for -fdefer-pop: don't pop args after each function call;
                    181:    instead save them up to pop many calls' args with one insns.  */
                    182: 
                    183: extern int flag_defer_pop;
                    184: 
                    185: /* Nonzero for -ffloat-store: don't allocate floats and doubles
                    186:    in extended-precision registers.  */
                    187: 
                    188: extern int flag_float_store;
                    189: 
                    190: /* Nonzero enables strength-reduction in loop.c.  */
                    191: 
                    192: extern int flag_strength_reduce;
                    193: 
                    194: /* Nonzero enables loop unrolling in unroll.c.  Only loops for which the
                    195:    number of iterations can be calculated at compile-time (UNROLL_COMPLETELY,
                    196:    UNROLL_MODULO) or at run-time (preconditioned to be UNROLL_MODULO) are
                    197:    unrolled.  */
                    198: 
                    199: extern int flag_unroll_loops;
                    200: 
                    201: /* Nonzero enables loop unrolling in unroll.c.  All loops are unrolled.
                    202:    This is generally not a win.  */
                    203: 
                    204: extern int flag_unroll_all_loops;
                    205: 
                    206: /* Nonzero for -fcse-follow-jumps:
                    207:    have cse follow jumps to do a more extensive job.  */
                    208: 
                    209: extern int flag_cse_follow_jumps;
                    210: 
1.1.1.3   root      211: /* Nonzero for -fcse-skip-blocks:
                    212:    have cse follow a branch around a block.  */
                    213: 
                    214: extern int flag_cse_skip_blocks;
                    215: 
1.1       root      216: /* Nonzero for -fexpensive-optimizations:
                    217:    perform miscellaneous relatively-expensive optimizations.  */
                    218: extern int flag_expensive_optimizations;
                    219: 
                    220: /* Nonzero for -fwritable-strings:
                    221:    store string constants in data segment and don't uniquize them.  */
                    222: 
                    223: extern int flag_writable_strings;
                    224: 
                    225: /* Nonzero means don't put addresses of constant functions in registers.
                    226:    Used for compiling the Unix kernel, where strange substitutions are
                    227:    done on the assembly output.  */
                    228: 
                    229: extern int flag_no_function_cse;
                    230: 
                    231: /* Nonzero for -fomit-frame-pointer:
                    232:    don't make a frame pointer in simple functions that don't require one.  */
                    233: 
                    234: extern int flag_omit_frame_pointer;
                    235: 
                    236: /* Nonzero to inhibit use of define_optimization peephole opts.  */
                    237: 
                    238: extern int flag_no_peephole;
                    239: 
                    240: /* Nonzero means all references through pointers are volatile.  */
                    241: 
                    242: extern int flag_volatile;
                    243: 
1.1.1.5   root      244: /* Nonzero means treat all global and extern variables as global.  */
                    245: 
                    246: extern int flag_volatile_global;
                    247: 
1.1.1.3   root      248: /* Nonzero allows GCC to violate some IEEE or ANSI rules regarding math
                    249:    operations in the interest of optimization.  For example it allows
                    250:    GCC to assume arguments to sqrt are nonnegative numbers, allowing
                    251:    faster code for sqrt to be generated. */
                    252: 
                    253: extern int flag_fast_math;
                    254: 
1.1       root      255: /* Nonzero means make functions that look like good inline candidates
                    256:    go inline.  */
                    257: 
                    258: extern int flag_inline_functions;
                    259: 
                    260: /* Nonzero for -fkeep-inline-functions: even if we make a function
1.1.1.5   root      261:    go inline everywhere, keep its definition around for debugging
1.1       root      262:    purposes.  */
                    263: 
                    264: extern int flag_keep_inline_functions;
                    265: 
                    266: /* Nonzero means that functions declared `inline' will be treated
                    267:    as `static'.  Prevents generation of zillions of copies of unused
                    268:    static inline functions; instead, `inlines' are written out
                    269:    only when actually used.  Used in conjunction with -g.  Also
                    270:    does the right thing with #pragma interface.  */
                    271: 
                    272: extern int flag_no_inline;
                    273: 
                    274: /* Nonzero if we are only using compiler to check syntax errors.  */
                    275: 
                    276: extern int flag_syntax_only;
                    277: 
1.1.1.2   root      278: /* Nonzero means we should save auxiliary info into a .X file.  */
1.1       root      279: 
                    280: extern int flag_gen_aux_info;
                    281: 
                    282: /* Nonzero means make the text shared if supported.  */
                    283: 
                    284: extern int flag_shared_data;
                    285: 
                    286: /* flag_schedule_insns means schedule insns within basic blocks (before
                    287:    local_alloc).
                    288:    flag_schedule_insns_after_reload means schedule insns after
                    289:    global_alloc.  */
                    290: 
                    291: extern int flag_schedule_insns;
                    292: extern int flag_schedule_insns_after_reload;
                    293: 
                    294: /* Nonzero means put things in delayed-branch slots if supported. */
                    295: 
                    296: extern int flag_delayed_branch;
                    297: 
1.1.1.7   root      298: /* Nonzero means to run cleanups after CALL_EXPRs. */
                    299: 
                    300: extern int flag_short_temps;
                    301: 
1.1       root      302: /* Nonzero means pretend it is OK to examine bits of target floats,
                    303:    even if that isn't true.  The resulting code will have incorrect constants,
                    304:    but the same series of instructions that the native compiler would make.  */
                    305: 
                    306: extern int flag_pretend_float;
                    307: 
                    308: /* Nonzero means change certain warnings into errors.
                    309:    Usually these are warnings about failure to conform to some standard.  */
                    310: 
                    311: extern int flag_pedantic_errors;
                    312: 
                    313: /* Nonzero means generate position-independent code.
                    314:    This is not fully implemented yet.  */
                    315: 
                    316: extern int flag_pic;
                    317: 
                    318: /* Nonzero means place uninitialized global data in the bss section.  */
                    319: 
                    320: extern int flag_no_common;
                    321: 
                    322: /* -finhibit-size-directive inhibits output of .size for ELF.
                    323:    This is used only for compiling crtstuff.c,
                    324:    and it may be extended to other effects
                    325:    needed for crtstuff.c on other systems.  */
                    326: extern int flag_inhibit_size_directive;
                    327: 
1.1.1.3   root      328: /* -fverbose-asm causes extra commentary information to be produced in
                    329:    the generated assembly code (to make it more readable).  This option
                    330:    is generally only of use to those who actually need to read the
                    331:    generated assembly code (perhaps while debugging the compiler itself).  */
                    332: 
                    333: extern int flag_verbose_asm;
                    334: 
1.1       root      335: /* -fgnu-linker specifies use of the GNU linker for initializations.
                    336:    -fno-gnu-linker says that collect will be used.  */
                    337: extern int flag_gnu_linker;
1.1.1.8 ! root      338: 
        !           339: /* Tag all structures with __attribute__(packed) */
        !           340: extern int flag_pack_struct;
1.1       root      341: 
                    342: /* Other basic status info about current function.  */
                    343: 
                    344: /* Nonzero means current function must be given a frame pointer.
                    345:    Set in stmt.c if anything is allocated on the stack there.
                    346:    Set in reload1.c if anything is allocated on the stack there.  */
                    347: 
                    348: extern int frame_pointer_needed;
                    349: 
                    350: /* Set nonzero if jump_optimize finds that control falls through
                    351:    at the end of the function.  */
                    352: 
                    353: extern int can_reach_end;
                    354: 
                    355: /* Nonzero if function being compiled receives nonlocal gotos
                    356:    from nested functions.  */
                    357: 
                    358: extern int current_function_has_nonlocal_label;
                    359: 
1.1.1.6   root      360: /* Nonzero if function being compiled has nonlocal gotos to parent
                    361:    function.  */
                    362: 
                    363: extern int current_function_has_nonlocal_goto;

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.