Open64 (mfef90, whirl2f, and IR tools)  TAG: version-openad; SVN changeset: 916
p_ctl_flow.c File Reference
#include "defines.h"
#include "host.m"
#include "host.h"
#include "target.m"
#include "target.h"
#include "globals.m"
#include "tokens.m"
#include "sytb.m"
#include "p_globals.m"
#include "debug.m"
#include "globals.h"
#include "tokens.h"
#include "sytb.h"
#include "p_globals.h"
Include dependency graph for p_ctl_flow.c:

Go to the source code of this file.

Functions

static boolean change_subscript (opnd_type *)
static boolean loop_top_is_perfectly_nested (char *)
static int match_blk (blk_cntxt_type, boolean)
static boolean parse_label_list (int)
static void process_blockable_dir (void)
static void process_interchange_dir (void)
static void check_mp_dir_nesting (void)
static void gen_if_ir (int, int, int, int)
void parse_allocate_stmt (void)
void parse_assign_stmt (void)
void parse_call_stmt (void)
void parse_case_stmt (void)
void parse_continue_stmt (void)
void parse_cycle_stmt (void)
void parse_deallocate_stmt (void)
void parse_do_stmt (void)
void parse_else_stmt (void)
void parse_exit_stmt (void)
void parse_forall (void)
void parse_goto_stmt (void)
void parse_if_stmt (void)
void parse_nullify_stmt (void)
void parse_return_stmt (void)
void parse_select_stmt (void)
void parse_stop_pause_stmt (void)
void parse_where_stmt (void)
int gen_loop_lbl_name (int blk_idx, lbl_pos_type lbl_pos)

Variables

static char USMID [] = "\n@(#)5.0_pl/sources/p_ctl_flow.c 5.11 10/12/99 10:54:10\n"
static int last_unlbld_loop_line = 0
static int last_unlbld_loop_num
boolean star_expected = FALSE

Function Documentation

static void gen_if_ir ( int  if_stmt_lbl_idx,
int  if_stmt_sh_idx,
int  save_if_stmt_start_line,
int  save_if_stmt_start_col 
) [static]
static int match_blk ( blk_cntxt_type  the_blk,
boolean  fnd_name 
) [static]

Definition at line 4963 of file p_ctl_flow.c.

References AT_NAME_LEN, AT_OBJ_NAME_LONG, BLK_NAME, blk_stk, blk_stk_idx, BLK_TYPE, CLEAR_TBL_NTRY, compare_names(), Func_Entry, Func_Exit, NULL, NULL_IDX, token, TOKEN_ID, TOKEN_LEN, and TRACE.

Referenced by parse_cycle_stmt(), parse_else_stmt(), and parse_exit_stmt().

Here is the call graph for this function:

void parse_case_stmt ( void  )

Definition at line 634 of file p_ctl_flow.c.

References After, AT_DEF_LINE, AT_DEFINED, AT_NAME_LEN, AT_OBJ_NAME_LONG, AT_REFERENCED, AT_Tbl_Idx, ATL_CASE_LABEL, ATL_DEF_STMT_IDX, Before, BLK_CASE_DEFAULT_LBL_COL_NUM, BLK_CASE_DEFAULT_LBL_FLD, BLK_CASE_DEFAULT_LBL_IDX, BLK_CASE_DEFAULT_LBL_LINE_NUM, BLK_DEF_LINE, BLK_ERR, BLK_FIRST_SH_IDX, BLK_FND_DEFAULT, BLK_LABEL, blk_match_err(), BLK_NAME, BLK_NUM_CASES, blk_stk_idx, BLK_TYPE, Br_Uncond_Opr, Case_Blk, Case_Opr, Case_Range_Opr, Case_Stmt, check_for_vestigial_task_blks(), CIF_Case_Default_Stmt, CIF_Case_Stmt, CIF_Construct_Name_Reference, cif_flags, cif_stmt_type_rec(), cif_usage_rec(), cmd_line_flags, CN_INTEGER_ONE_IDX, CN_INTEGER_ZERO_IDX, CN_Tbl_Idx, COLON, COMMA, compare_names(), Continue_Stmt, COPY_OPND, CURR_BLK, CURR_BLK_DEF_COLUMN, CURR_BLK_DEF_LINE, CURR_BLK_ERR, CURR_BLK_FIRST_SH_IDX, CURR_BLK_NAME, curr_stmt_category, curr_stmt_sh_idx, cmd_line_flags_entry::debug_lvl, Debug_Lvl_0, EOS, EOS_STR, Error, Executable_Stmt_Cat, EXIT, FALSE, Find_EOS, Find_Rparen, Func_Entry, Func_Exit, gen_internal_lbl(), gen_sh(), Goto_Stmt, IR_COL_NUM, IR_COL_NUM_L, IR_COL_NUM_R, IR_FLD_L, IR_FLD_R, IR_IDX_L, IR_IDX_R, IR_LINE_NUM, IR_LINE_NUM_L, IR_LINE_NUM_R, IR_OPND_L, IR_OPND_R, IR_OPR, IR_Tbl_Idx, IR_TYPE_IDX, LA_CH_COLUMN, LA_CH_LINE, LA_CH_VALUE, Label_Opr, LINK_TO_PARENT_BLK, LPAREN, matched_specific_token(), MATCHED_TOKEN_CLASS, MISC_RECS, NEXT_LA_CH, NO_Tbl_Idx, NTR_IR_TBL, NULL, NULL_IDX, null_opnd, OPND_FLD, parse_err_flush(), parse_expr(), parse_operand_insert, PRINTMSG(), PUSH_BLK_STK, Referenced, RPAREN, Select_Blk, SH_COL_NUM, SH_GLB_LINE, SH_IR_IDX, SH_LABELED, SH_PARENT_BLK_IDX, SH_PREV_IDX, statement_number, STMT_LEGAL_IN_BLK, stmt_start_col, stmt_start_line, strcpy, Tok_Class_Id, Tok_Class_Keyword, Tok_Kwd_Default, token, TOKEN_COLUMN, TOKEN_ID, TOKEN_LEN, TOKEN_LINE, TRACE, TRUE, TYPELESS_DEFAULT_TYPE, and XREF_RECS.

