diff options
author | Mark Mitchell <mark@codesourcery.com> | 2001-06-08 21:54:11 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 2001-06-08 21:54:11 +0000 |
commit | e68e310815a8ef2fa1e9ac966aeabbe0fd9c81cf (patch) | |
tree | 1200ebcccf1a834fa2af1fcfc027b24023f08174 /gcc/basic-block.h | |
parent | 1acc845ecb30195392ff0007ad932a6b746baac5 (diff) | |
download | gcc-e68e310815a8ef2fa1e9ac966aeabbe0fd9c81cf.zip gcc-e68e310815a8ef2fa1e9ac966aeabbe0fd9c81cf.tar.gz gcc-e68e310815a8ef2fa1e9ac966aeabbe0fd9c81cf.tar.bz2 |
basic-block.h: Improve comments.
* basic-block.h: Improve comments.
* except.c (expand_eh_region_end_allowed): Remove redundant call
to do_pending_stack_adjust.
* flow.c (life_analysis): Fix typo in comment.
(calculate_global_regs_live): Add documentation.
(mark_set_1): Likewise.
(debug_regset): Likewise.
* doc/rtl.texi (cond_exec): Document it.
From-SVN: r43049
Diffstat (limited to 'gcc/basic-block.h')
-rw-r--r-- | gcc/basic-block.h | 32 |
1 files changed, 27 insertions, 5 deletions
diff --git a/gcc/basic-block.h b/gcc/basic-block.h index 8ffcbce..c5e30d9 100644 --- a/gcc/basic-block.h +++ b/gcc/basic-block.h @@ -1,5 +1,5 @@ /* Define control and data flow tables, and regsets. - Copyright (C) 1987, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1987, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of GNU CC. @@ -141,7 +141,20 @@ typedef struct edge_def { #define EDGE_COMPLEX (EDGE_ABNORMAL | EDGE_ABNORMAL_CALL | EDGE_EH) -/* Basic blocks need not start with a label nor end with a jump insn. +/* A basic block is a sequence of instructions with only entry and + only one exit. If any one of the instructions are executed, they + will all be executed, and in sequence from first to last. + + There may be COND_EXEC instructions in the basic block. The + COND_EXEC *instructions* will be executed -- but if the condition + is false the conditionally executed *expressions* will of course + not be executed. We don't consider the conditionally executed + expression (which might have side-effects) to be in a separate + basic block because the program counter will always be at the same + location after the COND_EXEC instruction, regardless of whether the + condition is true or not. + + Basic blocks need not start with a label nor end with a jump insn. For example, a previous basic block may just "conditionally fall" into the succeeding basic block, and the last basic block need not end with a jump insn. Block 0 is a descendant of the entry block. @@ -161,12 +174,21 @@ typedef struct basic_block_def { /* The edges into and out of the block. */ edge pred, succ; - /* Liveness info. Note that in SSA form, global_live_at_start does - not reflect the use of regs in phi functions, since the liveness - of these regs may depend on which edge was taken into the block. */ + /* Liveness info. */ + + /* The registers that are modified within this in block. */ regset local_set; + /* The registers that are conditionally modified within this block. + In other words, registers that are set only as part of a + COND_EXEC. */ regset cond_local_set; + /* The registers that are live on entry to this block. + + Note that in SSA form, global_live_at_start does not reflect the + use of regs in phi functions, since the liveness of these regs + may depend on which edge was taken into the block. */ regset global_live_at_start; + /* The registers that are live on exit from this block. */ regset global_live_at_end; /* Auxiliary info specific to a pass. */ |