* sh.c (prepare_move_operand): Check if operand 0 is an invalid
[official-gcc.git] / gcc / f / symbol.def
blob9cddcb6dbe074960dd8598b5893f1f77ab7f6add
1 /* Definitions and documentations for attributes used in GNU F77 compiler
2 Copyright (C) 1995, 1996 Free Software Foundation, Inc.
3 Contributed by James Craig Burley.
5 This file is part of GNU Fortran.
7 GNU Fortran is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2, or (at your option)
10 any later version.
12 GNU Fortran is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with GNU Fortran; see the file COPYING. If not, write to
19 the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
20 02111-1307, USA. */
22 /* "How g77 learns about symbols"
24 There are three primary things in a symbol that g77 uses to keep
25 track of what it has learned about that symbol:
27 1. The state
28 2. The attributes
29 3. The info
31 State, attributes, and info (see f-info* files) all start out with
32 "NONE" fields when a symbol is first created.
34 In a PROGRAM or BLOCK DATA program unit, info where cannot be DUMMY
35 or RESULT. Any combinations including those possibilities are not
36 considered possible in such program units.
38 As soon as a symbol is created, it _must_ have its state changed to
39 SEEN, UNCERTAIN, or UNDERSTOOD.
41 If SEEN, some info might be set, such as the type info (as in when
42 the TYPE attribute is present) or kind/where info.
44 If UNCERTAIN, the permitted combinations of attributes and info are
45 listed below. Only the attributes ACTUALARG, ADJUSTABLE, ANYLEN, ARRAY,
46 DUMMY, EXTERNAL, SFARG, and TYPE are permitted. (All these attributes
47 are contrasted to each attribute below, even though some combinations
48 wouldn't be permitted in SEEN state either.) Note that DUMMY and
49 RESULT are not permitted in a PROGRAM/BLOCKDATA program unit, which
50 results in some of the combinations below not occurring (not UNCERTAIN,
51 but UNDERSTOOD).
53 ANYLEN|TYPE & ~(ACTUALARG|ADJUSTABLE|ARRAY|DUMMY|EXTERNAL|SFARG):
54 ENTITY/DUMMY, ENTITY/RESULT, FUNCTION/INTRINSIC.
56 ARRAY & ~(ACTUALARG|ANYLEN|DUMMY|EXTERNAL|SFARG|TYPE):
57 ENTITY/DUMMY, ENTITY/LOCAL.
59 ARRAY|TYPE & ~(ACTUALARG|ANYLEN|DUMMY|EXTERNAL|SFARG):
60 ENTITY/DUMMY, ENTITY/LOCAL.
62 DUMMY & ~(ACTUALARG|ADJUSTABLE|ANYLEN|ARRAY|EXTERNAL|SFARG|TYPE):
63 ENTITY/DUMMY, FUNCTION/DUMMY, SUBROUTINE/DUMMY.
65 DUMMY|TYPE & ~(ACTUALARG|ADJUSTABLE|ANYLEN|ARRAY|EXTERNAL|SFARG):
66 ENTITY/DUMMY, FUNCTION/DUMMY.
68 EXTERNAL & ~(ACTUALARG|ADJUSTABLE|ANYLEN|ARRAY|DUMMY|SFARG|TYPE):
69 FUNCTION/DUMMY, FUNCTION/GLOBAL, SUBROUTINE/DUMMY,
70 SUBROUTINE/GLOBAL, BLOCKDATA/GLOBAL.
72 EXTERNAL|ACTUALARG & ~(ADJUSTABLE|ANYLEN|ARRAY|DUMMY|SFARG|TYPE):
73 FUNCTION/GLOBAL, SUBROUTINE/GLOBAL.
75 EXTERNAL|DUMMY & ~(ACTUALARG|ADJUSTABLE|ANYLEN|ARRAY|SFARG|TYPE):
76 FUNCTION/DUMMY, SUBROUTINE/DUMMY.
78 EXTERNAL|TYPE & ~(ACTUALARG|ADJUSTABLE|ANYLEN|ARRAY|DUMMY|SFARG):
79 FUNCTION/DUMMY, FUNCTION/GLOBAL.
81 SFARG & ~(ACTUALARG|ADJUSTABLE|ANYLEN|ARRAY|DUMMY|EXTERNAL|TYPE):
82 ENTITY/DUMMY, ENTITY/LOCAL.
84 SFARG|TYPE & ~(ACTUALARG|ADJUSTABLE|ANYLEN|ARRAY|DUMMY|EXTERNAL):
85 ENTITY/DUMMY, ENTITY/LOCAL.
87 TYPE & ~(ACTUALARG|ANYLEN|ARRAY|DUMMY|EXTERNAL|SFARG):
88 ENTITY/DUMMY, ENTITY/LOCAL, ENTITY/RESULT, FUNCTION/DUMMY,
89 FUNCTION/GLOBAL, FUNCTION/INTRINSIC.
91 If UNDERSTOOD, the attributes are no longer considered, and the info
92 field is considered to be as fully filled in as possible by analyzing
93 a single program unit.
95 Each of the attributes (used only for SEEN/UNCERTAIN states) is
96 defined and described below. In many cases, a symbol starts out as
97 SEEN and has attributes set as it is seen in various contexts prior
98 to the first executable statement being seen (the "exec transition").
99 Once that happens, either it becomes immediately UNDERSTOOD and all
100 its info filled in, or it becomes UNCERTAIN and its info only partially
101 filled in until it becomes UNDERSTOOD. While UNCERTAIN, only a
102 subset of attributes are possible/important.
104 Not all symbols reach the UNDERSTOOD state, and in some cases symbols
105 go immediately from NONE to the UNDERSTOOD or even UNCERTAIN state.
106 For example, given "PROGRAM FOO", everything is known about the name
107 "FOO", so it becomes immediately UNDERSTOOD.
109 Also, there are multiple name spaces, and not all attributes are
110 possible/permitted in all name spaces.
112 The only attributes permitted in the global name space are:
114 ANY, CBLOCK, SAVECBLOCK.
116 The only attributes permitted in the local name space are:
118 ANY, ACTUALARG, ADJUSTABLE, ADJUSTS, ANYLEN, ANYSIZE, ARRAY, COMMON,
119 DUMMY, EQUIV, EXTERNAL, INIT, INTRINSIC, NAMELIST, RESULT, SAVE, SFARG,
120 SFUNC, TYPE.
122 In the stmt-func name space, no attributes are used, just the states.
127 /* Actual argument. Always accompanied by EXTERNAL.
129 Context is a name used as an actual argument passed to a procedure
130 other than a statement function.
132 Valid in UNCERTAIN state and local name space only.
134 This attribute is used only to flag the fact that an EXTERNAL'ed name
135 has been seen as an actual argument, and therefore cannot be
136 discovered later to be a DUMMY argument (via an ENTRY statement).
138 If DUMMY + EXTERNAL already, it is permitted to see the name
139 as an actual argument, but ACTUALARG is not added as an attribute since
140 that fact does not improve knowledge about the name. Hence it is not
141 permitted to transition ACTUALARG + EXTERNAL += DUMMY, and the
142 transition DUMMY + EXTERNAL += ACTUALARG is not actually done.
144 Cannot be combined with: ANYLEN, ARRAY, DUMMY, SFARG, TYPE.
146 Can be combined with: ACTUALARG, ANY, EXTERNAL.
148 Unrelated: ADJUSTABLE, ADJUSTS, ANYSIZE, CBLOCK, COMMON, EQUIV, INIT,
149 INTRINSIC, NAMELIST, RESULT, SAVE, SAVECBLOCK, SFUNC.
153 DEFATTR (FFESYMBOL_attrACTUALARG, FFESYMBOL_attrsACTUALARG, "ACTUALARG")
154 #ifndef FFESYMBOL_attrsACTUALARG
155 #define FFESYMBOL_attrsACTUALARG ((ffesymbolAttrs) 1 << FFESYMBOL_attrACTUALARG)
156 #endif
158 /* Has adjustable dimension(s). Always accompanied by ARRAY.
160 Context is an ARRAY-attributed name with an adjustable dimension (at
161 least one dimension containing a variable reference).
163 Valid in SEEN state and local name space only.
165 Cannot be combined with: ADJUSTABLE, ADJUSTS, COMMON, EQUIV, EXTERNAL,
166 NAMELIST, INIT, INTRINSIC, RESULT, SAVE, SFARG, SFUNC.
168 Can be combined with: ANY, ANYLEN, ANYSIZE, ARRAY, TYPE.
170 Must be combined with: DUMMY.
172 Unrelated: ACTUALARG, CBLOCK, SAVECBLOCK.
176 DEFATTR (FFESYMBOL_attrADJUSTABLE, FFESYMBOL_attrsADJUSTABLE, "ADJUSTABLE")
177 #ifndef FFESYMBOL_attrsADJUSTABLE
178 #define FFESYMBOL_attrsADJUSTABLE ((ffesymbolAttrs) 1 << FFESYMBOL_attrADJUSTABLE)
179 #endif
181 /* Adjusts an array.
183 Context is an expression in an array declarator, such as in a
184 DIMENSION, COMMON, or type-specification statement.
186 Valid in SEEN state and local name space only.
188 Cannot be combined with: ADJUSTABLE, ANYLEN, ANYSIZE, ARRAY,
189 EXTERNAL, INTRINSIC, RESULT, SAVE, SFUNC.
191 Can be combined with: ADJUSTS, ANY, COMMON, DUMMY, EQUIV, INIT,
192 NAMELIST, SFARG, TYPE.
194 Unrelated: ACTUALARG, CBLOCK, SAVECBLOCK.
198 DEFATTR (FFESYMBOL_attrADJUSTS, FFESYMBOL_attrsADJUSTS, "ADJUSTS")
199 #ifndef FFESYMBOL_attrsADJUSTS
200 #define FFESYMBOL_attrsADJUSTS ((ffesymbolAttrs) 1 << FFESYMBOL_attrADJUSTS)
201 #endif
203 /* Can be anything now, diagnostic has been issued at least once.
205 Valid in UNDERSTOOD state only. Valid in any name space.
207 Can be combined with anything.
211 DEFATTR (FFESYMBOL_attrANY, FFESYMBOL_attrsANY, "ANY")
212 #ifndef FFESYMBOL_attrsANY
213 #define FFESYMBOL_attrsANY ((ffesymbolAttrs) 1 << FFESYMBOL_attrANY)
214 #endif
216 /* Assumed (any) length. Always accompanied by TYPE.
218 Context is a name listed in a CHARACTER statement and given a length
219 specification of (*).
221 Valid in SEEN and UNCERTAIN states. Valid in local name space only.
223 In SEEN state, attributes marked below with "=" are unrelated.
225 In UNCERTAIN state, attributes marked below with "+" are unrelated,
226 attributes marked below with "-" cannot be combined with ANYLEN,
227 and attributes marked below with "!" transition to state UNDERSTOOD
228 instead of acquiring the new attribute. Any other subsequent mentioning
229 of the name transitions to state UNDERSTOOD. UNCERTAIN state is not
230 valid for this attribute in PROGRAM/BLOCKDATA program unit.
232 Cannot be combined with: ACTUALARG=, ADJUSTS+, ANYLEN, COMMON+, EQUIV+,
233 EXTERNAL, INIT+, INTRINSIC+, NAMELIST+, SAVE+, SFARG, SFUNC+.
235 Can be combined with: ADJUSTABLE+, ANY, ANYSIZE+, ARRAY-, DUMMY!, RESULT+,
236 TYPE.
238 Unrelated: CBLOCK, SAVECBLOCK.
240 In PROGRAM/BLOCKDATA, cannot be combined with ARRAY.
244 DEFATTR (FFESYMBOL_attrANYLEN, FFESYMBOL_attrsANYLEN, "ANYLEN")
245 #ifndef FFESYMBOL_attrsANYLEN
246 #define FFESYMBOL_attrsANYLEN ((ffesymbolAttrs) 1 << FFESYMBOL_attrANYLEN)
247 #endif
249 /* Has assumed (any) size. Always accompanied by ARRAY.
251 Context is an ARRAY-attributed name with its last dimension having
252 an upper bound of "*".
254 Valid in SEEN state and local name space only.
256 Cannot be combined with: ADJUSTS, ANYSIZE, COMMON, EQUIV, EXTERNAL,
257 NAMELIST, INIT, INTRINSIC, RESULT, SAVE, SFARG, SFUNC.
259 Can be combined with: ADJUSTABLE, ANY, ANYLEN, ARRAY, TYPE.
261 Must be combined with: DUMMY.
263 Unrelated: ACTUALARG, CBLOCK, SAVECBLOCK.
267 DEFATTR (FFESYMBOL_attrANYSIZE, FFESYMBOL_attrsANYSIZE, "ANYSIZE")
268 #ifndef FFESYMBOL_attrsANYSIZE
269 #define FFESYMBOL_attrsANYSIZE ((ffesymbolAttrs) 1 << FFESYMBOL_attrANYSIZE)
270 #endif
272 /* Array.
274 Context is a name followed by an array declarator, such as in a
275 type-statement-decl, a DIMENSION statement, or a COMMON statement.
277 Valid in SEEN and UNCERTAIN states. Valid in local name space only.
279 In SEEN state, attributes marked below with "=" are unrelated.
281 In UNCERTAIN state, attributes marked below with "+" are unrelated,
282 attributes marked below with "-" cannot be combined with ARRAY,
283 and attributes marked below with "!" transition to state UNDERSTOOD
284 instead of acquiring the new attribute. Any other subsequent mentioning
285 of the name transitions to state UNDERSTOOD. UNCERTAIN state is not
286 valid for this attribute in PROGRAM/BLOCKDATA program unit.
288 Cannot be combined with: ACTUALARG=, ADJUSTS+, ARRAY, EXTERNAL,
289 INTRINSIC+, RESULT+, SFARG, SFUNC+.
291 Can be combined with: ADJUSTABLE+, ANY, ANYLEN-, ANYSIZE+, COMMON+,
292 DUMMY!, EQUIV+, INIT+, NAMELIST+, SAVE+, TYPE.
294 Unrelated: CBLOCK, SAVECBLOCK.
296 In PROGRAM/BLOCKDATA, cannot be combined with ANYLEN.
297 Cannot follow INIT.
301 DEFATTR (FFESYMBOL_attrARRAY, FFESYMBOL_attrsARRAY, "ARRAY")
302 #ifndef FFESYMBOL_attrsARRAY
303 #define FFESYMBOL_attrsARRAY ((ffesymbolAttrs) 1 << FFESYMBOL_attrARRAY)
304 #endif
306 /* COMMON block.
308 Context is a name enclosed in slashes in a COMMON statement.
310 Valid in SEEN state and global name space only.
312 Cannot be combined with:
314 Can be combined with: CBLOCK, SAVECBLOCK.
316 Unrelated: ACTUALARG, ADJUSTABLE, ADJUSTS, ANY, ANYLEN, ANYSIZE,
317 ARRAY, COMMON, DUMMY, EQUIV, EXTERNAL, INIT, INTRINSIC, NAMELIST,
318 RESULT, SAVE, SFARG, SFUNC, TYPE.
322 DEFATTR (FFESYMBOL_attrCBLOCK, FFESYMBOL_attrsCBLOCK, "CBLOCK")
323 #ifndef FFESYMBOL_attrsCBLOCK
324 #define FFESYMBOL_attrsCBLOCK ((ffesymbolAttrs) 1 << FFESYMBOL_attrCBLOCK)
325 #endif
327 /* Placed in COMMON.
329 Context is a name listed in a COMMON statement but not enclosed in
330 slashes.
332 Valid in SEEN state and local name space only.
334 Cannot be combined with: ADJUSTABLE, ANYLEN, ANYSIZE, COMMON, DUMMY,
335 EXTERNAL, INTRINSIC, RESULT, SAVE, SFUNC.
337 Can be combined with: ADJUSTS, ANY, ARRAY, EQUIV, INIT, NAMELIST,
338 SFARG, TYPE.
340 Unrelated: ACTUALARG, CBLOCK, SAVECBLOCK.
344 DEFATTR (FFESYMBOL_attrCOMMON, FFESYMBOL_attrsCOMMON, "COMMON")
345 #ifndef FFESYMBOL_attrsCOMMON
346 #define FFESYMBOL_attrsCOMMON ((ffesymbolAttrs) 1 << FFESYMBOL_attrCOMMON)
347 #endif
349 /* Dummy argument.
351 Context is a name listed in the arglist of FUNCTION, SUBROUTINE, ENTRY.
352 (Statement-function definitions have dummy arguments, but since they're
353 the only possible entities in the statement-function name space, this
354 attribution mechanism isn't used for them.)
356 Valid in SEEN and UNCERTAIN states. Valid in local name space only.
358 In SEEN state, attributes marked below with "=" are unrelated.
360 In UNCERTAIN state, attributes marked below with "+" are unrelated,
361 attributes marked below with "-" cannot be combined with DUMMY,
362 and attributes marked below with "!" transition to state UNDERSTOOD
363 instead of acquiring the new attribute. Any other subsequent mentioning
364 of the name transitions to state UNDERSTOOD. UNCERTAIN state is not
365 valid for this attribute in PROGRAM/BLOCKDATA program unit.
367 Cannot be combined with: ACTUALARG=, COMMON+, EQUIV+, INIT+, INTRINSIC+,
368 NAMELIST+, RESULT+, SAVE+, SFUNC+.
370 Can be combined with: ADJUSTABLE+, ADJUSTS+, ANY, ANYLEN-, ANYSIZE+,
371 ARRAY-, DUMMY, EXTERNAL, SFARG-, TYPE.
373 Unrelated: CBLOCK, SAVECBLOCK.
375 VXT Fortran disallows DUMMY + NAMELIST.
376 F90 allows DUMMY + NAMELIST (with some restrictions), g77 doesn't yet.
380 DEFATTR (FFESYMBOL_attrDUMMY, FFESYMBOL_attrsDUMMY, "DUMMY")
381 #ifndef FFESYMBOL_attrsDUMMY
382 #define FFESYMBOL_attrsDUMMY ((ffesymbolAttrs) 1 << FFESYMBOL_attrDUMMY)
383 #endif
385 /* EQUIVALENCE'd.
387 Context is a name given in an EQUIVALENCE statement.
389 Valid in SEEN state and local name space only.
391 Cannot be combined with: ADJUSTABLE, ANYLEN, ANYSIZE, DUMMY,
392 EXTERNAL, INTRINSIC, RESULT, SFUNC.
394 Can be combined with: ADJUSTS, ANY, ARRAY, COMMON, EQUIV, INIT,
395 NAMELIST, SAVE, SFARG, TYPE.
397 Unrelated: ACTUALARG, CBLOCK, SAVECBLOCK.
401 DEFATTR (FFESYMBOL_attrEQUIV, FFESYMBOL_attrsEQUIV, "EQUIV")
402 #ifndef FFESYMBOL_attrsEQUIV
403 #define FFESYMBOL_attrsEQUIV ((ffesymbolAttrs) 1 << FFESYMBOL_attrEQUIV)
404 #endif
406 /* EXTERNAL.
408 Context is a name listed in an EXTERNAL statement.
410 Valid in SEEN and UNCERTAIN states. Valid in local name space only.
412 In SEEN state, attributes marked below with "=" are unrelated.
414 In UNCERTAIN state, attributes marked below with "+" are unrelated,
415 attributes marked below with "-" cannot be combined with EXTERNAL,
416 and attributes marked below with "!" transition to state UNDERSTOOD
417 instead of acquiring the new attribute. Many other subsequent mentionings
418 of the name transitions to state UNDERSTOOD. UNCERTAIN state is not
419 valid for this attribute in PROGRAM/BLOCKDATA program unit.
421 Cannot be combined with: ADJUSTABLE+, ADJUSTS+, ANYLEN, ANYSIZE+,
422 ARRAY, COMMON+, EQUIV+, EXTERNAL, INIT+, INTRINSIC+, NAMELIST+, RESULT+,
423 SAVE+, SFARG, SFUNC+.
425 Can be combined with: ACTUALARG=, ANY, DUMMY, TYPE.
427 Unrelated: CBLOCK, SAVECBLOCK.
431 DEFATTR (FFESYMBOL_attrEXTERNAL, FFESYMBOL_attrsEXTERNAL, "EXTERNAL")
432 #ifndef FFESYMBOL_attrsEXTERNAL
433 #define FFESYMBOL_attrsEXTERNAL ((ffesymbolAttrs) 1 << FFESYMBOL_attrEXTERNAL)
434 #endif
436 /* Given an initial value.
438 Context is a name listed in a type-def-stmt such as INTEGER or REAL
439 and given an initial value or values. Someday will also include
440 names in DATA statements, which currently immediately exec-transition
441 their targets.
443 Valid in SEEN state and local name space only.
445 Cannot be combined with: ADJUSTABLE, ANYLEN, ANYSIZE, DUMMY, EXTERNAL,
446 INIT, INTRINSIC, RESULT, SFUNC.
448 Can be combined with: ADJUSTS, ANY, ARRAY, COMMON, EQUIV, NAMELIST,
449 SAVE, SFARG, TYPE.
451 Unrelated: ACTUALARG, CBLOCK, SAVECBLOCK.
453 Cannot be followed by ARRAY.
457 DEFATTR (FFESYMBOL_attrINIT, FFESYMBOL_attrsINIT, "INIT")
458 #ifndef FFESYMBOL_attrsINIT
459 #define FFESYMBOL_attrsINIT ((ffesymbolAttrs) 1 << FFESYMBOL_attrINIT)
460 #endif
462 /* INTRINSIC.
464 Context is a name listed in an INTRINSIC statement.
466 Valid in SEEN state and local name space only.
468 Cannot be combined with: ADJUSTABLE, ADJUSTS, ANYLEN, ANYSIZE, ARRAY,
469 COMMON, DUMMY, EQUIV, EXTERNAL, INIT, INTRINSIC, NAMELIST, RESULT,
470 SAVE, SFARG, SFUNC.
472 Can be combined with: ANY, TYPE.
474 Unrelated: ACTUALARG, CBLOCK, SAVECBLOCK.
478 DEFATTR (FFESYMBOL_attrINTRINSIC, FFESYMBOL_attrsINTRINSIC, "INTRINSIC")
479 #ifndef FFESYMBOL_attrsINTRINSIC
480 #define FFESYMBOL_attrsINTRINSIC ((ffesymbolAttrs) 1 << FFESYMBOL_attrINTRINSIC)
481 #endif
483 /* NAMELISTed.
485 Context is a name listed in a NAMELIST statement but not enclosed in
486 slashes.
488 Valid in SEEN state and local name space only.
490 Cannot be combined with: ADJUSTABLE, ANYLEN, ANYSIZE, DUMMY, EXTERNAL,
491 INTRINSIC, RESULT, SFUNC.
493 Can be combined with: ADJUSTS, ANY, ARRAY, COMMON, EQUIV, INIT,
494 NAMELIST, SAVE, SFARG, TYPE.
496 Unrelated: ACTUALARG, CBLOCK, SAVECBLOCK.
500 DEFATTR (FFESYMBOL_attrNAMELIST, FFESYMBOL_attrsNAMELIST, "NAMELIST")
501 #ifndef FFESYMBOL_attrsNAMELIST
502 #define FFESYMBOL_attrsNAMELIST ((ffesymbolAttrs) 1 << FFESYMBOL_attrNAMELIST)
503 #endif
505 /* RESULT of a function.
507 Context is name in RESULT() clause in FUNCTION or ENTRY statement, or
508 the name in a FUNCTION or ENTRY statement (within a FUNCTION subprogram)
509 that has no RESULT() clause.
511 Valid in SEEN state and local name space only.
513 Cannot be combined with: ADJUSTABLE, ADJUSTS, ANYSIZE, ARRAY, COMMON,
514 DUMMY, EQUIV, EXTERNAL, INIT, INTRINSIC, NAMELIST, RESULT, SAVE, SFUNC.
516 Can be combined with: ANY, ANYLEN, SFARG, TYPE.
518 Unrelated: ACTUALARG, CBLOCK, SAVECBLOCK.
520 Cannot be preceded by SFARG.
524 DEFATTR (FFESYMBOL_attrRESULT, FFESYMBOL_attrsRESULT, "RESULT")
525 #ifndef FFESYMBOL_attrsRESULT
526 #define FFESYMBOL_attrsRESULT ((ffesymbolAttrs) 1 << FFESYMBOL_attrRESULT)
527 #endif
529 /* SAVEd (not enclosed in slashes).
531 Context is a name listed in a SAVE statement but not enclosed in slashes.
533 Valid in SEEN state and local name space only.
535 Cannot be combined with: ADUSTABLE, ADJUSTS, ANYLEN, ANYSIZE, COMMON,
536 DUMMY, EXTERNAL, INTRINSIC, RESULT, SAVE, SFUNC.
538 Can be combined with: ANY, ARRAY, EQUIV, INIT, NAMELIST,
539 SFARG, TYPE.
541 Unrelated: ACTUALARG, CBLOCK, SAVECBLOCK.
545 DEFATTR (FFESYMBOL_attrSAVE, FFESYMBOL_attrsSAVE, "SAVE")
546 #ifndef FFESYMBOL_attrsSAVE
547 #define FFESYMBOL_attrsSAVE ((ffesymbolAttrs) 1 << FFESYMBOL_attrSAVE)
548 #endif
550 /* SAVEd (enclosed in slashes).
552 Context is a name enclosed in slashes in a SAVE statement.
554 Valid in SEEN state and global name space only.
556 Cannot be combined with: SAVECBLOCK.
558 Can be combined with: CBLOCK.
560 Unrelated: ACTUALARG, ADJUSTABLE, ADJUSTS, ANY, ANYLEN, ANYSIZE,
561 ARRAY, COMMON, DUMMY, EQUIV, EXTERNAL, INIT, INTRINSIC, NAMELIST,
562 RESULT, SAVE, SFARG, SFUNC, TYPE.
566 DEFATTR (FFESYMBOL_attrSAVECBLOCK, FFESYMBOL_attrsSAVECBLOCK, "SAVECBLOCK")
567 #ifndef FFESYMBOL_attrsSAVECBLOCK
568 #define FFESYMBOL_attrsSAVECBLOCK ((ffesymbolAttrs) 1 << FFESYMBOL_attrSAVECBLOCK)
569 #endif
571 /* Name used as a statement function arg or DATA implied-DO iterator.
573 Context is a name listed in the arglist of statement-function-definition
574 or as the iterator in an implied-DO construct in a DATA statement.
576 Valid in SEEN and UNCERTAIN states. Valid in local name space only.
578 In SEEN state, attributes marked below with "=" are unrelated.
580 In UNCERTAIN state, attributes marked below with "+" are unrelated,
581 attributes marked below with "-" cannot be combined with SFARG,
582 and attributes marked below with "!" transition to state UNDERSTOOD
583 instead of acquiring the new attribute. Any other subsequent mentioning
584 of the name transitions to state UNDERSTOOD. UNCERTAIN state is not
585 valid for this attribute in PROGRAM/BLOCKDATA program unit.
587 Cannot be combined with: ACTUALARG=, ADJUSTABLE+, ANYLEN, ANYSIZE+,
588 ARRAY, EXTERNAL, INTRINSIC+, SFUNC+.
590 Can be combined with: ADJUSTS+, ANY, COMMON+, DUMMY!, EQUIV+, INIT+,
591 NAMELIST+, RESULT+, SAVE+, SFARG, TYPE.
593 Unrelated: CBLOCK, SAVECBLOCK.
595 Cannot be followed by RESULT.
599 DEFATTR (FFESYMBOL_attrSFARG, FFESYMBOL_attrsSFARG, "SFARG")
600 #ifndef FFESYMBOL_attrsSFARG
601 #define FFESYMBOL_attrsSFARG ((ffesymbolAttrs) 1 << FFESYMBOL_attrSFARG)
602 #endif
604 /* Statement function name.
606 Context is a statement-function-definition statement, the name being
607 defined.
609 Valid in SEEN state and local name space only.
611 Cannot be combined with: ADJUSTABLE, ADJUSTS, ANYLEN, ANYSIZE, ARRAY,
612 COMMON, DUMMY, EQUIV, EXTERNAL, INIT, INTRINSIC, NAMELIST, RESULT,
613 SAVE, SFARG, SFUNC.
615 Can be combined with: ANY, TYPE.
617 Unrelated: ACTUALARG, CBLOCK, SAVECBLOCK.
621 DEFATTR (FFESYMBOL_attrSFUNC, FFESYMBOL_attrsSFUNC, "SFUNC")
622 #ifndef FFESYMBOL_attrsSFUNC
623 #define FFESYMBOL_attrsSFUNC ((ffesymbolAttrs) 1 << FFESYMBOL_attrSFUNC)
624 #endif
626 /* Explicitly typed.
628 Context is a name listed in a type-def-stmt such as INTEGER or REAL.
630 Valid in SEEN and UNCERTAIN states. Valid in local name space only.
632 In SEEN state, attributes marked below with "=" are unrelated.
634 In UNCERTAIN state, attributes marked below with "+" are unrelated,
635 attributes marked below with "-" cannot be combined with TYPE,
636 and attributes marked below with "!" transition to state UNDERSTOOD
637 instead of acquiring the new attribute. Many other subsequent mentionings
638 of the name transitions to state UNDERSTOOD. UNCERTAIN state is not
639 valid for this attribute in PROGRAM/BLOCKDATA program unit.
641 Cannot be combined with: ACTUALARG=, TYPE.
643 Can be combined with: ADJUSTABLE+, ADJUSTS+, ANY, ANYLEN, ANYSIZE+,
644 ARRAY, COMMON+, DUMMY, EQUIV+, EXTERNAL, INIT+, INTRINSIC+, NAMELIST+,
645 RESULT+, SAVE+, SFARG, SFUNC+.
647 Unrelated: CBLOCK, SAVECBLOCK.
651 DEFATTR (FFESYMBOL_attrTYPE, FFESYMBOL_attrsTYPE, "TYPE")
652 #ifndef FFESYMBOL_attrsTYPE
653 #define FFESYMBOL_attrsTYPE ((ffesymbolAttrs) 1 << FFESYMBOL_attrTYPE)
654 #endif