Commit 1bc6d43c by David Malcolm Committed by David Malcolm

Add a class hierarchy diagram to gimple.texi

2014-04-28  David Malcolm  <dmalcolm@redhat.com>

	* doc/gimple.texi: Replace the description of the now-defunct
	union gimple_statement_d with a diagram showing the
	gimple_statement_base class hierarchy and its relationships to
	the GSS_ and GIMPLE_ enums.

From-SVN: r209879
parent 97e1ad78
2014-04-28 David Malcolm <dmalcolm@redhat.com>
* doc/gimple.texi: Replace the description of the now-defunct
union gimple_statement_d with a diagram showing the
gimple_statement_base class hierarchy and its relationships to
the GSS_ and GIMPLE_ enums.
2014-04-28 James Greenhalgh <james.greenhalgh@arm.com> 2014-04-28 James Greenhalgh <james.greenhalgh@arm.com>
* config/aarch64/aarch64-protos.h (aarch64_modes_tieable_p): New. * config/aarch64/aarch64-protos.h (aarch64_modes_tieable_p): New.
......
...@@ -70,6 +70,7 @@ with the flag @option{-fdump-tree-gimple}. ...@@ -70,6 +70,7 @@ with the flag @option{-fdump-tree-gimple}.
@menu @menu
* Tuple representation:: * Tuple representation::
* Class hierarchy of GIMPLE statements::
* GIMPLE instruction set:: * GIMPLE instruction set::
* GIMPLE Exception Handling:: * GIMPLE Exception Handling::
* Temporaries:: * Temporaries::
...@@ -287,35 +288,135 @@ reduce memory utilization further by removing these sets). ...@@ -287,35 +288,135 @@ reduce memory utilization further by removing these sets).
@end itemize @end itemize
All the other tuples are defined in terms of these three basic All the other tuples are defined in terms of these three basic
ones. Each tuple will add some fields. The main gimple type ones. Each tuple will add some fields.
is defined to be the union of all these structures (@code{GTY} markers
elided for clarity):
@node Class hierarchy of GIMPLE statements
@section Class hierarchy of GIMPLE statements
@cindex GIMPLE class hierarchy
The following diagram shows the C++ inheritance hierarchy of statement
kinds, along with their relationships to @code{GSS_} values (layouts) and
@code{GIMPLE_} values (codes):
@smallexample @smallexample
union gimple_statement_d gimple_statement_base
@{ | layout: GSS_BASE
struct gimple_statement_base gsbase; | used for 4 codes: GIMPLE_ERROR_MARK
struct gimple_statement_with_ops gsops; | GIMPLE_NOP
struct gimple_statement_with_memory_ops gsmem; | GIMPLE_OMP_SECTIONS_SWITCH
struct gimple_statement_omp omp; | GIMPLE_PREDICT
struct gimple_statement_bind gimple_bind; |
struct gimple_statement_catch gimple_catch; + gimple_statement_with_ops_base
struct gimple_statement_eh_filter gimple_eh_filter; | | (no GSS layout)
struct gimple_statement_phi gimple_phi; | |
struct gimple_statement_resx gimple_resx; | + gimple_statement_with_ops
struct gimple_statement_try gimple_try; | | layout: GSS_WITH_OPS
struct gimple_statement_wce gimple_wce; | | Used for 5 codes: GIMPLE_COND
struct gimple_statement_asm gimple_asm; | | GIMPLE_DEBUG
struct gimple_statement_omp_critical gimple_omp_critical; | | GIMPLE_GOTO
struct gimple_statement_omp_for gimple_omp_for; | | GIMPLE_LABEL
struct gimple_statement_omp_parallel gimple_omp_parallel; | | GIMPLE_SWITCH
struct gimple_statement_omp_task gimple_omp_task; | |
struct gimple_statement_omp_sections gimple_omp_sections; | + gimple_statement_with_memory_ops_base
struct gimple_statement_omp_single gimple_omp_single; | | layout: GSS_WITH_MEM_OPS_BASE
struct gimple_statement_omp_continue gimple_omp_continue; | |
struct gimple_statement_omp_atomic_load gimple_omp_atomic_load; | + gimple_statement_with_memory_ops
struct gimple_statement_omp_atomic_store gimple_omp_atomic_store; | | layout: GSS_WITH_MEM_OPS.
@}; | | used for codes GIMPLE_ASSIGN and GIMPLE_RETURN.
| |
| + gimple_statement_call
| | layout: GSS_CALL, code: GIMPLE_CALL
| |
| + gimple_statement_asm
| | layout: GSS_ASM, code: GIMPLE_ASM
| |
| + gimple_statement_transaction
| layout: GSS_TRANSACTION, code: GIMPLE_TRANSACTION
|
+ gimple_statement_omp
| | layout: GSS_OMP. Used for code GIMPLE_OMP_SECTION
| |
| + gimple_statement_omp_critical
| | layout: GSS_OMP_CRITICAL, code: GIMPLE_OMP_CRITICAL
| |
| + gimple_statement_omp_for
| | layout: GSS_OMP_FOR, code: GIMPLE_OMP_FOR
| |
| + gimple_statement_omp_parallel_layout
| | | layout: GSS_OMP_PARALLEL_LAYOUT
| | |
| | + gimple_statement_omp_taskreg
| | | |
| | | + gimple_statement_omp_parallel
| | | | code: GIMPLE_OMP_PARALLEL
| | | |
| | | + gimple_statement_omp_task
| | | code: GIMPLE_OMP_TASK
| | |
| | + gimple_statement_omp_target
| | code: GIMPLE_OMP_TARGET
| |
| + gimple_statement_omp_sections
| | layout: GSS_OMP_SECTIONS, code: GIMPLE_OMP_SECTIONS
| |
| + gimple_statement_omp_single_layout
| | layout: GSS_OMP_SINGLE_LAYOUT
| |
| + gimple_statement_omp_single
| | code: GIMPLE_OMP_SINGLE
| |
| + gimple_statement_omp_teams
| code: GIMPLE_OMP_TEAMS
|
+ gimple_statement_bind
| layout: GSS_BIND, code: GIMPLE_BIND
|
+ gimple_statement_catch
| layout: GSS_CATCH, code: GIMPLE_CATCH
|
+ gimple_statement_eh_filter
| layout: GSS_EH_FILTER, code: GIMPLE_EH_FILTER
|
+ gimple_statement_eh_else
| layout: GSS_EH_ELSE, code: GIMPLE_EH_ELSE
|
+ gimple_statement_eh_mnt
| layout: GSS_EH_MNT, code: GIMPLE_EH_MUST_NOT_THROW
|
+ gimple_statement_phi
| layout: GSS_PHI, code: GIMPLE_PHI
|
+ gimple_statement_eh_ctrl
| | layout: GSS_EH_CTRL
| |
| + gimple_statement_resx
| | code: GIMPLE_RESX
| |
| + gimple_statement_eh_dispatch
| code: GIMPLE_EH_DISPATCH
|
+ gimple_statement_try
| layout: GSS_TRY, code: GIMPLE_TRY
|
+ gimple_statement_wce
| layout: GSS_WCE, code: GIMPLE_WITH_CLEANUP_EXPR
|
+ gimple_statement_omp_continue
| layout: GSS_OMP_CONTINUE, code: GIMPLE_OMP_CONTINUE
|
+ gimple_statement_omp_atomic_load
| layout: GSS_OMP_ATOMIC_LOAD, code: GIMPLE_OMP_ATOMIC_LOAD
|
+ gimple_statement_omp_atomic_store_layout
| layout: GSS_OMP_ATOMIC_STORE_LAYOUT,
| code: GIMPLE_OMP_ATOMIC_STORE
|
+ gimple_statement_omp_atomic_store
| code: GIMPLE_OMP_ATOMIC_STORE
|
+ gimple_statement_omp_return
code: GIMPLE_OMP_RETURN
@end smallexample @end smallexample
......
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