diff options
author | Ian Lance Taylor <ian@gcc.gnu.org> | 2006-01-17 07:04:20 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2006-01-17 07:04:20 +0000 |
commit | 474eccc60315960b14fb0af4b7da9c6795ac4f0e (patch) | |
tree | 11320048997fd124915d16755d4d699f94cce278 /gcc/doc | |
parent | 2fbdae3614e1e34d29ca5ce2af89739e39e305bd (diff) | |
download | gcc-474eccc60315960b14fb0af4b7da9c6795ac4f0e.zip gcc-474eccc60315960b14fb0af4b7da9c6795ac4f0e.tar.gz gcc-474eccc60315960b14fb0af4b7da9c6795ac4f0e.tar.bz2 |
common.opt (ftoplevel-reorder): New option.
./: * common.opt (ftoplevel-reorder): New option.
* cgraph.c (cgraph_asm_nodes): New global variable.
(cgraph_asm_last_node): New static variable.
(cgraph_order): New global variable.
(cgraph_create_node): Set new order field.
(cgraph_varpool_node): Likewise.
(decide_is_variable_needed): Return true if not
flag_toplevel_reorder.
(cgraph_add_asm_node): New function.
* cgraph.h (struct cgraph_node): Add order field.
(struct cgraph_varpool_node): Add order field.
(struct cgraph_asm_node): Define.
(cgraph_asm_nodes, cgraph_order): Declare.
(cgraph_add_asm_node): Declare.
* cgraphunit.c (cgraph_varpool_assemble_decl): New static
function.
(cgraph_varpool_assemble_pending_decls): Call it.
(cgraph_output_pending_asms): New static function.
(cgraph_finalize_compilation_unit): Call it.
(struct cgraph_order_sort): Define.
(cgraph_output_in_order): New static function.
(cgraph_optimize): Call cgraph_output_pending_asms. Add code for
!flag_toplevel_reorder case.
* c-parser.c: Include "cgraph.h".
(c_parser_asm_definition): Call cgraph_add_asm_node rather than
assemble_asm.
* Makefile.in (CRTSTUFF_CFLAGS): Use -fno-toplevel-reorder rather
than -fno-unit-at-a-time.
* doc/invoke.texi (Option Summary): Mention
-fno-toplevel-reorder.
(Optimize Options): Document -fno-toplevel-reorder. Mention it in
-funit-at-a-time documentation.
cp/:
* parser.c: Include "cgraph.h".
(cp_parser_asm_definition): Call cgraph_add_asm_node rather than
assemble_asm.
From-SVN: r109811
Diffstat (limited to 'gcc/doc')
-rw-r--r-- | gcc/doc/invoke.texi | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 97914537..c1c87f2 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -319,7 +319,7 @@ Objective-C and Objective-C++ Dialects}. -fno-function-cse -fno-guess-branch-probability @gol -fno-inline -fno-math-errno -fno-peephole -fno-peephole2 @gol -funsafe-math-optimizations -funsafe-loop-optimizations -ffinite-math-only @gol --fno-trapping-math -fno-zero-initialized-in-bss @gol +-fno-toplevel-reorder -fno-trapping-math -fno-zero-initialized-in-bss @gol -fomit-frame-pointer -foptimize-register-move @gol -foptimize-sibling-calls -fprefetch-loop-arrays @gol -fprofile-generate -fprofile-use @gol @@ -5336,14 +5336,16 @@ Enabled at levels @option{-O2}, @option{-O3}. Parse the whole compilation unit before starting to produce code. This allows some extra optimizations to take place but consumes more memory (in general). There are some compatibility issues -with @emph{unit-at-at-time} mode: +with @emph{unit-at-a-time} mode: @itemize @bullet @item enabling @emph{unit-at-a-time} mode may change the order in which functions, variables, and top-level @code{asm} statements are emitted, and will likely break code relying on some particular ordering. The majority of such top-level @code{asm} statements, -though, can be replaced by @code{section} attributes. +though, can be replaced by @code{section} attributes. The +@option{fno-toplevel-reorder} option may be used to keep the ordering +used in the input file, at the cost of some optimizations. @item @emph{unit-at-a-time} mode removes unreferenced static variables @@ -5365,6 +5367,14 @@ but this scheme may not be supported by future releases of GCC@. Enabled at levels @option{-O2}, @option{-O3}. +@item -fno-toplevel-reorder +Do not reorder top-level functions, variables, and @code{asm} +statements. Output them in the same order that they appear in the +input file. When this option is used, unreferenced static variables +will not be removed. This option is intended to support existing code +which relies on a particular ordering. For new code, it is better to +use attributes. + @item -fweb @opindex fweb Constructs webs as commonly used for register allocation purposes and assign |