Mercurial > hg > CbC > CbC_gcc
diff gcc/doc/passes.texi @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children | 1830386684a0 |
line wrap: on
line diff
--- a/gcc/doc/passes.texi Fri Oct 27 22:46:09 2017 +0900 +++ b/gcc/doc/passes.texi Thu Oct 25 07:37:49 2018 +0900 @@ -1,6 +1,6 @@ @c markers: BUG TODO -@c Copyright (C) 1988-2017 Free Software Foundation, Inc. +@c Copyright (C) 1988-2018 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. @@ -18,7 +18,6 @@ @menu * Parsing pass:: The language front end turns text into bits. -* Cilk Plus Transformation:: Transform Cilk Plus Code to equivalent C/C++. * Gimplification pass:: The bits are turned into something we can optimize. * Pass manager:: Sequencing the optimization passes. * Tree SSA passes:: Optimizations on a high-level representation. @@ -104,68 +103,6 @@ The middle-end will, at its option, emit the function and data definitions immediately or queue them for later processing. -@node Cilk Plus Transformation -@section Cilk Plus Transformation -@cindex CILK_PLUS - -If Cilk Plus generation (flag @option{-fcilkplus}) is enabled, all the Cilk -Plus code is transformed into equivalent C and C++ functions. Majority of this -transformation occurs toward the end of the parsing and right before the -gimplification pass. - -These are the major components to the Cilk Plus language extension: -@itemize @bullet -@item Array Notations: -During parsing phase, all the array notation specific information is stored in -@code{ARRAY_NOTATION_REF} tree using the function -@code{c_parser_array_notation}. During the end of parsing, we check the entire -function to see if there are any array notation specific code (using the -function @code{contains_array_notation_expr}). If this function returns -true, then we expand them using either @code{expand_array_notation_exprs} or -@code{build_array_notation_expr}. For the cases where array notations are -inside conditions, they are transformed using the function -@code{fix_conditional_array_notations}. The C language-specific routines are -located in @file{c/c-array-notation.c} and the equivalent C++ routines are in -the file @file{cp/cp-array-notation.c}. Common routines such as functions to -initialize built-in functions are stored in @file{array-notation-common.c}. - -@item Cilk keywords: -@itemize @bullet -@item @code{_Cilk_spawn}: -The @code{_Cilk_spawn} keyword is parsed and the function it contains is marked -as a spawning function. The spawning function is called the spawner. At -the end of the parsing phase, appropriate built-in functions are -added to the spawner that are defined in the Cilk runtime. The appropriate -locations of these functions, and the internal structures are detailed in -@code{cilk_init_builtins} in the file @file{cilk-common.c}. The pointers to -Cilk functions and fields of internal structures are described -in @file{cilk.h}. The built-in functions are described in -@file{cilk-builtins.def}. - -During gimplification, a new "spawn-helper" function is created. -The spawned function is replaced with a spawn helper function in the spawner. -The spawned function-call is moved into the spawn helper. The main function -that does these transformations is @code{gimplify_cilk_spawn} in -@file{c-family/cilk.c}. In the spawn-helper, the gimplification function -@code{gimplify_call_expr}, inserts a function call @code{__cilkrts_detach}. -This function is expanded by @code{builtin_expand_cilk_detach} located in -@file{c-family/cilk.c}. - -@item @code{_Cilk_sync}: -@code{_Cilk_sync} is parsed like a keyword. During gimplification, -the function @code{gimplify_cilk_sync} in @file{c-family/cilk.c}, will replace -this keyword with a set of functions that are stored in the Cilk runtime. -One of the internal functions inserted during gimplification, -@code{__cilkrts_pop_frame} must be expanded by the compiler and is -done by @code{builtin_expand_cilk_pop_frame} in @file{cilk-common.c}. - -@end itemize -@end itemize - -Documentation about Cilk Plus and language specification is provided under the -"Learn" section in @w{@uref{https://www.cilkplus.org}}. It is worth mentioning -that the current implementation follows ABI 1.1. - @node Gimplification pass @section Gimplification pass @@ -981,11 +918,10 @@ This is run after final because it must output the stack slot offsets for pseudo registers that did not get hard registers. Source files -are @file{dbxout.c} for DBX symbol table format, @file{sdbout.c} for -SDB symbol table format, @file{dwarfout.c} for DWARF symbol table -format, files @file{dwarf2out.c} and @file{dwarf2asm.c} for DWARF2 -symbol table format, and @file{vmsdbgout.c} for VMS debug symbol table -format. +are @file{dbxout.c} for DBX symbol table format, @file{dwarfout.c} for +DWARF symbol table format, files @file{dwarf2out.c} and @file{dwarf2asm.c} +for DWARF2 symbol table format, and @file{vmsdbgout.c} for VMS debug +symbol table format. @end itemize