URL
https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk
Subversion Repositories openrisc_2011-10-31
Compare Revisions
- This comparison shows the changes necessary to convert path
/openrisc/trunk/gnu-src/gcc-4.5.1/gcc/fortran
- from Rev 285 to Rev 378
- ↔ Reverse comparison
Rev 285 → Rev 378
/intrinsic.c
112,6 → 112,8
sym->attr.flavor = FL_PROCEDURE; |
sym->attr.proc = PROC_INTRINSIC; |
|
gfc_commit_symbol (sym); |
|
return sym; |
} |
|
/symbol.c
3795,6 → 3795,9
formal_arg = gfc_get_formal_arglist (); |
/* Add arg to list of formal args (the CPTR arg). */ |
add_formal_arg (head, tail, formal_arg, param_sym); |
|
/* Validate changes. */ |
gfc_commit_symbol (param_sym); |
} |
|
|
3840,6 → 3843,9
formal_arg = gfc_get_formal_arglist (); |
/* Add arg to list of formal args. */ |
add_formal_arg (head, tail, formal_arg, param_sym); |
|
/* Validate changes. */ |
gfc_commit_symbol (param_sym); |
} |
|
|
3911,6 → 3917,9
formal_arg = gfc_get_formal_arglist (); |
/* Add arg to list of formal args. */ |
add_formal_arg (head, tail, formal_arg, param_sym); |
|
/* Validate changes. */ |
gfc_commit_symbol (param_sym); |
} |
|
|
3973,6 → 3982,9
|
/* Add arg to list of formal args. */ |
add_formal_arg (&head, &tail, formal_arg, formal_arg->sym); |
|
/* Validate changes. */ |
gfc_commit_symbol (formal_arg->sym); |
} |
|
/* Add the interface to the symbol. */ |
4030,6 → 4042,9
|
/* Add arg to list of formal args. */ |
add_formal_arg (&head, &tail, formal_arg, formal_arg->sym); |
|
/* Validate changes. */ |
gfc_commit_symbol (formal_arg->sym); |
} |
|
/* Add the interface to the symbol. */ |
4083,6 → 4098,9
|
/* Add arg to list of formal args. */ |
add_formal_arg (&head, &tail, formal_arg, formal_arg->sym); |
|
/* Validate changes. */ |
gfc_commit_symbol (formal_arg->sym); |
} |
|
/* Add the interface to the symbol. */ |
4465,6 → 4483,7
default: |
gcc_unreachable (); |
} |
gfc_commit_symbol (tmp_sym); |
} |
|
|
4837,10 → 4856,12
c->ts.u.derived = vtype; |
c->initializer->expr_type = EXPR_NULL; |
} |
gfc_commit_symbol (vtype); |
} |
vtab->ts.u.derived = vtype; |
|
vtab->value = gfc_default_initializer (&vtab->ts); |
gfc_commit_symbol (vtab); |
} |
} |
|
/gfortran.texi
2639,9 → 2639,6
User-specified alignment rules for structures. |
|
@item |
Flag to generate @code{Makefile} info. |
|
@item |
Automatically extend single precision constants to double. |
|
@item |
/cpp.c
35,6 → 35,7
#include "../../libcpp/internal.h" |
#include "cpp.h" |
#include "incpath.h" |
#include "mkdeps.h" |
|
#ifndef TARGET_OS_CPP_BUILTINS |
# define TARGET_OS_CPP_BUILTINS() |
84,6 → 85,12
int no_predefined; /* -undef */ |
int standard_include_paths; /* -nostdinc */ |
int verbose; /* -v */ |
int deps; /* -M */ |
int deps_skip_system; /* -MM */ |
const char *deps_filename; /* -M[M]D */ |
const char *deps_filename_user; /* -MF <arg> */ |
int deps_missing_are_generated; /* -MG */ |
int deps_phony; /* -MP */ |
|
const char *multilib; /* -imultilib <dir> */ |
const char *prefix; /* -iprefix <dir> */ |
270,6 → 277,26
return gfc_cpp_option.preprocess_only; |
} |
|
bool |
gfc_cpp_makedep (void) |
{ |
return gfc_cpp_option.deps; |
} |
|
void |
gfc_cpp_add_dep (const char *name, bool system) |
{ |
if (!gfc_cpp_option.deps_skip_system || !system) |
deps_add_dep (cpp_get_deps (cpp_in), name); |
} |
|
void |
gfc_cpp_add_target (const char *name) |
{ |
deps_add_target (cpp_get_deps (cpp_in), name, 0); |
} |
|
|
const char * |
gfc_cpp_temporary_file (void) |
{ |
299,6 → 326,12
gfc_cpp_option.no_predefined = 0; |
gfc_cpp_option.standard_include_paths = 1; |
gfc_cpp_option.verbose = 0; |
gfc_cpp_option.deps = 0; |
gfc_cpp_option.deps_skip_system = 0; |
gfc_cpp_option.deps_phony = 0; |
gfc_cpp_option.deps_missing_are_generated = 0; |
gfc_cpp_option.deps_filename = NULL; |
gfc_cpp_option.deps_filename_user = NULL; |
|
gfc_cpp_option.multilib = NULL; |
gfc_cpp_option.prefix = NULL; |
414,6 → 447,43
gfc_cpp_option.print_include_names = 1; |
break; |
|
case OPT_MM: |
gfc_cpp_option.deps_skip_system = 1; |
/* fall through */ |
|
case OPT_M: |
gfc_cpp_option.deps = 1; |
break; |
|
case OPT_MMD: |
gfc_cpp_option.deps_skip_system = 1; |
/* fall through */ |
|
case OPT_MD: |
gfc_cpp_option.deps = 1; |
gfc_cpp_option.deps_filename = arg; |
break; |
|
case OPT_MF: |
/* If specified multiple times, last one wins. */ |
gfc_cpp_option.deps_filename_user = arg; |
break; |
|
case OPT_MG: |
gfc_cpp_option.deps_missing_are_generated = 1; |
break; |
|
case OPT_MP: |
gfc_cpp_option.deps_phony = 1; |
break; |
|
case OPT_MQ: |
case OPT_MT: |
gfc_cpp_option.deferred_opt[gfc_cpp_option.deferred_opt_count].code = code; |
gfc_cpp_option.deferred_opt[gfc_cpp_option.deferred_opt_count].arg = arg; |
gfc_cpp_option.deferred_opt_count++; |
break; |
|
case OPT_P: |
gfc_cpp_option.no_line_commands = 1; |
break; |
430,16 → 500,17
an error. */ |
if (!gfc_cpp_enabled () |
&& (gfc_cpp_preprocess_only () |
|| !gfc_cpp_option.discard_comments |
|| !gfc_cpp_option.discard_comments_in_macro_exp |
|| gfc_cpp_option.print_include_names |
|| gfc_cpp_option.no_line_commands |
|| gfc_cpp_option.dump_macros |
|| gfc_cpp_option.dump_includes)) |
|| gfc_cpp_makedep () |
|| !gfc_cpp_option.discard_comments |
|| !gfc_cpp_option.discard_comments_in_macro_exp |
|| gfc_cpp_option.print_include_names |
|| gfc_cpp_option.no_line_commands |
|| gfc_cpp_option.dump_macros |
|| gfc_cpp_option.dump_includes)) |
gfc_fatal_error("To enable preprocessing, use -cpp"); |
|
cpp_in = cpp_create_reader (CLK_GNUC89, NULL, line_table); |
if (!gfc_cpp_enabled()) |
if (!gfc_cpp_enabled ()) |
return; |
|
gcc_assert (cpp_in); |
462,6 → 533,17
cpp_option->print_include_names = gfc_cpp_option.print_include_names; |
cpp_option->preprocessed = gfc_option.flag_preprocessed; |
|
if (gfc_cpp_makedep ()) |
{ |
cpp_option->deps.style = DEPS_USER; |
cpp_option->deps.phony_targets = gfc_cpp_option.deps_phony; |
cpp_option->deps.missing_files = gfc_cpp_option.deps_missing_are_generated; |
|
/* -MF <arg> overrides -M[M]D. */ |
if (gfc_cpp_option.deps_filename_user) |
gfc_cpp_option.deps_filename = gfc_cpp_option.deps_filename_user; |
} |
|
if (gfc_cpp_option.working_directory == -1) |
gfc_cpp_option.working_directory = (debug_info_level != DINFO_LEVEL_NONE); |
|
571,6 → 653,9
else |
cpp_assert (cpp_in, opt->arg); |
} |
else if (opt->code == OPT_MT || opt->code == OPT_MQ) |
deps_add_target (cpp_get_deps (cpp_in), |
opt->arg, opt->code == OPT_MQ); |
} |
|
if (gfc_cpp_option.working_directory |
614,14 → 699,27
if (!gfc_cpp_enabled ()) |
return; |
|
/* TODO: if dependency tracking was enabled, call |
cpp_finish() here to write dependencies. |
gcc_assert (cpp_in); |
|
Use cpp_get_deps() to access the current source's |
dependencies during parsing. Add dependencies using |
the mkdeps-interface (defined in libcpp). */ |
if (gfc_cpp_makedep ()) |
{ |
if (gfc_cpp_option.deps_filename) |
{ |
FILE *f = fopen (gfc_cpp_option.deps_filename, "w"); |
if (f) |
{ |
cpp_finish (cpp_in, f); |
fclose (f); |
} |
else |
gfc_fatal_error ("opening output file %s: %s", |
gfc_cpp_option.deps_filename, |
xstrerror (errno)); |
} |
else |
cpp_finish (cpp_in, stdout); |
} |
|
gcc_assert (cpp_in); |
cpp_undef_all (cpp_in); |
cpp_clear_file_cache (cpp_in); |
} |
/cpp.h
24,6 → 24,12
|
bool gfc_cpp_preprocess_only (void); |
|
bool gfc_cpp_makedep (void); |
|
void gfc_cpp_add_dep (const char *name, bool system); |
|
void gfc_cpp_add_target (const char *name); |
|
const char *gfc_cpp_temporary_file (void); |
|
|
/gfortran.h
1326,7 → 1326,7
struct gfc_code *code; |
|
/* Points to the equivalences set up in this namespace. */ |
struct gfc_equiv *equiv; |
struct gfc_equiv *equiv, *old_equiv; |
|
/* Points to the equivalence groups produced by trans_common. */ |
struct gfc_equiv_list *equiv_lists; |
2569,6 → 2569,7
void gfc_free_alloc_list (gfc_alloc *); |
void gfc_free_namelist (gfc_namelist *); |
void gfc_free_equiv (gfc_equiv *); |
void gfc_free_equiv_until (gfc_equiv *, gfc_equiv *); |
void gfc_free_data (gfc_data *); |
void gfc_free_case_list (gfc_case *); |
|
/lang.opt
56,6 → 56,42
Fortran Joined Separate |
-J<directory> Put MODULE files in 'directory' |
|
M |
Fortran |
; Documented in C |
|
MD |
Fortran Separate |
; Documented in C |
|
MF |
Fortran Joined Separate |
; Documented in C |
|
MG |
Fortran |
; Documented in C |
|
MM |
Fortran |
; Documented in C |
|
MMD |
Fortran Separate |
; Documented in C |
|
MP |
Fortran |
; Documented in C |
|
MT |
Fortran Joined Separate |
; Documented in C |
|
MQ |
Fortran Joined Separate |
; Documented in C |
|
P |
Fortran |
; Documented in C |
/invoke.texi
148,8 → 148,7
|
@item Directory Options |
@xref{Directory Options,,Options for directory search}. |
@gccoptlist{-I@var{dir} -J@var{dir} -M@var{dir} @gol |
-fintrinsic-modules-path @var{dir}} |
@gccoptlist{-I@var{dir} -J@var{dir} -fintrinsic-modules-path @var{dir}} |
|
@item Link Options |
@xref{Link Options,,Options for influencing the linking step}. |
949,7 → 948,6
@option{-I} option. |
|
@item -J@var{dir} |
@item -M@var{dir} |
@opindex @code{J}@var{dir} |
@opindex @code{M}@var{dir} |
@cindex paths, search |
960,8 → 958,6
|
The default is the current directory. |
|
@option{-M} is deprecated to avoid conflicts with existing GCC options. |
|
@item -fintrinsic-modules-path @var{dir} |
@opindex @code{fintrinsic-modules-path} @var{dir} |
@cindex paths, search |
/module.c
73,6 → 73,7
#include "match.h" |
#include "parse.h" /* FIXME */ |
#include "md5.h" |
#include "cpp.h" |
|
#define MODULE_EXTENSION ".mod" |
|
5100,6 → 5101,9
return; |
} |
|
if (gfc_cpp_makedep ()) |
gfc_cpp_add_target (filename); |
|
/* Write the module to the temporary file. */ |
module_fp = fopen (filename_tmp, "w"); |
if (module_fp == NULL) |
/trans.c
1041,7 → 1041,30
input_location = loc->lb->location; |
} |
|
/* Annotate statement or statement list T with location LOC. */ |
|
static void |
gfc_annotate_with_location (tree t, location_t loc) |
{ |
if (TREE_CODE (t) == STATEMENT_LIST) |
{ |
tree_stmt_iterator i; |
|
for (i = tsi_start (t); !tsi_end_p (i); tsi_next (&i)) |
gfc_annotate_with_location (tsi_stmt (i), loc); |
return; |
} |
if (TREE_CODE (t) == COMPOUND_EXPR) |
{ |
gfc_annotate_with_location (TREE_OPERAND (t, 0), loc); |
gfc_annotate_with_location (TREE_OPERAND (t, 1), loc); |
} |
if (TREE_CODE (t) == LABEL_EXPR || !TREE_SIDE_EFFECTS (t)) |
return; |
if (CAN_HAVE_LOCATION_P (t) && ! EXPR_HAS_LOCATION (t)) |
SET_EXPR_LOCATION (t, loc); |
} |
|
/* Translate an executable statement. The tree cond is used by gfc_trans_do. |
This static function is wrapped by gfc_trans_code_cond and |
gfc_trans_code. */ |
1067,6 → 1090,8
gfc_add_expr_to_block (&block, res); |
} |
|
gfc_set_backend_locus (&code->loc); |
|
switch (code->op) |
{ |
case EXEC_NOP: |
1281,9 → 1306,8
|
if (res != NULL_TREE && ! IS_EMPTY_STMT (res)) |
{ |
if (TREE_CODE (res) != STATEMENT_LIST) |
SET_EXPR_LOCATION (res, input_location); |
|
gfc_annotate_with_location (res, input_location); |
|
/* Add the new statement to the block. */ |
gfc_add_expr_to_block (&block, res); |
} |
/scanner.c
390,7 → 390,8
|
|
static FILE * |
open_included_file (const char *name, gfc_directorylist *list, bool module) |
open_included_file (const char *name, gfc_directorylist *list, |
bool module, bool system) |
{ |
char *fullname; |
gfc_directorylist *p; |
407,7 → 408,12
|
f = gfc_open_file (fullname); |
if (f != NULL) |
return f; |
{ |
if (gfc_cpp_makedep ()) |
gfc_cpp_add_dep (fullname, system); |
|
return f; |
} |
} |
|
return NULL; |
421,28 → 427,37
FILE * |
gfc_open_included_file (const char *name, bool include_cwd, bool module) |
{ |
FILE *f; |
FILE *f = NULL; |
|
if (IS_ABSOLUTE_PATH (name)) |
return gfc_open_file (name); |
|
if (include_cwd) |
if (IS_ABSOLUTE_PATH (name) || include_cwd) |
{ |
f = gfc_open_file (name); |
if (f != NULL) |
return f; |
if (f && gfc_cpp_makedep ()) |
gfc_cpp_add_dep (name, false); |
} |
|
return open_included_file (name, include_dirs, module); |
if (!f) |
f = open_included_file (name, include_dirs, module, false); |
|
return f; |
} |
|
FILE * |
gfc_open_intrinsic_module (const char *name) |
{ |
FILE *f = NULL; |
|
if (IS_ABSOLUTE_PATH (name)) |
return gfc_open_file (name); |
{ |
f = gfc_open_file (name); |
if (f && gfc_cpp_makedep ()) |
gfc_cpp_add_dep (name, true); |
} |
|
return open_included_file (name, intrinsic_modules_dirs, true); |
if (!f) |
f = open_included_file (name, intrinsic_modules_dirs, true, true); |
|
return f; |
} |
|
|
/gfortranspec.c
415,36 → 415,6
continue; |
} |
|
if ((argv[i][0] == '-') && (argv[i][1] == 'M')) |
{ |
char *p; |
|
fprintf (stderr, _("Warning: Using -M <directory> is deprecated, " |
"use -J instead\n")); |
if (argv[i][2] == '\0') |
{ |
if (i+1 < argc) |
{ |
p = XNEWVEC (char, strlen (argv[i + 1]) + 3); |
p[0] = '-'; |
p[1] = 'J'; |
strcpy (&p[2], argv[i + 1]); |
i++; |
} |
else |
fatal ("argument to '%s' missing", argv[i]); |
} |
else |
{ |
p = XNEWVEC (char, strlen (argv[i]) + 1); |
p[0] = '-'; |
p[1] = 'J'; |
strcpy (&p[2], argv[i] + 2); |
} |
append_arg (p); |
continue; |
} |
|
if ((argv[i][0] == '-') && (argv[i][1] != 'l')) |
{ |
/* Not a filename or library. */ |
/lang-specs.h
28,7 → 28,7
%{O*} %{undef}" |
|
/* Options that f951 should know about, even if not preprocessing. */ |
#define CPP_FORWARD_OPTIONS "%{i*} %{I*}" |
#define CPP_FORWARD_OPTIONS "%{i*} %{I*} %{M*}" |
|
#define F951_CPP_OPTIONS "%{!nocpp: -cpp %g.f90 %{E} %(cpp_unique_options) \ |
%{E|M|MM:%(cpp_debug_options) " CPP_ONLY_OPTIONS \ |
/trans-decl.c
2252,11 → 2252,11
IDENTIFIER_POINTER (DECL_NAME (this_function_decl))); |
|
if (!sym->attr.mixed_entry_master && sym->attr.function) |
decl = build_decl (input_location, |
decl = build_decl (DECL_SOURCE_LOCATION (this_function_decl), |
VAR_DECL, get_identifier (name), |
gfc_sym_type (sym)); |
else |
decl = build_decl (input_location, |
decl = build_decl (DECL_SOURCE_LOCATION (this_function_decl), |
VAR_DECL, get_identifier (name), |
TREE_TYPE (TREE_TYPE (this_function_decl))); |
DECL_ARTIFICIAL (decl) = 1; |
/match.c
2303,7 → 2303,7
gfc_match_decl_type_spec() from decl.c, with the following exceptions: |
It only includes the intrinsic types from the Fortran 2003 standard |
(thus, neither BYTE nor forms like REAL*4 are allowed). Additionally, |
the implicit_flag is not needed, so it was removed. Derived types are |
the implicit_flag is not needed, so it was removed. Derived types are |
identified by their name alone. */ |
|
static match |
2313,8 → 2313,30
locus old_locus; |
|
gfc_clear_ts (ts); |
gfc_gobble_whitespace(); |
old_locus = gfc_current_locus; |
|
m = match_derived_type_spec (ts); |
if (m == MATCH_YES) |
{ |
old_locus = gfc_current_locus; |
if (gfc_match (" :: ") != MATCH_YES) |
return MATCH_ERROR; |
gfc_current_locus = old_locus; |
/* Enfore F03:C401. */ |
if (ts->u.derived->attr.abstract) |
{ |
gfc_error ("Derived type '%s' at %L may not be ABSTRACT", |
ts->u.derived->name, &old_locus); |
return MATCH_ERROR; |
} |
return MATCH_YES; |
} |
else if (m == MATCH_ERROR && gfc_match (" :: ") == MATCH_YES) |
return MATCH_ERROR; |
|
gfc_current_locus = old_locus; |
|
if (gfc_match ("integer") == MATCH_YES) |
{ |
ts->type = BT_INTEGER; |
2356,25 → 2378,6
goto kind_selector; |
} |
|
m = match_derived_type_spec (ts); |
if (m == MATCH_YES) |
{ |
old_locus = gfc_current_locus; |
if (gfc_match (" :: ") != MATCH_YES) |
return MATCH_ERROR; |
gfc_current_locus = old_locus; |
/* Enfore F03:C401. */ |
if (ts->u.derived->attr.abstract) |
{ |
gfc_error ("Derived type '%s' at %L may not be ABSTRACT", |
ts->u.derived->name, &old_locus); |
return MATCH_ERROR; |
} |
return MATCH_YES; |
} |
else if (m == MATCH_ERROR && gfc_match (" :: ") == MATCH_YES) |
return MATCH_ERROR; |
|
/* If a type is not matched, simply return MATCH_NO. */ |
gfc_current_locus = old_locus; |
return MATCH_NO; |
3580,18 → 3583,25
do this. */ |
|
void |
gfc_free_equiv (gfc_equiv *eq) |
gfc_free_equiv_until (gfc_equiv *eq, gfc_equiv *stop) |
{ |
if (eq == NULL) |
if (eq == stop) |
return; |
|
gfc_free_equiv (eq->eq); |
gfc_free_equiv (eq->next); |
gfc_free_equiv_until (eq->next, stop); |
gfc_free_expr (eq->expr); |
gfc_free (eq); |
} |
|
|
void |
gfc_free_equiv (gfc_equiv *eq) |
{ |
gfc_free_equiv_until (eq, NULL); |
} |
|
|
/* Match an EQUIVALENCE statement. */ |
|
match |
/parse.c
876,6 → 876,7
gfc_new_block = NULL; |
|
gfc_current_ns->old_cl_list = gfc_current_ns->cl_list; |
gfc_current_ns->old_equiv = gfc_current_ns->equiv; |
for (;;) |
{ |
gfc_statement_label = NULL; |
1608,6 → 1609,9
gfc_free_charlen (gfc_current_ns->cl_list, gfc_current_ns->old_cl_list); |
gfc_current_ns->cl_list = gfc_current_ns->old_cl_list; |
|
gfc_free_equiv_until (gfc_current_ns->equiv, gfc_current_ns->old_equiv); |
gfc_current_ns->equiv = gfc_current_ns->old_equiv; |
|
gfc_new_block = NULL; |
gfc_undo_symbols (); |
gfc_clear_warning (); |
1841,13 → 1845,12
|
case ST_DATA_DECL: |
gfc_error ("Components in TYPE at %C must precede CONTAINS"); |
error_flag = true; |
break; |
goto error; |
|
case ST_PROCEDURE: |
if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: Type-bound" |
" procedure at %C") == FAILURE) |
error_flag = true; |
goto error; |
|
accept_statement (ST_PROCEDURE); |
seen_comps = true; |
1856,7 → 1859,7
case ST_GENERIC: |
if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: GENERIC binding" |
" at %C") == FAILURE) |
error_flag = true; |
goto error; |
|
accept_statement (ST_GENERIC); |
seen_comps = true; |
1866,7 → 1869,7
if (gfc_notify_std (GFC_STD_F2003, |
"Fortran 2003: FINAL procedure declaration" |
" at %C") == FAILURE) |
error_flag = true; |
goto error; |
|
accept_statement (ST_FINAL); |
seen_comps = true; |
1879,7 → 1882,7
&& (gfc_notify_std (GFC_STD_F2008, "Fortran 2008: Derived type " |
"definition at %C with empty CONTAINS " |
"section") == FAILURE)) |
error_flag = true; |
goto error; |
|
/* ST_END_TYPE is accepted by parse_derived after return. */ |
break; |
1889,8 → 1892,7
{ |
gfc_error ("PRIVATE statement in TYPE at %C must be inside " |
"a MODULE"); |
error_flag = true; |
break; |
goto error; |
} |
|
if (seen_comps) |
1897,14 → 1899,13
{ |
gfc_error ("PRIVATE statement at %C must precede procedure" |
" bindings"); |
error_flag = true; |
break; |
goto error; |
} |
|
if (seen_private) |
{ |
gfc_error ("Duplicate PRIVATE statement at %C"); |
error_flag = true; |
goto error; |
} |
|
accept_statement (ST_PRIVATE); |
1914,18 → 1915,22
|
case ST_SEQUENCE: |
gfc_error ("SEQUENCE statement at %C must precede CONTAINS"); |
error_flag = true; |
break; |
goto error; |
|
case ST_CONTAINS: |
gfc_error ("Already inside a CONTAINS block at %C"); |
error_flag = true; |
break; |
goto error; |
|
default: |
unexpected_statement (st); |
break; |
} |
|
continue; |
|
error: |
error_flag = true; |
reject_statement (); |
} |
|
pop_state (); |
2361,7 → 2366,10
gfc_commit_symbols (); |
} |
else |
gfc_error_check (); |
{ |
gfc_error_check (); |
gfc_undo_symbols (); |
} |
|
gfc_current_locus =loc; |
return m; |
2433,6 → 2441,7
case ST_STATEMENT_FUNCTION: |
gfc_error ("%s statement is not allowed inside of BLOCK at %C", |
gfc_ascii_statement (st)); |
reject_statement (); |
break; |
|
default: |
2519,6 → 2528,7
{ |
gfc_error ("%s statement must appear in a MODULE", |
gfc_ascii_statement (st)); |
reject_statement (); |
break; |
} |
|
2526,6 → 2536,7
{ |
gfc_error ("%s statement at %C follows another accessibility " |
"specification", gfc_ascii_statement (st)); |
reject_statement (); |
break; |
} |
|
3822,6 → 3833,7
{ |
gfc_error ("CONTAINS statement at %C is already in a contained " |
"program unit"); |
reject_statement (); |
st = next_statement (); |
goto loop; |
} |
/intrinsic.texi
44,7 → 44,7
* @code{ACCESS}: ACCESS, Checks file access modes |
* @code{ACHAR}: ACHAR, Character in @acronym{ASCII} collating sequence |
* @code{ACOS}: ACOS, Arccosine function |
* @code{ACOSH}: ACOSH, Hyperbolic arccosine function |
* @code{ACOSH}: ACOSH, Inverse hyperbolic cosine function |
* @code{ADJUSTL}: ADJUSTL, Left adjust a string |
* @code{ADJUSTR}: ADJUSTR, Right adjust a string |
* @code{AIMAG}: AIMAG, Imaginary part of complex number |
56,11 → 56,11
* @code{ANINT}: ANINT, Nearest whole number |
* @code{ANY}: ANY, Determine if any values are true |
* @code{ASIN}: ASIN, Arcsine function |
* @code{ASINH}: ASINH, Hyperbolic arcsine function |
* @code{ASINH}: ASINH, Inverse hyperbolic sine function |
* @code{ASSOCIATED}: ASSOCIATED, Status of a pointer or pointer/target pair |
* @code{ATAN}: ATAN, Arctangent function |
* @code{ATAN2}: ATAN2, Arctangent function |
* @code{ATANH}: ATANH, Hyperbolic arctangent function |
* @code{ATANH}: ATANH, Inverse hyperbolic tangent function |
* @code{BESSEL_J0}: BESSEL_J0, Bessel function of the first kind of order 0 |
* @code{BESSEL_J1}: BESSEL_J1, Bessel function of the first kind of order 1 |
* @code{BESSEL_JN}: BESSEL_JN, Bessel function of the first kind |
572,18 → 572,17
|
|
@node ACOSH |
@section @code{ACOSH} --- Hyperbolic arccosine function |
@section @code{ACOSH} --- Inverse hyperbolic cosine function |
@fnindex ACOSH |
@fnindex DACOSH |
@cindex area hyperbolic cosine |
@cindex hyperbolic arccosine |
@cindex inverse hyperbolic cosine |
@cindex hyperbolic function, cosine, inverse |
@cindex cosine, hyperbolic, inverse |
|
@table @asis |
@item @emph{Description}: |
@code{ACOSH(X)} computes the hyperbolic arccosine of @var{X} (inverse of |
@code{COSH(X)}). |
@code{ACOSH(X)} computes the inverse hyperbolic cosine of @var{X}. |
|
@item @emph{Standard}: |
Fortran 2008 and later |
1213,17 → 1212,17
|
|
@node ASINH |
@section @code{ASINH} --- Hyperbolic arcsine function |
@section @code{ASINH} --- Inverse hyperbolic sine function |
@fnindex ASINH |
@fnindex DASINH |
@cindex area hyperbolic sine |
@cindex hyperbolic arcsine |
@cindex inverse hyperbolic sine |
@cindex hyperbolic function, sine, inverse |
@cindex sine, hyperbolic, inverse |
|
@table @asis |
@item @emph{Description}: |
@code{ASINH(X)} computes the hyperbolic arcsine of @var{X} (inverse of @code{SINH(X)}). |
@code{ASINH(X)} computes the inverse hyperbolic sine of @var{X}. |
|
@item @emph{Standard}: |
Fortran 2008 and later |
1455,18 → 1454,17
|
|
@node ATANH |
@section @code{ATANH} --- Hyperbolic arctangent function |
@fnindex ASINH |
@fnindex DASINH |
@section @code{ATANH} --- Inverse hyperbolic tangent function |
@fnindex ATANH |
@fnindex DATANH |
@cindex area hyperbolic tangent |
@cindex hyperbolic arctangent |
@cindex inverse hyperbolic tangent |
@cindex hyperbolic function, tangent, inverse |
@cindex tangent, hyperbolic, inverse |
|
@table @asis |
@item @emph{Description}: |
@code{ATANH(X)} computes the hyperbolic arctangent of @var{X} (inverse |
of @code{TANH(X)}). |
@code{ATANH(X)} computes the inverse hyperbolic tangent of @var{X}. |
|
@item @emph{Standard}: |
Fortran 2008 and later |