Here is the call graph for this function:

void parse_continue_stmt ( void  )

Definition at line 1004 of file p_ctl_flow.c.

References CURR_BLK_NO_EXEC, curr_stmt_category, EOS, EOS_STR, Executable_Stmt_Cat, Find_EOS, Func_Entry, Func_Exit, iss_blk_stk_err(), LA_CH_VALUE, NEXT_LA_CH, NULL, parse_err_flush(), and TRACE.

Here is the call graph for this function:

void parse_do_stmt ( void  )

Definition at line 1300 of file p_ctl_flow.c.

References AT_DCL_ERR, AT_DEFINED, AT_OBJ_CLASS, AT_REFERENCED, AT_SIGN, AT_Tbl_Idx, ATD_CLASS, ATD_FUNC_IDX, ATL_CLASS, ATL_DEBUG_CLASS, ATL_DEF_STMT_IDX, BLK_DO_TYPE, BLK_DO_VAR_COL_NUM, BLK_DO_VAR_FLD, BLK_DO_VAR_IDX, BLK_DO_VAR_LINE_NUM, BLK_DO_VAR_OPND, BLK_ERR, BLK_IS_PARALLEL_REGION, BLK_LABEL, BLK_LOOP_NUM, BLK_SKIP_LBL_IDX, blk_stk_idx, BLK_TOP_LBL_IDX, BLK_TYPE, build_fwd_ref_entry(), cdir_switches, Ch_Class_Digit, Ch_Class_Letter, check_mp_dir_nesting(), CIF_Do_Labeled_Infinite_Stmt, CIF_Do_Labeled_Iterative_Stmt, CIF_Do_Labeled_While_Stmt, CIF_Do_Loop_Label, CIF_Do_Unlabeled_Infinite_Stmt, CIF_Do_Unlabeled_Iterative_Stmt, CIF_Do_Unlabeled_While_Stmt, cif_flags, cif_stmt_type_rec(), cif_usage_rec(), cmd_line_flags, CN_INTEGER_ONE_IDX, CN_Tbl_Idx, COMMA, COPY_OPND, CURR_BLK_ERR, CURR_BLK_FIRST_SH_IDX, CURR_BLK_LABEL, CURR_BLK_NAME, CURR_BLK_NO_EXEC, curr_stmt_category, curr_stmt_sh_idx, Data_Obj, cmd_line_flags_entry::debug_lvl, Debug_Lvl_1, cdir_switch_entry::dir_nest_check_sh_idx, Do_Blk, Do_Infinite_Stmt, Do_Iterative_Stmt, cdir_switch_entry::do_omp_sh_idx, Do_Parallel_Blk, Do_Ref, Do_While_Stmt, cdir_switch_entry::doacross_sh_idx, Doall_Blk, cdir_switch_entry::doall_region, cdir_switch_entry::doall_sh_idx, DOLLAR, cdir_switch_entry::dopar_sh_idx, EOS, EOS_STR, EQUAL, Error, Executable_Stmt_Cat, EXIT, FALSE, Find_EOS, FREE_IR_LIST_NODE, Func_Entry, Func_Exit, Function_Result, gen_loop_lbl_name(), idx, IL_COL_NUM, IL_FLD, IL_IDX, IL_LINE_NUM, IL_LIST_CNT, IL_NEXT_LIST_IDX, IL_OPND, IL_PREV_LIST_IDX, IL_Tbl_Idx, Infinite_Loop, Internal, IR_COL_NUM, IR_FLD_R, IR_IDX_L, IR_IDX_R, IR_LINE_NUM, IR_LIST_CNT_R, IR_OPR, IR_TYPE_IDX, iss_blk_stk_err(), Iterative_Loop, LA_CH_CLASS, LA_CH_COLUMN, LA_CH_LINE, LA_CH_VALUE, Label, last_unlbld_loop_line, last_unlbld_loop_num, Lbl_Construct, Ldbg_User_Lbl, LINK_TO_PARENT_BLK, LN_DEF_LOC, Loop_Info_Opr, LPAREN, matched_specific_token(), MATCHED_TOKEN_CLASS, MAX_BLK_LOOP_NUM, MISC_RECS, Module_Proc_Blk, MP_DIR_NEST_IDX, NEXT_LA_CH, NO_Tbl_Idx, NTR_IR_LIST_TBL, NTR_IR_TBL, ntr_sym_tbl(), NULL, NULL_IDX, null_opnd, Open_Mp_Do_Blk, OPEN_MP_NEST_IDX, Open_Mp_Parallel_Do_Blk, Open_Mp_Section_Blk, OPND_IDX, cdir_switch_entry::paralleldo_omp_sh_idx, cdir_switch_entry::paralleldo_sh_idx, parse_deref(), parse_err_flush(), parse_expr(), cdir_switch_entry::pdo_sh_idx, PRINTMSG(), process_blockable_dir(), process_interchange_dir(), PUSH_BLK_STK, Referenced, reset_lex(), RPAREN, SGI_Doacross_Blk, SGI_Parallel_Do_Blk, SGI_Pdo_Blk, SGI_Region_Blk, SH_ERR_FLG, SH_IR_IDX, SH_STMT_TYPE, cdir_switch_entry::shortloop, cdir_switch_entry::shortloop128, Skip_Lbl, srch_sym_tbl(), statement_number, stmt_construct_idx, stmt_start_col, stmt_start_line, stmt_type, Tok_Class_Id, Tok_Class_Keyword, Tok_Class_Label, Tok_Kwd_While, token, TOKEN_BUF_IDX, TOKEN_COLUMN, TOKEN_ERR, TOKEN_LEN, TOKEN_LINE, TOKEN_STMT_NUM, TOKEN_STR, Top_Lbl, TRACE, TRUE, TYPELESS_DEFAULT_TYPE, USCORE, Wait_Blk, While_Loop, and XREF_RECS.

Here is the call graph for this function:

void parse_else_stmt ( void  )

Definition at line 2222 of file p_ctl_flow.c.

References AT_DEF_COLUMN, AT_DEF_LINE, AT_DEFINED, AT_NAME_LEN, AT_OBJ_NAME_LONG, AT_REFERENCED, AT_Tbl_Idx, ATL_DEF_STMT_IDX, Before, BLK_FIRST_SH_IDX, BLK_LABEL, blk_match_err(), BLK_NAME, blk_stk_idx, BLK_TYPE, Br_True_Opr, Br_Uncond_Opr, check_for_vestigial_task_blks(), CIF_Construct_Name_Reference, CIF_Else_If_Stmt, CIF_Else_Stmt, CIF_Elsewhere_Stmt, cif_flags, cif_stmt_type_rec(), cif_usage_rec(), compare_names(), Continue_Stmt, COPY_OPND, CURR_BLK, CURR_BLK_FIRST_SH_IDX, CURR_BLK_LABEL, CURR_BLK_NAME, CURR_BLK_NO_EXEC, curr_stmt_category, curr_stmt_sh_idx, Else_If_Stmt, Else_Opr, Else_Stmt, Else_Where_Mask_Opr, Else_Where_Mask_Stmt, Else_Where_Opr, Else_Where_Stmt, EOS, EOS_STR, Executable_Stmt_Cat, EXIT, FALSE, Find_EOS, Func_Entry, Func_Exit, gen_internal_lbl(), gen_sh(), Goto_Stmt, If_Blk, If_Else_Blk, If_Else_If_Blk, If_Then_Blk, IL_COL_NUM, IL_FLD, IL_IDX, IL_LINE_NUM, IL_NEXT_LIST_IDX, IL_PREV_LIST_IDX, IL_Tbl_Idx, Internal, IR_COL_NUM, IR_COL_NUM_L, IR_COL_NUM_R, IR_FLD_L, IR_FLD_R, IR_IDX_L, IR_IDX_R, IR_LINE_NUM, IR_LINE_NUM_L, IR_LINE_NUM_R, IR_LIST_CNT_R, IR_OPND_L, IR_OPR, IR_TYPE_IDX, LA_CH_COLUMN, LA_CH_LINE, LA_CH_VALUE, Label_Opr, LINK_TO_PARENT_BLK, LOGICAL_DEFAULT_TYPE, LPAREN, match_blk(), matched_specific_token(), MATCHED_TOKEN_CLASS, MISC_RECS, NEXT_LA_CH, NTR_IR_LIST_TBL, NTR_IR_TBL, NULL, NULL_IDX, parse_err_flush(), parse_expr(), POP_BLK_STK, PRINTMSG(), PUSH_BLK_STK, Referenced, reset_lex(), RPAREN, SH_COL_NUM, SH_ERR_FLG, SH_GLB_LINE, SH_IR_IDX, SH_PARENT_BLK_IDX, SH_PREV_IDX, SH_STMT_TYPE, SH_Tbl_Idx, statement_number, STMT_LEGAL_IN_BLK, stmt_start_col, stmt_start_line, stmt_type, Tok_Class_Id, Tok_Class_Keyword, Tok_Id, Tok_Kwd_If, Tok_Kwd_Then, Tok_Kwd_Where, token, TOKEN_BUF_IDX, TOKEN_COLUMN, TOKEN_ID, TOKEN_LEN, TOKEN_LINE, TOKEN_STMT_NUM, TRACE, TRUE, TYPELESS_DEFAULT_TYPE, Where_Else_Blk, Where_Else_Mask_Blk, Where_Then_Blk, and XREF_RECS.

Here is the call graph for this function:

void parse_forall ( void  )
void parse_if_stmt ( void  )

Definition at line 3645 of file p_ctl_flow.c.

References After, Allocatable_Stmt, Allocate_Stmt, Ansi, Arith_If_Stmt, Assign_Stmt, Assignment_Stmt, AT_DCL_ERR, AT_REFERENCED, AT_Tbl_Idx, ATL_CLASS, ATL_DEF_STMT_IDX, Automatic_Base_Calc_Stmt, Automatic_Base_Size_Stmt, Automatic_Stmt, Backspace_Stmt, Before, blk_stk, blk_stk_idx, Blockdata_Stmt, Br_Aif_Opr, Br_True_Opr, Buffer_Stmt, Call_Stmt, Case_Stmt, Ch_Class_Digit, Ch_Class_Letter, check_label_ref(), cif_flags, CIF_If_Arithmetic_Stmt, CIF_If_Construct, CIF_If_Logical_Stmt, cif_stmt_type_rec(), Close_Stmt, COMMA, Comment, Common_Stmt, Construct_Def, Contains_Stmt, Continue_Stmt, COPY_OPND, Cpnt_Decl_Stmt, CURR_BLK, CURR_BLK_ERR, CURR_BLK_FIRST_SH_IDX, CURR_BLK_LABEL, CURR_BLK_NAME, CURR_BLK_NO_EXEC, curr_stmt_category, curr_stmt_sh_idx, Cycle_Stmt, Data_Stmt, Deallocate_Stmt, Decode_Stmt, Derived_Type_Stmt, determine_stmt_type(), Dimension_Stmt, Directive_Stmt, Do_Infinite_Stmt, Do_Iterative_Stmt, Do_While_Stmt, Elemental_Stmt, Else_If_Stmt, Else_Stmt, Else_Where_Stmt, Encode_Stmt, End_Blockdata_Stmt, End_Do_Parallel_Stmt, End_Do_Stmt, End_Forall_Stmt, End_Function_Stmt, End_Guard_Stmt, End_If_Stmt, End_Interface_Stmt, End_Module_Stmt, End_Parallel_Case_Stmt, End_Parallel_Stmt, End_Program_Stmt, End_Select_Stmt, End_Stmt, End_Subroutine_Stmt, End_Type_Stmt, End_Where_Stmt, Endfile_Stmt, Entry_Stmt, EOS, EOS_STR, EQUAL, Equivalence_Stmt, Error, Executable_Stmt_Cat, EXIT, Exit_Stmt, External_Stmt, FALSE, Find_EOS, Find_Rparen, Forall_Cstrct_Stmt, Forall_Stmt, Format_Stmt, Func_Entry, Func_Exit, Function_Stmt, gen_if_ir(), gen_internal_lbl(), gen_sh(), Goto_Stmt, If_Blk, If_Cstrct_Stmt, If_Stmt, if_stmt_lbl_idx, If_Then_Blk, IL_COL_NUM, IL_FLD, IL_IDX, IL_LINE_NUM, IL_NEXT_LIST_IDX, IL_PREV_LIST_IDX, IL_Tbl_Idx, Implicit_None_Stmt, Implicit_Stmt, in_action_stmt_of_if_where_or_forall, INCREMENT_STATEMENT_NUMBER, Inquire_Stmt, INTEGER_DEFAULT_TYPE, Intent_Stmt, Interface_Stmt, Internal, Intrinsic_Stmt, IR_COL_NUM, IR_COL_NUM_R, IR_FLD_R, IR_IDX_R, IR_LINE_NUM, IR_LINE_NUM_R, IR_LIST_CNT_R, IR_OPND_L, IR_OPR, IR_TYPE_IDX, iss_blk_stk_err(), LA_CH_CLASS, LA_CH_COLUMN, LA_CH_LINE, LA_CH_VALUE, Label_Def, Lbl_Construct, LINK_TO_PARENT_BLK, LOGICAL_DEFAULT_TYPE, LPAREN, MATCHED_TOKEN_CLASS, MISC_RECS, Module_Proc_Stmt, Module_Stmt, Namelist_Stmt, NEXT_LA_CH, NTR_IR_LIST_TBL, NTR_IR_TBL, NULL, NULL_IDX, Null_Stmt, Nullify_Stmt, Open_MP_End_Critical_Stmt, Open_MP_End_Do_Stmt, Open_MP_End_Master_Stmt, Open_MP_End_Ordered_Stmt, Open_MP_End_Parallel_Do_Stmt, Open_MP_End_Parallel_Sections_Stmt, Open_MP_End_Parallel_Stmt, Open_MP_End_Section_Stmt, Open_MP_End_Sections_Stmt, Open_MP_End_Single_Stmt, Open_MP_Section_Stmt, Open_Stmt, Optional_Stmt, Outmoded_If_Stmt, Parallel_Case_Stmt, Parameter_Stmt, parse_err_flush(), parse_expr(), Pause_Stmt, PERCENT, Pointer_Stmt, POP_BLK_STK, Print_Stmt, PRINTMSG(), Private_Stmt, Program_Stmt, Public_Stmt, Pure_Stmt, PUSH_BLK_STK, Read_Stmt, Recursive_Stmt, Referenced, reset_lex(), Return_Stmt, Rewind_Stmt, RPAREN, Save_Stmt, Select_Stmt, Sequence_Stmt, SGI_End_Critical_Section_Stmt, SGI_End_Parallel_Stmt, SGI_End_Pdo_Stmt, SGI_End_Psection_Stmt, SGI_End_Single_Process_Stmt, SGI_Region_End_Stmt, SGI_Section_Stmt, SH_ACTION_STMT, SH_ERR_FLG, SH_IR_IDX, SH_PREV_IDX, SH_STMT_TYPE, Statement_Num_Stmt, statement_number, stmt_construct_idx, Stmt_Func_Stmt, stmt_label_idx, stmt_parsers, stmt_start_col, stmt_start_line, stmt_type, Stop_Stmt, Subroutine_Stmt, Target_Stmt, Task_Common_Stmt, Then_Stmt, Tok_Class_Id, Tok_Class_Keyword, Tok_Class_Label, Tok_Kwd_Then, token, TOKEN_BUF_IDX, TOKEN_COLUMN, TOKEN_ERR, TOKEN_LINE, TOKEN_STMT_NUM, TRACE, TRUE, Type_Decl_Stmt, Type_Init_Stmt, USCORE, Use_Stmt, Volatile_Stmt, Where_Cstrct_Stmt, Where_Stmt, Where_Then_Blk, and Write_Stmt.

Here is the call graph for this function:


Variable Documentation

int last_unlbld_loop_line = 0 [static]

Definition at line 78 of file p_ctl_flow.c.

Referenced by parse_do_stmt().

int last_unlbld_loop_num [static]

Definition at line 79 of file p_ctl_flow.c.

Referenced by parse_do_stmt().

Definition at line 81 of file p_ctl_flow.c.

Referenced by parse_allocate_stmt(), and parse_deref().

char USMID[] = "\n@(#)5.0_pl/sources/p_ctl_flow.c 5.11 10/12/99 10:54:10\n" [static]

Definition at line 37 of file p_ctl_flow.c.

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines