diff options
| author | Andrew Lee <alee14498@protonmail.com> | 2021-08-15 00:34:05 -0400 |
|---|---|---|
| committer | Andrew Lee <alee14498@protonmail.com> | 2021-08-15 00:34:05 -0400 |
| commit | 60cc83bf91bfc9bb02f6304b5d6c8234ba6d210f (patch) | |
| tree | fdc0be85a1ca35e34c3ae2c805fe9b718e3c1091 /gcc-1.40/gcc.1 | |
| parent | dd8dfab51b832a654365ed00c06bf802ff628bfa (diff) | |
| download | linux-0.01-distro-60cc83bf91bfc9bb02f6304b5d6c8234ba6d210f.tar.gz linux-0.01-distro-60cc83bf91bfc9bb02f6304b5d6c8234ba6d210f.tar.bz2 linux-0.01-distro-60cc83bf91bfc9bb02f6304b5d6c8234ba6d210f.zip | |
Diffstat (limited to 'gcc-1.40/gcc.1')
| -rw-r--r-- | gcc-1.40/gcc.1 | 1310 |
1 files changed, 1310 insertions, 0 deletions
diff --git a/gcc-1.40/gcc.1 b/gcc-1.40/gcc.1 new file mode 100644 index 0000000..b65b8c2 --- /dev/null +++ b/gcc-1.40/gcc.1 @@ -0,0 +1,1310 @@ +.TH GCC 1 "28 November 1990" "Version 1.40" +.de BP +.sp +.ti -.2i +\(** +.. +.SH NAME +gcc \- GNU project C Compiler +.SH SYNOPSIS +.B gcc +[ options ] files +.SH WARNING +This man page is an extract of the documentation of the +.I GNU C compiler +and is limited to the meaning of the options. +.B It is not kept up to date. +If you want to be certain of the information +below, check it in the manual "Using and Porting GCC". Refer to the Info file +.B gcc.info +or the DVI file +.B gcc.dvi +which are made from the Texinfo source file +.BR gcc.texinfo . +.SH DESCRIPTION +The +.I GNU C compiler +uses a command syntax much like the Unix C compiler. +The +.I gcc +program accepts options and file names as operands. +Multiple single-letter options may +.I not +be grouped: +.B \-dr +is very different from +.BR "\-d \-r" . +.P +When you invoke GNU CC, it normally does preprocessing, compilation, +assembly and linking. +File names which end in +.B .c +are taken as C source to be preprocessed and compiled; +file names ending in +.B .i +are taken as preprocessor output to be compiled; +compiler output files plus any input files with names ending in +.B .s +are assembled; +then the resulting object files, plus any other input files, +are linked together to produce an executable. +.P +Command options allow you to stop this process at an intermediate stage. +For example, the +.B \-c +option says not to run the linker. +Then the output consists of object files output by the assembler. +.P +Other command options are passed on to one stage of processing. +Some options control the preprocessor and others the compiler itself. +Yet other options control the assembler and linker; +these are not documented here, but you rarely need to use any of them. +.SH OPTIONS +Here are the options to control the overall compilation process, +including those that say whether to link, whether to assemble, and so on. +.TP +.BI \-o " file" +Place output in file +.IR file . +This applies regardless to whatever sort of output is being produced, +whether it be an executable file, an object file, +an assembler file or preprocessed C code. +.sp +If +.B \-o +is not specified, the default is to put an executable file in +.BR a.out , +the object file +.IB source .c +in +.IB source .o\fR, +an assembler file in +.IB source .s\fR, +and preprocessed C on standard output. +.TP +.B \-c +Compile or assemble the source files, but do not link. +Produce object files with names made by replacing +.B .c +or +.B .s +with +.B .o +at the end of the input file names. +Do nothing at all for object files specified as input. +.TP +.B \-S +Compile into assembler code but do not assemble. +The assembler output file name is made by replacing +.B .c +with +.B .s +at the end of the input file name. +Do nothing at all for assembler source files or +object files specified as input. +.TP +.B \-E +Run only the C preprocessor. +Preprocess all the C source files specified and output +the results to standard output. +.TP +.B \-v +Compiler driver program prints the commands it executes as it runs +the preprocessor, compiler proper, assembler and linker. +Some of these are directed to print their own version numbers. +.TP +.B \-pipe +Use pipes rather than temporary files for communication between the +various stages of compilation. +This fails to work on some systems where the assembler is unable +to read from a pipe; but the GNU assembler has no trouble. +.TP +.BI \-B prefix +Compiler driver program tries +.I prefix +as a prefix for each program it tries to run. +These programs are +.IR cpp , +.IR cc1 , +.I as +and +.IR ld . +.sp +For each subprogram to be run, the compiler driver first tries the +.B \-B +prefix, if any. +If that name is not found, or if +.B \-B +was not specified, the driver tries two standard prefixes, which are +.B /usr/lib/gcc- +and +.BR /usr/local/lib/gcc- . +If neither of those results in a file name that is found, the +unmodified program name is searched for using the directories +specified in your +.B PATH +environment variable. +.sp +The run-time support file +.B gnulib +is also searched for using the +.B \-B +prefix, if needed. +If it is not found there, the two standard prefixes above +are tried, and that is all. +The file is left out of the link if it is not found by those means. +Most of the time, on most machines, you can do without it. +.sp +You can get a similar result from the environment variable +.BR GCC_EXEC_PREFIX ; +if it is defined, its value is used as a prefix in the same way. +If both the +.B \-B +option and the +.B GCC_EXEC_PREFIX +variable are present, the +.B \-B +option is used first and the environment variable value second. +.TP +.BI -b prefix +The argument +.I prefix +is used as a second prefix for the compiler executables and libraries. +This prefix is optional: the compiler tries each file first with it, +then without it. +This prefix follows the prefix specified with +.B \-B +or the default prefixes. +.sp +Thus, +.B \-bvax- \-Bcc/ +in the presence of environment variable +.B GCC_EXEC_PREFIX +with definition +.B /u/foo/ +causes GNU CC to try the following file names for the preprocessor executable: +.sp + \fBcc/vax-cpp +.br + cc/cpp +.br + /u/foo/vax-cpp +.br + /u/foo/cpp +.br + /usr/local/lib/gcc-vax-cpp +.br + /usr/local/lib/gcc-cpp +.br + /usr/lib/gcc-vax-cpp +.br + /usr/lib/gcc-cpp\fR +.P +These options control the details of C compilation itself. +.TP +.B \-ansi +Support all ANSI standard C programs. +.sp +This turns off certain features of GNU C that are incompatible with +ANSI C, such as the +.BR asm , +.B inline +and +.B typeof +keywords, and predefined macros such as +.B unix +and +.B vax +that identify the type of system you are using. +It also enables the undesirable and rarely used ANSI trigraph feature. +.sp +The alternate keywords +.BR __asm__ , +.B __inline__ +and +.B __typeof__ +continue to work despite +.BR \-ansi . +You would not want to use them in an ANSI C program, of course, +but it useful to put them in header files that might be included +in compilations done with +.BR \-ansi . +Alternate predefined macros such as +.B __unix__ +and +.B __vax__ +are also available, with or without +.BR \-ansi . +.sp +The +.B \-ansi +option does not cause non-ANSI programs to be rejected gratuitously. +For that, +.B \-pedantic +is required in addition to +.BR \-ansi . +.sp +The macro +.B __STRICT_ANSI__ +is predefined when the +.B \-ansi +option is used. +Some header files may notice this macro and refrain from declaring +certain functions or defining certain macros that the ANSI standard +doesn't call for; this is to avoid interfering with any programs +that might use these names for other things. +.TP +.B \-traditional +Attempt to support some aspects of traditional C compilers. +Specifically: +.BP +All +.B extern +declarations take effect globally even if they are +written inside of a function definition. +This includes implicit declarations of functions. +.BP +The keywords +.BR typeof , +.BR inline , +.BR signed , +.B const +and +.B volatile +are not recognized. +.BP +Comparisons between pointers and integers are always allowed. +.BP +Integer types +.B "unsigned short" +and +.B "unsigned char" +promote to +.BR "unsigned int" . +.BP +Out-of-range floating point literals are not an error. +.BP +All automatic variables not declared +.B register +are preserved by +.IR longjmp (3C). +Ordinarily, GNU C follows ANSI C: automatic variables not declared +.B volatile +may be clobbered. +.BP +In the preprocessor, comments convert to nothing at all, +rather than to a space. +This allows traditional token concatenation. +.BP +In the preprocessor, macro arguments are recognized within string +constants in a macro definition (and their values are stringified, though +without additional quote marks, when they appear in such a context). +The preprocessor always considers a string constant to end at a newline. +.BP +The predefined macro +.B __STDC__ +is not defined when you use +.BR \-traditional , +but +.B __GNUC__ +is (since the GNU extensions which +.B __GNUC__ +indicates are not affected by +.BR \-traditional ). +If you need to write header files that work differently depending on whether +.B \-traditional +is in use, by testing both of these predefined macros you can distinguish +four situations: GNU C, traditional GNU C, other ANSI C compilers, and +other old C compilers. +.TP +.B \-O +Optimize. +Optimizing compilation takes somewhat more time, +and a lot more memory for a large function. +.sp +Without +.BR \-O , +the compiler's goal is to reduce the cost of compilation and +to make debugging produce the expected results. +Statements are independent: if you stop the program with a breakpoint +between statements, you can then assign a new value to any variable or +change the program counter to any other statement in the function and +get exactly the results you would expect from the source code. +.sp +Without +.BR \-O , +only variables declared +.B register +are allocated in registers. +The resulting compiled code is a little worse than produced by PCC without +.BR \-O . +.sp +With +.BR \-O , +the compiler tries to reduce code size and execution time. +.sp +Some of the +.B \-f +options described below turn specific kinds of optimization on or off. +.TP +.B \-g +Produce debugging information in the operating system's +native format (for DBX or SDB). +GDB also can work with this debugging information. +.sp +Unlike most other C compilers, GNU CC allows you to use +.B \-g +with +.BR \-O . +The shortcuts taken by optimized code may occasionally +produce surprising results: some variables you declared may not exist +at all; flow of control may briefly move where you did not expect it; +some statements may not be executed because they compute constant +results or their values were already at hand; some statements may +execute in different places because they were moved out of loops. +Nevertheless it proves possible to debug optimized output. +This makes it reasonable to use the optimizer for programs +that might have bugs. +.TP +.B \-w +Inhibit all warning messages. +.TP +.B \-W +Print extra warning messages for these events: +.BP +An automatic variable is used without first being initialized. +.sp +These warnings are possible only in optimizing compilation, +because they require data flow information that is computed only +when optimizing. +If you don't specify +.BR \-O , +you simply won't get these warnings. +.sp +These warnings occur only for variables that are candidates for +register allocation. +Therefore, they do not occur for a variable that is declared +.BR volatile , +or whose address is taken, or whose size is other than 1, 2, 4 or 8 bytes. +Also, they do not occur for structures, unions or arrays, even when +they are in registers. +.sp +Note that there may be no warning about a variable that is used only +to compute a value that itself is never used, because such +computations may be deleted by data flow analysis before the warnings +are printed. +.sp +These warnings are made optional because GNU CC is not smart +enough to see all the reasons why the code might be correct +despite appearing to have an error. +Here is one example of how this can happen: +.sp + { +.br + \ \ int x; +.br + \ \ switch (y) +.br + \ \ \ \ { +.br + \ \ \ \ case 1: x = 1; +.br + \ \ \ \ \ \ break; +.br + \ \ \ \ case 2: x = 4; +.br + \ \ \ \ \ \ break; +.br + \ \ \ \ case 3: x = 5; +.br + \ \ \ \ } +.br + \ \ foo (x); +.br + } +.sp +If the value of +.I y +is always 1, 2 or 3, then +.I x +is always initialized, but GNU CC doesn't know this. +Here is another common case: +.sp + { +.br + \ \ int save_y; +.br + \ \ if (change_y) save_y = y, y = new_y; +.br + \ \ ... +.br + \ \ if (change_y) y = save_y; +.br + } +.sp +This has no bug because +.I save_y +is used only if it is set. +.sp +Some spurious warnings can be avoided if you declare as +.B volatile +all the functions you use that never return. +.BP +A nonvolatile automatic variable might be changed by a call to +.IR longjmp (3C). +These warnings as well are possible only in optimizing compilation. +.sp +The compiler sees only the calls to +.IR setjmp (3C). +It cannot know where +.IR longjmp (3C) +will be called; in fact, a signal handler could +call it at any point in the code. +As a result, you may get a warning even when there is +in fact no problem because +.IR longjmp (3C) +cannot in fact be called at the place which would cause a problem. +.BP +A function can return either with or without a value. +(Falling off the end of the function body is considered returning without +a value.) +For example, this function would evoke such a warning: +.sp + foo (a) +.br + { +.br + \ \ if (a > 0) +.br + \ \ \ \ return a; +.br + } +.sp +Spurious warnings can occur because GNU CC does not realize that +certain functions (including +.IR abort (3C) +and +.IR longjmp (3C)) +will never return. +.BP +An expression-statement contains no side effects. +.sp +In the future, other useful warnings may also be enabled by this option. +.TP +.B \-Wimplicit +Warn whenever a function is implicitly declared. +.TP +.B \-Wreturn-type +Warn whenever a function is defined with a return-type that defaults to +.BR int . +Also warn about any +.B return +statement with no return-value in a function whose return-type is not +.BR void . +.TP +.B \-Wunused +Warn whenever a local variable is unused aside from its declaration, +and whenever a function is declared static but never defined. +.TP +.B \-Wswitch +Warn whenever a +.B switch +statement has an index of enumeral type and lacks a +.B case +for one or more of the named codes of that enumeration. +(The presence of a +.B default +label prevents this warning.) +.B case +labels outside the enumeration range also provoke +warnings when this option is used. +.TP +.B \-Wcomment +Warn whenever a comment-start sequence +.B /\(** +appears in a comment. +.TP +.B \-Wtrigraphs +Warn if any trigraphs are encountered (assuming they are enabled). +.TP +.B \-Wall +All of the above +.B \-W +options combined. +These are all the options which pertain to usage that we do not recommend and +that we believe is always easy to avoid, even in conjunction with macros. +.sp +The other +.BR \-W ... +options below are not implied by +.B \-Wall +because certain kinds of useful macros are almost impossible to write +without causing those warnings. +.TP +.B \-Wshadow +Warn whenever a local variable shadows another local variable. +.TP +.BI \-Wid-clash- len +Warn whenever two distinct identifiers match in the first +.I len +characters. +This may help you prepare a program that will compile with certain obsolete, +brain-damaged compilers. +.TP +.B \-Wpointer-arith +Warn about anything that depends on the size of a function type or of +.BR void . +GNU C assigns these types a size of 1, for convenience in calculations with +.B void \(** +pointers and pointers to functions. +.TP +.B \-Wcast-qual +Warn whenever a pointer is cast so as to remove a type qualifier from +the target type. +For example, warn if a +.B const char \(** +is cast to an ordinary +.BR "char \(**" . +.TP +.B \-Wwrite-strings +Give string constants the type +.B const char[\fIlength\fB] +so that copying the address of one into a +.RB non- "const char \(**" +pointer will get a warning. +These warnings will help you find at compile time +code that can try to write into a string constant, +but only if you have been very careful about using +.B const +in declarations and prototypes. +Otherwise, it will just be a nuisance; this is why we did not make +.B \-Wall +request these warnings. +.TP +.B \-p +Generate extra code to write profile information suitable +for the analysis program +.IR prof (1). +.TP +.B \-pg +Generate extra code to write profile information suitable for the +analysis program +.IR gprof (1). +.TP +.B \-a +Generate extra code to write profile information for basic blocks, +suitable for the analysis program +.IR tcov (1). +Eventually GNU +.IR gprof (1) +should be extended to process this data. +.TP +.BI \-l library +Search a standard list of directories for a library named +.IR library , +which is actually a file named +.BR lib\fIlibrary\fB.a . +The linker uses this file as if it had been specified precisely by name. +.sp +The directories searched include several standard system directories +plus any that you specify with +.BR \-L . +.sp +Normally the files found this way are library files--archive files +whose members are object files. +The linker handles an archive file by scanning through it for members +which define symbols that have so far been referenced but not defined. +But if the file that is found is an ordinary object file, it is linked +in the usual fashion. +The only difference between using an +.B \-l +option and specifying a file name is that +.B \-l +searches several directories. +.TP +.BI \-L dir +Add directory +.I dir +to the list of directories to be searched for +.BR \-l . +.TP +.B \-nostdlib +Don't use the standard system libraries and startup files when linking. +Only the files you specify (plus +.BR gnulib ) +will be passed to the linker. +.TP +.BI \-m machinespec +Machine-dependent option specifying something about the type of target machine. +These options are defined by the macro +.B TARGET_SWITCHES +in the machine description. +The default for the options is also defined by that macro, +which enables you to change the defaults. +.sp +These are the +.B \-m +options defined in the 68000 machine description: +.sp +.B \-m68020 +.br +.B \-mc68020 +.in +.5i +Generate output for a 68020 (rather than a 68000). +This is the default if you use the unmodified sources. +.in -.5i +.sp +.B \-m68000 +.br +.B \-mc68000 +.in +.5i +Generate output for a 68000 (rather than a 68020). +.in -.5i +.sp +.B \-m68881 +.in +.5i +Generate output containing 68881 instructions for floating point. +This is the default if you use the unmodified sources. +.in -.5i +.sp +.B \-mfpa +.in +.5i +Generate output containing Sun FPA instructions for floating point. +.in -.5i +.sp +.B \-msoft-float +.in +.5i +Generate output containing library calls for floating point. +.in -.5i +.sp +.B \-mshort +.in +.5i +Consider type +.B int +to be 16 bits wide, like +.BR "short int" . +.in -.5i +.sp +.B \-mnobitfield +.in +.5i +Do not use the bit-field instructions. +.B \-m68000 +implies +.BR \-mnobitfield . +.in -.5i +.sp +.B \-mbitfield +.in +.5i +Do use the bit-field instructions. +.B \-m68020 +implies +.BR \-mbitfield . +This is the default if you use the unmodified sources. +.in -.5i +.sp +.B \-mrtd +.in +.5i +Use a different function-calling convention, in which functions +that take a fixed number of arguments return with the +.B rtd +instruction, which pops their arguments while returning. +This saves one instruction in the caller since there is no need to pop +the arguments there. +.sp +This calling convention is incompatible with the one normally +used on Unix, so you cannot use it if you need to call libraries +compiled with the Unix compiler. +.sp +Also, you must provide function prototypes for all functions that +take variable numbers of arguments (including +.BR printf (3S)); +otherwise incorrect code will be generated for calls to those functions. +.sp +In addition, seriously incorrect code will result if you call a +function with too many arguments. +(Normally, extra arguments are harmlessly ignored.) +.sp +The +.B rtd +instruction is supported by the 68010 and 68020 processors, +but not by the 68000. +.in -.5i +.sp +These +.B \-m +options are defined in the Vax machine description: +.sp +.B \-munix +.in +.5i +Do not output certain jump instructions +.RB ( aobleq +and so on) that the Unix assembler for the Vax +cannot handle across long ranges. +.in -.5i +.sp +.B \-mgnu +.in +.5i +Do output those jump instructions, on the assumption that you +will assemble with the GNU assembler. +.in -.5i +.sp +.B \-mg +.in +.5i +Output code for g-format floating point numbers instead of d-format. +.in -.5i +.sp +These +.B \-m +switches are supported on the Sparc: +.sp +.B \-mfpu +.in +.5i +Generate output containing floating point instructions. +This is the default if you use the unmodified sources. +.in -.5i +.sp +.B \-msoft-float +.in +.5i +Generate output containing library calls for floating point. +.in -.5i +.sp +.B \-mno-epilogue +.in +.5i +Generate separate return instructions for +.B return +statements. +This has both advantages and disadvantages; I don't recall what they are. +.in -.5i +.sp +These +.B \-m +options are defined in the Convex machine description: +.sp +.B \-mc1 +.in +.5i +Generate output for a C1. +This is the default when the compiler is configured for a C1. +.in -.5i +.sp +.B \-mc2 +.in +.5i +Generate output for a C2. +This is the default when the compiler is configured for a C2. +.in -.5i +.sp +.B \-margcount +.in +.5i +Generate code which puts an argument count in the word preceding each +argument list. +Some nonportable Convex and Vax programs need this word. +(Debuggers don't; this info is in the symbol table.) +.in -.5i +.sp +.B \-mnoargcount +.in +.5i +Omit the argument count word. +This is the default if you use the unmodified sources. +.in -.5i +.TP +.BI \-f flag +Specify machine-independent flags. +Most flags have both positive and negative forms; the negative form of +.B \-ffoo +would be +.BR \-fno-foo . +In the table below, only one of the forms is listed--the one which +is not the default. +You can figure out the other form by either removing +.B no- +or adding it. +.TP +.B \-fpcc-struct-return +Use the same convention for returning +.B struct +and +.B union +values that is used by the usual C compiler on your system. +This convention is less efficient for small structures, and on many +machines it fails to be reentrant; but it has the advantage of allowing +intercallability between GCC-compiled code and PCC-compiled code. +.TP +.B \-ffloat-store +Do not store floating-point variables in registers. +This prevents undesirable excess precision on machines such as the +68000 where the floating registers (of the 68881) keep more +precision than a +.B double +is supposed to have. +.sp +For most programs, the excess precision does only good, but a few +programs rely on the precise definition of IEEE floating point. +Use +.B \-ffloat-store +for such programs. +.TP +.B \-fno-asm +Do not recognize +.BR asm , +.B inline +or +.B typeof +as a keyword. +These words may then be used as identifiers. +You can use +.BR __asm__ , +.B __inline__ +and +.B __typeof__ +instead. +.TP +.B \-fno-defer-pop +Always pop the arguments to each function call as soon as that +function returns. +Normally the compiler (when optimizing) lets arguments accumulate +on the stack for several function calls and pops them all at once. +.TP +.B \-fstrength-reduce +Perform the optimizations of loop strength reduction and +elimination of iteration variables. +.TP +.B \-fcombine-regs +Allow the combine pass to combine an instruction that copies one +register into another. +This might or might not produce better code when used in addition to +.BR \-O . +I am interested in hearing about the difference this makes. +.TP +.B \-fforce-mem +Force memory operands to be copied into registers before doing +arithmetic on them. +This may produce better code by making all memory references +potential common subexpressions. +When they are not common subexpressions, instruction combination should +eliminate the separate register-load. +I am interested in hearing about the difference this makes. +.TP +.B \-fforce-addr +Force memory address constants to be copied into registers before +doing arithmetic on them. +This may produce better code just as +.B \-fforce-mem +may. +I am interested in hearing about the difference this makes. +.TP +.B \-fomit-frame-pointer +Don't keep the frame pointer in a register for functions that +don't need one. +This avoids the instructions to save, set up and restore frame pointers; +it also makes an extra register available in many functions. +.B "It also makes debugging impossible." +.sp +On some machines, such as the Vax, this flag has no effect, because +the standard calling sequence automatically handles the frame pointer +and nothing is saved by pretending it doesn't exist. +The machine-description macro +.B FRAME_POINTER_REQUIRED +controls whether a target machine supports this flag. +.TP +.B \-finline-functions +Integrate all simple functions into their callers. +The compiler heuristically decides which functions are simple +enough to be worth integrating in this way. +.sp +If all calls to a given function are integrated, and the function is declared +.BR static , +then the function is normally not output as assembler code in its own right. +.TP +.B \-fcaller-saves +Enable values to be allocated in registers that will be clobbered by +function calls, by emitting extra instructions to save and restore the +registers around such calls. +Such allocation is done only when it seems to result in better code than +would otherwise be produced. +.sp +This option is enabled by default on certain machines, usually those +which have no call-preserved registers to use instead. +.TP +.B \-fkeep-inline-functions +Even if all calls to a given function are integrated, and the function is +declared +.BR static , +nevertheless output a separate run-time callable version of the function. +.TP +.B \-fwritable-strings +Store string constants in the writable data segment and don't uniquize them. +This is for compatibility with old programs which assume they can write +into string constants. +Writing into string constants is a very bad idea; +constants should be constant. +.TP +.B \-fcond-mismatch +Allow conditional expressions with mismatched types in the second and +third arguments. +The value of such an expression is void. +.TP +.B \-fno-function-cse +Do not put function addresses in registers; make each instruction that +calls a constant function contain the function's address explicitly. +.sp +This option results in less efficient code, but some strange hacks that +alter the assembler output may be confused by the optimizations performed +when this option is not used. +.TP +.B \-fvolatile +Consider all memory references through pointers to be volatile. +.TP +.B \-fshared-data +Requests that the data and +.RB non- const +variables of this compilation be shared data rather than private data. +The distinction makes sense only on certain operating systems, where +shared data is shared between processes running the same program, while +private data exists in one copy per process. +.TP +.B \-funsigned-char +Let the type +.B char +be the unsigned, like +.BR "unsigned char" . +.sp +Each kind of machine has a default for what +.B char +should be. +It is either like +.B "unsigned char" +by default or like +.B "signed char" +by default. +(Actually, at present, the default is always signed.) +.sp +The type +.B char +is always a distinct type from either +.B "signed char" +or +.BR "unsigned char" , +even though its behavior is always just like one of those two. +.sp +Note that this is equivalent to +.BR \-fno-signed-char , +which is the negative form of +.BR \-fsigned-char . +.TP +.B \-fsigned-char +Let the type +.B char +be signed, like +.BR "signed char" . +.sp +Note that this is equivalent to +.BR \-fno-unsigned-char , +which is the negative form of +.BR \-funsigned-char . +.TP +.B \-fdelayed-branch +If supported for the target machine, attempt to reorder instructions to +exploit instruction slots available after delayed branch instructions. +.TP +.BI \-ffixed- reg +Treat the register named +.I reg +as a fixed register; generated code should never refer to it +(except perhaps as a stack pointer, frame pointer or in some other fixed role). +.sp +.I reg +must be the name of a register. +The register names accepted are machine-specific and are defined in the +.B REGISTER_NAMES +macro in the machine description macro file. +.sp +This flag does not have a negative form, because it specifies a +three-way choice. +.TP +.BI \-fcall-used- reg +Treat the register named +.I reg +as an allocatable register that is clobbered by function calls. +It may be allocated for temporaries or variables that do not live +across a call. +Functions compiled this way will not save and restore the register REG. +.sp +Use of this flag for a register that has a fixed pervasive role +in the machine's execution model, such as the stack pointer or +frame pointer, will produce disastrous results. +.sp +This flag does not have a negative form, because it specifies a +three-way choice. +.TP +.BI \-fcall-saved- reg +Treat the register named +.I reg +as an allocatable register saved by functions. +It may be allocated even for temporaries or variables that live across a call. +Functions compiled this way will save and restore the register +.I reg +if they use it. +.sp +Use of this flag for a register that has a fixed pervasive role +in the machine's execution model, such as the stack pointer or +frame pointer, will produce disastrous results. +.sp +A different sort of disaster will result from the use of this +flag for a register in which function values may be returned. +.sp +This flag does not have a negative form, because it specifies a +three-way choice. +.TP +.BI \-d letters +Says to make debugging dumps at times specified by +.IR letters . +Here are the possible letters: +.sp +.B r +.in +.5i +Dump after RTL generation. +.in -.5i +.B j +.in +.5i +Dump after first jump optimization. +.in -.5i +.B J +.in +.5i +Dump after last jump optimization. +.in -.5i +.B s +.in +.5i +Dump after CSE (including the jump optimization that sometimes follows CSE). +.in -.5i +.B L +.in +.5i +Dump after loop optimization. +.in -.5i +.B f +.in +.5i +Dump after flow analysis. +.in -.5i +.B c +.in +.5i +Dump after instruction combination. +.in -.5i +.B l +.in +.5i +Dump after local register allocation. +.in -.5i +.B g +.in +.5i +Dump after global register allocation. +.in -.5i +.B d +.in +.5i +Dump after delayed branch scheduling. +.in -.5i +.B m +.in +.5i +Print statistics on memory usage, at the end of the run. +.in -.5i +.TP +.B \-pedantic +Issue all the warnings demanded by strict ANSI standard C; reject +all programs that use forbidden extensions. +.sp +Valid ANSI standard C programs should compile properly with or without +this option (though a rare few will require +.BR \-ansi ). +However, without this option, certain GNU extensions and traditional C +features are supported as well. +With this option, they are rejected. +There is no reason to use this option; it exists only to satisfy pedants. +.sp +.B \-pedantic +does not cause warning messages for use of the alternate keywords whose +names begin and end with +.BR __ . +.TP +.B \-static +On Suns running version 4, this prevents linking with the shared +libraries. +.RB ( \-g +has the same effect.) +.P +These options control the C preprocessor, which is run on each C source +file before actual compilation. If you use the `-E' option, nothing +is done except C preprocessing. Some of these options make sense only +together with `-E' because they request preprocessor output that is +not suitable for actual compilation. +.TP +.B \-C +Tell the preprocessor not to discard comments. +Used with the +.B \-E +option. +.TP +.BI \-I dir +Search directory +.I dir +for include files. +.TP +.B \-I- +Any directories specified with +.B \-I +options before the +.B \-I- +option are searched only for the case of +.B #include +\fB"\fIfile\fB"\fR; they are not searched for +.BR "#include <\fIfile\fB>" . +.sp +If additional directories are specified with +.B \-I +options after the +.BR \-I- , +these directories are searched for all +.B #include +directives. +(Ordinarily +.I all +.B \-I +directories are used this way.) +.sp +In addition, the +.B \-I- +option inhibits the use of the current directory as the first +search directory for +.B #include +\fB"\fIfile\fB"\fR. +Therefore, the current directory is searched only if it is requested +explicitly with +.BR \-I. . +Specifying both +.B \-I- +and +.B -I. +allows you to control precisely which directories are searched before +the current one and which are searched after. +.TP +.B \-nostdinc +Do not search the standard system directories for header files. +Only the directories you have specified with +.B \-I +options (and the current directory, if appropriate) are searched. +.sp +Between +.B \-nostdinc +and +.BR \-I- , +you can eliminate all directories from the search path +except those you specify. +.TP +.B \-M +Tell the preprocessor to output a rule suitable for +.BI make (1) +describing the dependencies of each source file. +For each source file, the preprocessor outputs one +.BR make -rule +whose target is the object file name for that source file and whose +dependencies are all the files +.BR #include d +in it. +This rule may be a single line or may be continued with +.B \\\\-newline +if it is long. +.sp +.B \-M +implies +.BR \-E . +.TP +.B \-MM +Like +.B \-M +but the output mentions only the user-header files included with +.B #include +\fB"\fIfile\fB"\fR. +System header files included with +.B "#include <\fIfile\fB>" +are omitted. +.sp +.B \-MM +implies +.BR \-E . +.TP +.BI \-D macro +Define macro +.I macro +with the empty string as its definition. +.TP +.BI \-D macro\fR=\fIdefn +Define macro +.I macro +as +.IR defn . +.TP +.BI \-U macro +Undefine macro +.IR macro . +.TP +.B \-trigraphs +Support ANSI C trigraphs. +You don't want to know about this brain-damage. +The +.B \-ansi +option also has this effect. +.SH FILES +.ta \w'LIBDIR/gcc-include 'u +file.c C source file +.br +file.s assembly language file +.br +file.o object file +.br +a.out link edited output +.br +/tmp/cc\(** temporary files +.br +\fILIBDIR\fR/gcc-cpp preprocessor +.br +\fILIBDIR\fR/gcc-cc1 compiler +.br +\fILIBDIR\fR/gcc-gnulib library needed by GCC on some machines +.br +/lib/crt[01n].o start-up routine +.br +/lib/libc.a standard C library, see +.IR intro (3) +.br +/usr/include standard directory for +.B #include +files +.br +\fILIBDIR\fR/gcc-include standard gcc directory for +.B #include +files +.sp +.I LIBDIR +is usually +.BR /usr/local/lib . +.SH "SEE ALSO" +as(1), ld(1), adb(1), dbx(1), sdb(1). +.SH BUGS +Bugs should be reported to +.BR bug-gcc@prep.ai.mit.edu . +Bugs tend actually to be fixed if they can be isolated, so it is in your +interest to report them in such a way that they can be easily reproduced. +.SH COPYING +Copyright (c) 1988 Free Software Foundation, Inc. +.P +Permission is granted to make and distribute verbatim copies of +this manual provided the copyright notice and this permission notice +are preserved on all copies. +.P +Permission is granted to copy and distribute modified versions of this +manual under the conditions for verbatim copying, provided that the +entire resulting derived work is distributed under the terms of a +permission notice identical to this one. +.P +Permission is granted to copy and distribute translations of this +manual into another language, under the above conditions for modified +versions, except that this permission notice may be included in +translations approved by the Free Software Foundation instead of in +the original English. +.SH AUTHORS +See the GNU CC Manual for the contributors to GNU CC. |
