Commit 332459cd by Sandra Loosemore Committed by Sandra Loosemore

invoke.texi (Code Gen Options): Expand discussion of -fno-common.

2009-03-18  Sandra Loosemore  <sandra@codesourcery.com>

	gcc/
	* doc/invoke.texi (Code Gen Options): Expand discussion of
	-fno-common.

From-SVN: r144940
parent d130d647
2009-03-18 Sandra Loosemore <sandra@codesourcery.com>
* doc/invoke.texi (Code Gen Options): Expand discussion of
-fno-common.
2009-03-18 Jakub Jelinek <jakub@redhat.com> 2009-03-18 Jakub Jelinek <jakub@redhat.com>
* dse.c (struct group_info): Reorder fields for 64-bit hosts. * dse.c (struct group_info): Reorder fields for 64-bit hosts.
......
...@@ -15709,12 +15709,25 @@ Use it to conform to a non-default application binary interface. ...@@ -15709,12 +15709,25 @@ Use it to conform to a non-default application binary interface.
@item -fno-common @item -fno-common
@opindex fno-common @opindex fno-common
In C, allocate even uninitialized global variables in the data section of the In C code, controls the placement of uninitialized global variables.
object file, rather than generating them as common blocks. This has the Unix C compilers have traditionally permitted multiple definitions of
effect that if the same variable is declared (without @code{extern}) in such variables in different compilation units by placing the variables
two different compilations, you will get an error when you link them. in a common block.
The only reason this might be useful is if you wish to verify that the This is the behavior specified by @option{-fcommon}, and is the default
program will work on other systems which always work this way. for GCC on most targets.
On the other hand, this behavior is not required by ISO C, and on some
targets may carry a speed or code size penalty on variable references.
The @option{-fno-common} option specifies that the compiler should place
uninitialized global variables in the data section of the object file,
rather than generating them as common blocks.
This has the effect that if the same variable is declared
(without @code{extern}) in two different compilations,
you will get a multiple-definition error when you link them.
In this case, you must compile with @option{-fcommon} instead.
Compiling with @option{-fno-common} is useful on targets for which
it provides better performance, or if you wish to verify that the
program will work on other systems which always treat uninitialized
variable declarations this way.
@item -fno-ident @item -fno-ident
@opindex fno-ident @opindex fno-ident
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment