Files
Digital-Research-Source-Code/ASSEMBLY & COMPILE TOOLS/PLM VAX COMPILER/plmvax/plmcom.for
Sepp J Morris 31738079c4 Upload
Digital Research
2020-11-06 18:50:37 +01:00

540 lines
22 KiB
Fortran

C***********************************************************************
C
C PLMCOM.FOR
C
C
C D I S C L A I M E R N O T I C E
C ------------------- -----------
C
C This document and/or portions of the material and data furnished
C herewith, was developed under sponsorship of the U. S. Government.
C Neither the U.S. nor the U.S.D.O.E., nor the Leland Stanford Junior
C University, nor their employees, nor their respective contractors,
C subcontractors, or their employees, makes any warranty, express or
C implied, or assumes any liability or responsibility for accuracy,
C completeness or usefulness of any information, apparatus, product
C or process disclosed, or represents that its use will not infringe
C privately-owned rights. Mention of any product, its manufacturer,
C or suppliers shall not, nor is it intended to, imply approval, dis-
C approval, or fitness for any particular use. The U. S. and the
C University at all times retain the right to use and disseminate same
C for any purpose whatsoever. Such distribution shall be made by the
C National Energy Software Center at the Argonne National Laboratory
C and only subject to the distributee furnishing satisfactory proof
C that he has a valid license from the Intel Corporation in effect.
C
C
C-----------------------------------------------------------------------
C
C This include-file supplies all global definitions for the
C PL/M-VAX compiler.
C
C-----------------------------------------------------------------------
C
C R E V I S I O N H I S T O R Y
C
C 29SEP81 Alex Hunter 1. Increase SYMBOL_MAX. (V5.3)
C 2. Increase max string size to 290.
C 3. Change relevant SYMBOL and MEMBER arrays
C to INTEGER*4.
C 4. Add MEMBER_LOWER_BOUND array to support
C lower bounds for structure member arrays.
C 5. Add MEMBER_OFFSET array to support the
C AT(@external.member) construct.
C 21OCT81 Alex Hunter 1. Add stuff for basic block analysis. (V5.5)
C 2. Add OP_SIGNED and OP_UNSIGNED operators.
C 28OCT81 Alex Hunter 1. Add new keywords (SELECTOR-REGISTER). (V5.7)
C 2. Add new symbol type attributes.
C 09NOV81 Alex Hunter 1. Add assumption flags. (V5.8)
C 10NOV81 Alex Hunter 1. Add S_NO_SIDE_EFFECTS, ASSUME_DBG, and
C serial no. deltas. (V6.0)
C 12NOV81 Alex Hunter 1. Add S_REGISTER,S_SPECIAL,SYMBOL_PSECT,
C SYM_MLAST, et al. (V6.1)
C 2. Change ATOM_DISP to I*4.
C 3. Delete predefined atoms.
C 4. Add new PSECTS and change names.
C 14JAN82 Alex Hunter 1. Change ASSUME_S32 to ASSUME_S64. (V6.5)
C
C-----------------------------------------------------------------------
C
IMPLICIT INTEGER*2 (A-Z)
C-----------------------------------------------------------------------
C
C Reserved word token values.
C
C-----------------------------------------------------------------------
PARAMETER K_ADDRESS=101, K_AND=102, K_AT=103, K_BASED=104,
# K_BY=105, K_BYTE=106, K_CALL=107, K_CASE=108,
# K_DATA=109, K_DECLARE=110, K_DISABLE=111, K_DO=112,
# K_ELSE=113, K_ENABLE=114, K_END=115, K_EOF=116,
# K_EXTERNAL=117, K_GO=118, K_GOTO=119, K_HALT=120,
# K_IF=121, K_INITIAL=122, K_INTEGER=123,
# K_INTERRUPT=124, K_LABEL=125, K_LITERALLY=126,
# K_MINUS=127, K_MOD=128, K_NOT=129, K_OR=130,
# K_PLUS=131, K_POINTER=132, K_PROCEDURE=133,
# K_PUBLIC=134, K_REAL=135, K_REENTRANT=136,
# K_RETURN=137, K_STRUCTURE=138, K_THEN=139, K_TO=140,
# K_WHILE=141, K_WORD=142, K_XOR=143,
# K_COMMON=144, K_LONG=145, K_DOUBLE=146, K_OTHERWISE=147,
# K_QUAD=148,K_FORWARD=149,K_SELECTOR=150,K_DWORD=151,
# K_SHORT=152,K_BOOLEAN=153,K_REGISTER=154
C-----------------------------------------------------------------------
C
C Delimiter token values.
C
C-----------------------------------------------------------------------
PARAMETER D_PLUS=201, D_MINUS=202, D_STAR=203, D_SLASH=204,
# D_LT=205, D_GT=206, D_EQ=207, D_NE=208, D_LE=209,
# D_GE=210, D_ASSN=211, D_COLON=212, D_SEMI=213,
# D_DOT=214, D_COMMA=215, D_LP=216, D_RP=217, D_AT=218
C-----------------------------------------------------------------------
C
C Non-terminal token values.
C
C-----------------------------------------------------------------------
PARAMETER NT_STATEMENT=301,NT_EXPRESSION=302,NT_TYPE=303
C-----------------------------------------------------------------------
C
C Controls.
C
C-----------------------------------------------------------------------
INTEGER*2 LEFTMARGIN,RIGHTMARGIN,SKIP_STATE,PAGELENGTH,
# PAGEWIDTH,OPTIMIZE,MODEL,TABS
LOGICAL*1 LIST_FLAG,LARGE,NON_CONTROL_LINE_READ
LOGICAL*1 PRINT_FLAG,CODE_FLAG,XREF_FLAG,IXREF_FLAG,SYMBOLS_FLAG,
# PAGING_FLAG,EJECT_FLAG,INTVECTOR_FLAG,OBJECT_FLAG,
# OVERFLOW_FLAG,DEBUG_FLAG,TYPE_FLAG,ROM_FLAG,COND_FLAG,
# OPRINT_FLAG,WARN_FLAG,PLM80_FLAG,GLOBALS_FLAG,
# PUBLICS_FLAG,OVERLAY_FLAG,ROOT_FLAG,ALIGN_FLAG,
# FREQ_FLAG,VECTOR_FLAG
PARAMETER MAX_IN=20
BYTE PRINT_FILE_STRING(0:45),IXREF_FILE_STRING(0:45),
# WORK_FILE_STRING(0:45),OBJECT_FILE_STRING(0:45),
# DATE_STRING(0:80),TITLE_STRING(0:80),SUBTITLE_STRING(0:80),
# IN_FILE_STRING(0:45,8:MAX_IN+1),OPRINT_FILE_STRING(0:45),
# GLOBALS_FILE_STRING(0:45),PUBLICS_FILE_STRING(0:45),
# OVERLAY_PREFIX(0:80)
COMMON/CONTROLS/ LEFTMARGIN,RIGHTMARGIN,LIST_FLAG,LARGE,
# NON_CONTROL_LINE_READ,SKIP_STATE,PAGELENGTH,PAGEWIDTH,
# OPTIMIZE,MODEL,PRINT_FLAG,CODE_FLAG,XREF_FLAG,IXREF_FLAG,
# SYMBOLS_FLAG,PAGING_FLAG,EJECT_FLAG,INTVECTOR_FLAG,
# OBJECT_FLAG,OVERFLOW_FLAG,DEBUG_FLAG,TYPE_FLAG,ROM_FLAG,
# COND_FLAG,
# PRINT_FILE_STRING,IXREF_FILE_STRING,WORK_FILE_STRING,
# OBJECT_FILE_STRING,DATE_STRING,TITLE_STRING,
# SUBTITLE_STRING,IN_FILE_STRING,OPRINT_FILE_STRING,
# OPRINT_FLAG,TABS,WARN_FLAG,PLM80_FLAG,GLOBALS_FLAG,
# PUBLICS_FLAG,OVERLAY_FLAG,ROOT_FLAG,GLOBALS_FILE_STRING,
# PUBLICS_FILE_STRING,OVERLAY_PREFIX,ALIGN_FLAG,FREQ_FLAG,
# VECTOR_FLAG
C-----------------------------------------------------------------------
C
C Character stream input and macro expansion stuff.
C
C-----------------------------------------------------------------------
PARAMETER LITMAX=16
PARAMETER EOLCHAR='01'X, EOFCHAR='02'X
INTEGER*2 COL, LITLEV, LITCOL(LITMAX)
CHARACTER*1 CHAR, EOL, EOF, TAB
CHARACTER*300 LITVAL(LITMAX), CARD
EQUIVALENCE (CARD,LITVAL(1))
COMMON /LEXICAL/ COL,LITLEV,LITCOL
COMMON /LEXCHAR/ LITVAL,CHAR,EOL,EOF,TAB
DATA COL/72/, CARD(73:73)/EOLCHAR/, LITLEV/1/
DATA EOL/EOLCHAR/, EOF/EOFCHAR/, TAB/'09'X/
C-----------------------------------------------------------------------
C
C Lexical token analysis stuff.
C
C-----------------------------------------------------------------------
PARAMETER STRING_SIZE_MAX=290 ! (V5.3)
CHARACTER DELIMITER*2, IDENTIFIER*32, STRING*(STRING_SIZE_MAX)
CHARACTER NEXT_DELIMITER*2, NEXT_IDENTIFIER*32,
# NEXT_STRING*(STRING_SIZE_MAX)
REAL*8 FLOATVAL, NEXT_FLOATVAL
INTEGER*4 FIXVAL, NEXT_FIXVAL
INTEGER*2 TOKENTYPE, TT, STRLEN
INTEGER*2 NEXT_TOKENTYPE, NEXT_STRLEN
PARAMETER INVALID=0, DELIM=1, ID=2, FIXCON=3, FLOATCON=4,
# STRCON=5, EOFTOK=6
COMMON /TOKEN/ TOKENTYPE,FIXVAL,FLOATVAL,STRLEN,
# NEXT_TOKENTYPE,NEXT_FIXVAL,NEXT_FLOATVAL,
# NEXT_STRLEN
COMMON /TOKENCHAR/ DELIMITER,IDENTIFIER,STRING,
# NEXT_DELIMITER,NEXT_IDENTIFIER,NEXT_STRING
EQUIVALENCE (TT,TOKENTYPE)
C-----------------------------------------------------------------------
C
C I/O unit definitions.
C
C-----------------------------------------------------------------------
COMMON /IO/ IN,OUT,LST,IXI,GBL,PUB
DATA IN/8/, OUT/4/, LST/6/, IXI/3/, GBL/1/, PUB/2/
C-----------------------------------------------------------------------
C
C Label structures.
C
C-----------------------------------------------------------------------
PARAMETER MAX_LABELS=10
CHARACTER*32 LABELS(MAX_LABELS), LAST_LABEL
INTEGER*2 NLABELS
COMMON /LABEL/ NLABELS
COMMON /LABELC/ LABELS, LAST_LABEL
DATA NLABELS /0/
C-----------------------------------------------------------------------
C
C Symbol attribute values.
C
C-----------------------------------------------------------------------
PARAMETER S_MACRO=1,S_SCALAR=2,S_ARRAY=3,S_PROC=4,S_LABEL=5,
# S_KEYWORD=6
PARAMETER S_BYTE=1,S_WORD=2,S_INTEGER=3,S_PTR=4,S_REAL=5,
# S_LONG=6,S_DOUBLE=7,S_QUAD=8,S_SHORT=9,S_DWORD=10,
# S_SELECTOR=11,S_BOOLEAN=12,
# S_STRUC=100
PARAMETER S_EXT=1,S_STATIC=2,S_BASED=3,S_ARG=4,S_FORWARD=5,
# S_DYNAMIC=6, S_VALUE=8,S_UNRESOLVED=9,
# S_BUILTIN=10,S_LOCAL=11,S_REGISTER=12
PARAMETER S_PUBLIC=1,S_UNDEF=2,S_INTERRUPT=4,S_REENT=8,
# S_FORCE_STATIC=16,S_DATA=32,S_OVERLAID=64,
# S_SAME_OVERLAY=128,S_NOTPUBLIC=256,
# S_NO_SIDE_EFFECTS=512,S_SPECIAL=1024
C-----------------------------------------------------------------------
C
C Symbol table structures.
C
C-----------------------------------------------------------------------
PARAMETER SYMBOL_MAX=2000, MEMBER_MAX=500, PARAM_MAX=100
PARAMETER SYM_MLAST=1,SYM_MLEN=2,SYM_MSIZ=3,
# SYM_SLAST=4,SYM_SLEN=5,SYM_SSIZ=6,
# FIRST_AVAILABLE_SYMBOL_INDEX=7
CHARACTER*32 SYMBOL_PLM_ID(SYMBOL_MAX), SYMBOL_VAX_ID(SYMBOL_MAX)
INTEGER*2 SYMBOL_KIND(SYMBOL_MAX), SYMBOL_TYPE(SYMBOL_MAX),
# SYMBOL_LINK(SYMBOL_MAX), SYMBOL_LIST_SIZE(SYMBOL_MAX),
# SYMBOL_REF(SYMBOL_MAX), SYMBOL_BASE(SYMBOL_MAX),
# SYMBOL_BASE_MEMBER(SYMBOL_MAX),
# SYMBOL_FLAGS(SYMBOL_MAX), SYMBOL_INDEX,
# SYMBOL_CHAIN(SYMBOL_MAX),
# SYMBOL_SERIAL_NO(SYMBOL_MAX),
# SYMBOL_PSECT(SYMBOL_MAX)
INTEGER*4 SYMBOL_DISP(SYMBOL_MAX),SYMBOL_NBR_ELEMENTS(SYMBOL_MAX),
# SYMBOL_LOWER_BOUND(SYMBOL_MAX),
# SYMBOL_ELEMENT_SIZE(SYMBOL_MAX)
LOGICAL*4 SAME_OVERLAY
COMMON/SYMBOLC/SYMBOL_PLM_ID,SYMBOL_VAX_ID
COMMON/SYMBOL/SYMBOL_KIND,SYMBOL_TYPE,
# SYMBOL_LINK,SYMBOL_LIST_SIZE,
# SYMBOL_REF,SYMBOL_BASE,SYMBOL_BASE_MEMBER,
# SYMBOL_FLAGS,SYMBOL_INDEX,SYMBOL_CHAIN,SAME_OVERLAY,
# SYMBOL_SERIAL_NO,SYMBOL_PSECT
COMMON/SYMBOL4/SYMBOL_DISP,SYMBOL_NBR_ELEMENTS,
# SYMBOL_LOWER_BOUND,SYMBOL_ELEMENT_SIZE
C-----------------------------------------------------------------------
C
C Member-symbol table structures.
C
C-----------------------------------------------------------------------
CHARACTER*32 MEMBER_PLM_ID(MEMBER_MAX), MEMBER_VAX_ID(MEMBER_MAX)
INTEGER*2 MEMBER_KIND(MEMBER_MAX), MEMBER_TYPE(MEMBER_MAX),
# MEMBER_INDEX,MEMBER_SERIAL_NO(MEMBER_MAX)
INTEGER*4 MEMBER_NBR_ELEMENTS(MEMBER_MAX),
# MEMBER_LOWER_BOUND(MEMBER_MAX),
# MEMBER_ELEMENT_SIZE(MEMBER_MAX),
# MEMBER_OFFSET(MEMBER_MAX)
COMMON/MEMBERC/MEMBER_PLM_ID,MEMBER_VAX_ID
COMMON/MEMBER/MEMBER_KIND,MEMBER_TYPE,MEMBER_INDEX,
# MEMBER_SERIAL_NO
COMMON/MEMBER4/MEMBER_NBR_ELEMENTS,MEMBER_LOWER_BOUND,
# MEMBER_ELEMENT_SIZE,MEMBER_OFFSET
C-----------------------------------------------------------------------
C
C Parameter list structures.
C
C-----------------------------------------------------------------------
INTEGER*2 PARAM_TYPE(PARAM_MAX)
COMMON/PARAM/PARAM_TYPE
C-----------------------------------------------------------------------
C
C Block scope structures.
C
C-----------------------------------------------------------------------
PARAMETER BLOCK_MAX=20
INTEGER*2 BLOCK_LEVEL,SYMBOL_TOP(0:BLOCK_MAX),
# MEMBER_TOP(0:BLOCK_MAX),PARAM_TOP(0:BLOCK_MAX),
# STRINGS_TOP(0:BLOCK_MAX)
COMMON/BLOCK/BLOCK_LEVEL,SYMBOL_TOP,MEMBER_TOP,PARAM_TOP,
# STRINGS_TOP
DATA BLOCK_LEVEL/0/
DATA MEMBER_TOP(0)/0/,PARAM_TOP(0)/0/,
# STRINGS_TOP(0)/0/
C-----------------------------------------------------------------------
C
C String space structures.
C
C-----------------------------------------------------------------------
PARAMETER STRINGS_MAX=32000
CHARACTER*(STRINGS_MAX) STRINGS
COMMON/STRINGS/STRINGS
C-----------------------------------------------------------------------
C
C Miscellaneous stuff.
C
C-----------------------------------------------------------------------
INTEGER*2 BYTE_SIZE(S_BYTE:S_QUAD)
COMMON/TABLES/BYTE_SIZE
DATA BYTE_SIZE/1,2,2,4,4,4,8,8/
PARAMETER NULL=0, DUMMY=0
PARAMETER R0=16
C-----------------------------------------------------------------------
C
C Node space definitions.
C
C-----------------------------------------------------------------------
PARAMETER NODE_MIN=20,NODE_MAX=200,
# REG_MIN=1,REG_MAX=16,
# ANY_WHERE=-3,ANY_REG=-1,ON_STACK=-2,
# CON_MIN=-9,CON_MAX=-4,
# ATOM_MIN=-200,ATOM_MAX=-10,
# FIRST_FREE_ATOM=ATOM_MIN,
# FIX_MIN=-300,FIX_MAX=-201,
# FLT_MIN=-400,FLT_MAX=-301
C-----------------------------------------------------------------------
C
C Operator node structures.
C
C-----------------------------------------------------------------------
INTEGER*2 OPNODE_OP(NODE_MIN:NODE_MAX),
# OPNODE_OPND1(NODE_MIN:NODE_MAX),
# OPNODE_OPND2(NODE_MIN:NODE_MAX),
# NEXT_NODE
C-----------------------------------------------------------------------
C
C Atom node structures.
C
C-----------------------------------------------------------------------
INTEGER*2 ATOM_SYM(ATOM_MIN:ATOM_MAX),
# ATOM_MEM(ATOM_MIN:ATOM_MAX),
# ATOM_BASE(ATOM_MIN:ATOM_MAX),
# ATOM_SUB(ATOM_MIN:ATOM_MAX),
# ATOM_FLAGS(ATOM_MIN:ATOM_MAX),
# ATOM_SERIAL_NO(ATOM_MIN:ATOM_MAX),
# NEXT_ATOM
INTEGER*4 ATOM_DISP(ATOM_MIN:ATOM_MAX)
PARAMETER A_L2P=1,A_P2L=2,A_IMMEDIATE=4,A_CTIM=8,A_VECTOR=16
C-----------------------------------------------------------------------
C
C Literal and constant node structures.
C
C-----------------------------------------------------------------------
INTEGER*4 FIXED_VAL(FIX_MIN:FIX_MAX),
# NEXT_FIXED
REAL*8 FLOAT_VAL(FLT_MIN:FLT_MAX)
INTEGER*2 NEXT_FLOAT
INTEGER*2 CONSTANT_LABEL(CON_MIN:CON_MAX),
# NEXT_CONSTANT
C-----------------------------------------------------------------------
C
C Structures common to all nodes.
C
C-----------------------------------------------------------------------
INTEGER*2 NODE_REG(FLT_MIN:NODE_MAX),
# NODE_REFCT(FLT_MIN:NODE_MAX),
# NODE_TYPE(FLT_MIN:NODE_MAX),
# NODE_CONTEXT(FLT_MIN:NODE_MAX)
C-----------------------------------------------------------------------
C
C Code tree common block.
C
C-----------------------------------------------------------------------
COMMON/TREE/OPNODE_OP,OPNODE_OPND1,OPNODE_OPND2,
# ATOM_SYM,ATOM_MEM,ATOM_BASE,
# ATOM_SUB,ATOM_DISP,
# FIXED_VAL,FLOAT_VAL,
# NODE_REG,NODE_REFCT,NODE_CONTEXT,NODE_TYPE,
# NEXT_NODE,NEXT_ATOM,NEXT_FIXED,NEXT_FLOAT,
# CONSTANT_LABEL,NEXT_CONSTANT,ATOM_FLAGS,
# ATOM_SERIAL_NO
C-----------------------------------------------------------------------
C
C Context resolution stuff.
C
C-----------------------------------------------------------------------
PARAMETER CX_UNSIGNED=1, CX_SIGNED=2
INTEGER*2 CONTEXT(S_BYTE:S_QUAD)
COMMON /CX/ CONTEXT
DATA CONTEXT
# /CX_UNSIGNED,CX_UNSIGNED,CX_SIGNED,CX_UNSIGNED,CX_SIGNED,
# CX_SIGNED,CX_SIGNED,CX_SIGNED/
C-----------------------------------------------------------------------
C
C Miscellaneous declarations.
C
C-----------------------------------------------------------------------
LOGICAL*4 ATOM,NODE,LITERAL,FIXLIT,FLOATLIT,CONSTANT,REGISTER
CHARACTER*32 LOCAL_LABEL
C-----------------------------------------------------------------------
C
C Operator value definitions.
C
C-----------------------------------------------------------------------
PARAMETER OP_NOP=0,
# OP_ADD=1,OP_SUB=2,OP_MUL=3,OP_DIV=4,OP_ADWC=5,OP_SBWC=6,
# OP_NEG=7,OP_NOT=8,OP_EXT=9,OP_OR=10,OP_XOR=11,OP_LT=12,
# OP_GT=13,OP_EQ=14,OP_NE=15,OP_LE=16,OP_GE=17,OP_LOC=18,
# OP_ASSN=19,OP_MOD=20,OP_THEN=21,OP_BIT=22,OP_ALSO=23,
# OP_CALL=24,OP_ARG=25,OP_AND=26,OP_MOV=27,
# OP_SIGNED=71,OP_UNSIGNED=72,
# OP_BYTE=81,OP_WORD=82,OP_INTEGER=83,OP_PTR=84,
# OP_REAL=85,OP_LONG=86,OP_DOUBLE=87,OP_QUAD=88,
# OP_B2W=101,OP_B2I=102,OP_B2L=103,OP_B2R=104,OP_W2B=105,
# OP_W2L=106,OP_I2B=107,OP_I2R=108,OP_I2L=109,OP_R2L=110,
# OP_R2I=111,OP_L2W=112,OP_L2R=113,OP_L2B=114,OP_R2B=115,
# OP_R2W=116,OP_L2D=117,OP_L2Q=118,OP_R2D=119,OP_D2B=120,
# OP_D2I=121,OP_D2R=122,OP_D2L=123,OP_Q2L=124,OP_I2D=125,
# OP_L2P=126,OP_P2L=127,
# OP_BNE=201,OP_BLB=202,OP_BB=203
C-----------------------------------------------------------------------
C
C Program section definitions.
C
C-----------------------------------------------------------------------
PARAMETER P_MAX=100
PARAMETER P_CONSTANTS=1,P_STACK=2,P_DATA=3,P_CODE=4,P_FREQ=5,
# P_VECTOR=6,P_APD=7,P_MEMORY=8
CHARACTER*32 PSECT_NAME(P_CONSTANTS:P_MAX),BASEC
CHARACTER*3 BASEV
COMMON /PSECTC/ BASEC,BASEV,PSECT_NAME
DATA PSECT_NAME
// '$PLM_ROM','$DGROUP_STACK','$DGROUP_DATA'
,, '$PLM_CODE','$PLM_FREQ','$CGROUP_VECTOR'
,, '$PLM_APD','MEMORY'
,, 92*' '
//
INTEGER*2 NC
COMMON /PSECTS/ NC
C-----------------------------------------------------------------------
C
C Compiler listing stuff.
C
C-----------------------------------------------------------------------
REAL*4 VERSION
LOGICAL*1 LISTING_TO_TERMINAL,LAST_LINE_EXISTS
COMMON /LIST/ LIST_LINE_NO,LIST_STNO,LIST_BLOCK_LEVEL,
# PREVIOUS_STNO,LINE_OF_PAGE,PAGE_NO,VERSION,
# LINES_READ,ERRORS,WARNINGS,LISTING_TO_TERMINAL,
# FIFO_DEPTH,LAST_LINE_EXISTS
C-----------------------------------------------------------------------
C
C Symbol table hash buckets.
C
C-----------------------------------------------------------------------
INTEGER*2 HASH_BUCKET(0:210)
COMMON /HASH/ HASH_BUCKET,FIRST_KEYWORD
C-----------------------------------------------------------------------
C
C Procedure scope structures.
C
C-----------------------------------------------------------------------
PARAMETER PROC_MAX=16 ! MAX STATIC NESTING DEPTH OF PROCS.
PARAMETER PROC_MAIN=1,PROC_EXT=2,PROC_FORWARD=4,PROC_REENT=8
INTEGER*2 PROC_FLAGS(PROC_MAX),PROC_DYN_OFF(PROC_MAX),
# PROC_INDEX(PROC_MAX),PROC_DYN_INDEX(PROC_MAX),
# PROC_ENTRY_MASK(PROC_MAX),PROC_ENTRY_INDEX(PROC_MAX),
# PROC_AP(0:PROC_MAX)
COMMON /PROCS/ PROC_LEVEL,PROC_FLAGS,PROC_DYN_OFF,PROC_INDEX,
# PROC_DYN_INDEX,PROC_ENTRY_MASK,PROC_ENTRY_INDEX,
# PROC_AP
DATA PROC_LEVEL/1/, PROC_FLAGS(1)/PROC_MAIN/,
# PROC_AP(0)/1/, PROC_AP(1)/1/
C-----------------------------------------------------------------------
C
C Path analysis stuff.
C
C-----------------------------------------------------------------------
LOGICAL*4 PATH
COMMON /PATH_ANALYSIS/ PATH
C-----------------------------------------------------------------------
C
C GLOBALS symbol table stuff.
C
C-----------------------------------------------------------------------
PARAMETER GBL_MAX=800 ! MAX # OF GLOBALLY INPUT SYMBOLS.
CHARACTER*32 GLOBAL_SYMBOL(GBL_MAX)
INTEGER*2 LAST_GLOBAL
COMMON /GLOBALS/ LAST_GLOBAL
COMMON /GLOBALC/ GLOBAL_SYMBOL
C-----------------------------------------------------------------------
C
C Basic block analysis stuff.
C
C-----------------------------------------------------------------------
LOGICAL*4 END_OF_BASIC_BLOCK
INTEGER*2 BASIC_BLOCK
INTEGER*2 EXTERNAL_SERIAL_DELTA,BASED_SERIAL_DELTA,
# SUBSCRIPTED_SERIAL_DELTA,OVERLAID_SERIAL_DELTA
COMMON /BASIC_BLOCKS/ END_OF_BASIC_BLOCK,BASIC_BLOCK,
# EXTERNAL_SERIAL_DELTA,BASED_SERIAL_DELTA,
# SUBSCRIPTED_SERIAL_DELTA,OVERLAID_SERIAL_DELTA
C-----------------------------------------------------------------------
C
C Assumption flags.
C
C-----------------------------------------------------------------------
LOGICAL*1 ASSUME_SCE,ASSUME_CSE,ASSUME_EEQ,ASSUME_PSE,
# ASSUME_BRO,ASSUME_BBA,ASSUME_CTE,ASSUME_MCO,
# ASSUME_CFA,ASSUME_SWB,ASSUME_OSR,ASSUME_SVE,
# ASSUME_S64,ASSUME_C7F,ASSUME_DBG
COMMON /ASSUMPTIONS/
# ASSUME_SCE,ASSUME_CSE,ASSUME_EEQ,ASSUME_PSE,
# ASSUME_BRO,ASSUME_BBA,ASSUME_CTE,ASSUME_MCO,
# ASSUME_CFA,ASSUME_SWB,ASSUME_OSR,ASSUME_SVE,
# ASSUME_S64,ASSUME_C7F,ASSUME_DBG