Commit Graph

62 Commits

Author SHA1 Message Date
Paul Thomas
d8d8121add re PR fortran/29758 (Runtime segfault in RESHAPE with insufficient elements in SOURCE)
2006-11-10 Paul Thomas <pault@gcc.gnu.org>

   PR fortran/29758
   * check.c (gfc_check_reshape): Check that there are enough
   elements in the source array as to be able to fill an array
   defined by shape, when pad is absent.


2006-11-10 Paul Thomas <pault@gcc.gnu.org>

   PR fortran/29758
   * gfortran.dg/reshape_source_size_1.f90: New test.

From-SVN: r118664
2006-11-10 21:06:42 +00:00
Brooks Moses
f5bf550c9d * check.c (same_type_check): Typo fix in comment.
From-SVN: r118647
2006-11-09 19:38:43 -08:00
Paul Thomas
5046aff56b [multiple changes]
2006-10-05  Erik Edelmann <edelmann@gcc.gnu.org>
	    Paul Thomas <pault@gcc.gnu.org>

	PR fortran/20541
	* interface.c (gfc_compare_derived_types): Add comparison of
	the allocatable field.
	* intrinsic.c (add_subroutines): Add MOVE_ALLOC.
	* trans-expr.c (gfc_conv_aliased_arg, gfc_trans_subarray_assign,
	gfc_trans_subcomponent_assign, gfc_conv_string_parameter,
	gfc_trans_scalar_assign): Add extra arguments l_is_temp
	and r_is_var to references to latter function.
	(gfc_conv_function_call): Add enum for types of argument and
	an associated variable parm_kind. Deallocate components of
	INTENT(OUT) and non-variable arrays.
	(gfc_trans_subcomponent_assign): Add block to assign arrays
	to allocatable components.
	(gfc_trans_scalar_assign): Add block to handle assignments of
	derived types with allocatable components, using the above new
	arguments to control allocation/deallocation of memory and the
	copying of allocated arrays.
	* trans-array.c (gfc_array_allocate): Remove old identification 
	of pointer and replace with that of an allocatable array. Add
	nullify of structures with allocatable components. 
	(gfc_conv_array_initializer): Treat EXPR_NULL.
	(gfc_conv_array_parameter): Deallocate allocatable components
	of non-variable structures.
	(gfc_trans_dealloc_allocated): Use second argument of library
	deallocate to inhibit, without error, freeing NULL pointers.
	(get_full_array_size): New function to return the size of a
	full array.
	(gfc_duplicate_allocatable): New function to allocate and copy
	allocated data.
	(structure_alloc_comps): New recursive function to deallocate,
	nullify or copy allocatable components.
	(gfc_nullify_alloc_comp, gfc_deallocate_alloc_comp,
	gfc_copy_alloc_comp): New interface functions to call previous.
	(gfc_trans_deferred_array): Add the code to nullify allocatable
	components, when entering scope, and to deallocate them on
	leaving. Do not call gfc_trans_static_array_pointer and return
	for structures with allocatable components and default
	initializers.
	* symbol.c (gfc_set_component_attr): Set allocatable field.
	(gfc_get_component_attr): Set the allocatable attribute.
	* intrinsic.h : Prototype for gfc_check_move_alloc.
	* decl.c (build_struct): Apply TR15581 constraints for
	allocatable components.
	(variable_decl): Default initializer is always NULL for
	allocatable components.
	(match_attr_spec): Allow, or not, allocatable components,
	according to the standard in force.
	* trans-array.h : Prototypes for gfc_nullify_alloc_comp,
	gfc_deallocate_alloc_comp, gfc_copy_alloc_comp and
	gfc_duplicate_allocatable.
	* gfortran.texi : Add mention of TR15581 extensions.
	* gfortran.h : Add attribute alloc_comp, add
	gfc_components field allocatable and add the prototype
	for gfc_expr_to_initialize.
	* trans-stmt.c (generate_loop_for_temp_to_lhs,
	generate_loop_for_rhs_to_temp, gfc_trans_where_assign,
	gfc_trans_where_3): Add extra arguments to calls to
	gfc_trans_scalar_assign and set appropriately.
	(gfc_trans_allocate): Nullify allocatable components.
	(gfc_trans_deallocate): Deallocate to ultimate allocatable
	components but stop at ultimate pointer components.
	* module.c (mio_symbol_attribute, mio_symbol_attribute,
	mio_component): Add module support for allocatable
	components.
	* trans-types.c (gfc_get_derived_type): Treat allocatable
	components.
	* trans.h : Add two boolean arguments to
	gfc_trans_scalar_assign.
	* resolve.c (resolve_structure_cons): Check conformance of
	constructor element and the component.
	(resolve_allocate_expr): Add expression to nullify the
	constructor expression for allocatable components.
	(resolve_transfer): Inhibit I/O of derived types with
	allocatable components.
	(resolve_fl_derived): Skip check of bounds of allocatable
	components.
	* trans-decl.c (gfc_get_symbol_decl): Add derived types
	with allocatable components to deferred variable.
	(gfc_trans_deferred_vars): Make calls for derived types
	with allocatable components to gfc_trans_deferred_array.
	(gfc_generate_function_code): Nullify allocatable
	component function result on entry.
	* parse.c (parse_derived): Set symbol attr.allocatable if
	allocatable components are present.
	* check.c (gfc_check_allocated): Enforce attr.allocatable
	for intrinsic arguments.
	(gfc_check_move_alloc): Check arguments of move_alloc.
	* primary.c (gfc_variable_attr): Set allocatable attribute.
	* intrinsic.texi : Add index entry and section for
	for move_alloc.

	PR fortran/29115
	* resolve.c (resolve_structure_cons): It is an error if the
	pointer component elements of a derived type constructor are
	not pointer or target.


	PR fortran/29211
	* trans-stmt.c (generate_loop_for_temp_to_lhs,
	generate_loop_for_rhs_to_temp): Provide a string length for
	the temporary by copying that of the other side of the scalar
	assignment.


2006-10-05  Paul Thomas  <pault@gcc.gnu.org>
	    Erik Edelmann  <edelmann@gcc.gnu.org>

	PR libgfortran/20541
	* Makefile.in : Add move_alloc.
	* intrinsics/move_alloc.c: New function.
	* Makefile.am : Add move_alloc.



2006-10-05  Erik Edelmann  <edelmann@gcc.gnu.org>
	    Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/20541
	* gfortran.dg/alloc_comp_basics_1.f90: New test.
	* gfortran.dg/alloc_comp_basics_2.f90: New test.
	* gfortran.dg/alloc_comp_assign_1.f90: New test.
	* gfortran.dg/alloc_comp_assign_2.f90: New test.
	* gfortran.dg/alloc_comp_assign_3.f90: New test.
	* gfortran.dg/alloc_comp_assign_4.f90: New test.
	* gfortran.dg/alloc_comp_constraint_1.f90: New test.
	* gfortran.dg/alloc_comp_constraint_2.f90: New test.
	* gfortran.dg/alloc_comp_constraint_3.f90: New test.
	* gfortran.dg/alloc_comp_constructor_1.f90: New test.
	* gfortran.dg/alloc_comp_constructor_2.f90: New test.
	* gfortran.dg/alloc_comp_initializer_1.f90: New test.
	* gfortran.dg/alloc_comp_std.f90: New test.
	* gfortran.dg/move_alloc.f90: New test.

	PR fortran/29115
	* gfortran.dg/derived_constructor_comps_2.f90: New test.

	PR fortran/29211
	* gfortran.dg/forall_char_dependencies_1.f90: New test.

From-SVN: r117558
2006-10-08 16:21:55 +00:00
Tobias Burnus
bec93d7937 re PR fortran/28585 (Fortran 2003: Support NEW_LINE intrinsic)
PR fortran/28585

	* intrinsic.c (add_functions): Add new_line Fortran 2003 intrinsic.
	* intrinsic.h: Add gfc_simplify_new_line and gfc_check_new_line
	prototypes.
	* check.c (gfc_check_new_line): New function.
	* simplify.c (gfc_simplify_new_line): New function.
	* intrinsic.texi: Document new_line intrinsic.

	* gfortran.dg/new_line.f90: New test.

From-SVN: r117555
2006-10-08 13:21:42 +00:00
Francois-Xavier Coudert
a119fc1ca8 intrinsic.c (add_functions): Add ACCESS, CHMOD, RSHIFT, LSHIFT.
* intrinsic.c (add_functions): Add ACCESS, CHMOD, RSHIFT, LSHIFT.
	(add_subroutines): Add LTIME, GMTIME and CHMOD.
	* intrinsic.h (gfc_check_access_func, gfc_check_chmod,
	gfc_check_chmod_sub, gfc_check_ltime_gmtime, gfc_simplify_rshift,
	gfc_simplify_lshift, gfc_resolve_access, gfc_resolve_chmod,
	gfc_resolve_rshift, gfc_resolve_lshift, gfc_resolve_chmod_sub,
	gfc_resolve_gmtime, gfc_resolve_ltime): Add prototypes.
	* gfortran.h (gfc_generic_isym_id): Add GFC_ISYM_ACCESS,
	GFC_ISYM_CHMOD, GFC_ISYM_LSHIFT, GFC_ISYM_RSHIFT.
	* iresolve.c (gfc_resolve_access, gfc_resolve_chmod,
	gfc_resolve_rshift, gfc_resolve_lshift, gfc_resolve_chmod_sub,
	gfc_resolve_gmtime, gfc_resolve_ltime): New functions.
	* check.c (gfc_check_access_func, gfc_check_chmod,
	gfc_check_chmod_sub, gfc_check_ltime_gmtime): New functions.
	* trans-intrinsic.c (gfc_conv_intrinsic_rlshift): New function.
	(gfc_conv_intrinsic_function): Add cases for the new GFC_ISYM_*.

	* intrinsics/date_and_time.c: Add functions for GMTIME and LTIME.
	* intrinsics/access.c: New file.
	* intrinsics/chmod.c: New file.
	* configure.ac: Add checks for <sys/wait.h>, access, fork,execl
	and wait.
	* Makefile.am: Add new files intrinsics/access.c and
	intrinsics/chmod.c.
	* configure: Regenerate.
	* config.h.in: Regenerate.
	* Makefile.in: Regenerate.

	* gcc/testsuite/gfortran.dg/chmod_3.f90: New test.
	* gcc/testsuite/gfortran.dg/ltime_gmtime_1.f90: New test.
	* gcc/testsuite/gfortran.dg/ltime_gmtime_2.f90: New test.
	* gcc/testsuite/gfortran.dg/lrshift_1.f90: New test.
	* gcc/testsuite/gfortran.dg/chmod_1.f90: New test.
	* gcc/testsuite/gfortran.dg/chmod_2.f90: New test.

From-SVN: r115825
2006-07-30 20:48:00 +00:00
François-Xavier Coudert
bf3fb7e43c intrinsic.c (add_functions): Add INT2, SHORT, INT8, LONG, LSTAT, MCLOCK and MCLOCK8 intrinsic functions.
* intrinsic.c (add_functions): Add INT2, SHORT, INT8, LONG,
	LSTAT, MCLOCK and MCLOCK8 intrinsic functions.
	(add_subroutines): Add LSTAT intrinsic subroutine.
	* gfortran.h (gfc_generic_isym_id): Add GFC_ISYM_INT2,
	GFC_ISYM_INT8, GFC_ISYM_LONG, GFC_ISYM_LSTAT, GFC_ISYM_MCLOCK
	and GFC_ISYM_MCLOCK8.
	* iresolve.c (gfc_resolve_int2, gfc_resolve_int8,
	gfc_resolve_long, gfc_resolve_lstat, gfc_resolve_mclock,
	gfc_resolve_mclock8, gfc_resolve_lstat_sub): New functions.
	* check.c (gfc_check_intconv): New function.
	* trans-intrinsic.c (gfc_conv_intrinsic_function): Add cases for
	the added GFC_ISYM_*.
	* simplify.c (gfc_simplify_intconv, gfc_simplify_int2,
	gfc_simplify_int8, gfc_simplify_long): New functions.
	* intrinsic.h (gfc_check_intconv, gfc_simplify_int2,
	gfc_simplify_int8, gfc_simplify_long, gfc_resolve_int2,
	gfc_resolve_int8, gfc_resolve_long, gfc_resolve_lstat,
	gfc_resolve_mclock, gfc_resolve_mclock8, gfc_resolve_lstat_sub):
	Add prototypes.

	* gfortran.dg/mclock.f90: New test.
	* gfortran.dg/int_conv_1.f90: New test.
	* gfortran.dg/stat_1.f90: New test.
	* gfortran.dg/stat_2.f90: New test.

	* configure.ac: Check for function clock.
	* Makefile.am: Compile new file intrinsics/clock.c.
	* intrinsics/clock.c: New file.
	* Makefile.in: Regenerate.
	* configure: Regenerate.
	* config.h.in: Regenerate.
	* intrinsics/stat.c: Rename the old stat_i?_sub functions to
	helper functions stat_i?_sub_0, and use them for both STAT and
	LSTAT.

From-SVN: r115754
2006-07-26 11:58:48 +00:00
Paul Thomas
72af9f0b51 re PR fortran/28174 (Corruption of multiple character arrays when passing array sections)
2006-07-13  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/28174
	* trans-expr.c (gfc_conv_aliased_arg): Missing formal arg means
	that intent is INOUT (fixes regression).

	PR fortran/25097
	* check.c (check_present): The only permitted reference is a
	full array reference.

	PR fortran/20903
	* decl.c (variable_decl): Add error if a derived type is not
	from the current namespace if the namespace is an interface
	body.

2006-07-13  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/25097
	* gfortran.dg/present_1.f90: New test.

	PR fortran/20903
	* gfortran.dg/interface_derived_type_1.f90: New test.

From-SVN: r115410
2006-07-13 05:07:35 +00:00
Francois-Xavier Coudert
12197210b4 intrinsic.c (add_subroutines): Add ITIME and IDATE.
* intrinsic.c (add_subroutines): Add ITIME and IDATE.
	* intrinsic.h (gfc_check_itime_idate,gfc_resolve_idate,
	fc_resolve_itime): New protos.
	* iresolve.c (gfc_resolve_itime, gfc_resolve_idate): New functions.
	* check.c (gfc_check_itime_idate): New function.
	* intrinsic.texi: Document the new intrinsics.

	* intrinsics/date_and_time.c (itime0,idate0,itime_i4,itime_i8,
	idate_i4,idate_i8): New functions.

	* gfortran.dg/itime_idate_1.f: New test.
	* gfortran.dg/itime_idate_2.f: New test.

Co-Authored-By: Daniel Franke <franke.daniel@gmail.com>

From-SVN: r115173
2006-07-04 11:39:46 +00:00
Kazu Hirata
490060701c * check.c: Fix a comment typo.
From-SVN: r115101
2006-06-30 19:38:26 +00:00
Paul Thomas
a4a11197f9 re PR fortran/25049 (TRANSPOSE not allowed in initialisation expression)
2006-06-20  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/25049
	PR fortran/25050
	* check.c (non_init_transformational): New function.
	(find_substring_ref): New function to signal use of disallowed
	transformational intrinsic in an initialization expression.
	(gfc_check_all_any): Call previous if initialization expr.
	(gfc_check_count): The same.
	(gfc_check_cshift): The same.
	(gfc_check_dot_product): The same.
	(gfc_check_eoshift): The same.
	(gfc_check_minloc_maxloc): The same.
	(gfc_check_minval_maxval): The same.
	(gfc_check_gfc_check_product_sum): The same.
	(gfc_check_pack): The same.
	(gfc_check_spread): The same.
	(gfc_check_transpose): The same.
	(gfc_check_unpack): The same.

	PR fortran/18769
	*intrinsic.c (add_functions): Add gfc_simplify_transfer.
	*intrinsic.h : Add prototype for gfc_simplify_transfer.
	*simplify.c (gfc_simplify_transfer) : New function to act as
	placeholder for eventual implementation.  Emit error for now.

	PR fortran/16206
	* expr.c (find_array_element): Eliminate condition on length of
	offset. Add bounds checking. Rearrange exit. Return try and
	put gfc_constructor result as an argument.
	(find_array_section): New function.
	(find_substring_ref): New function.
	(simplify_const_ref): Add calls to previous.
	(simplify_parameter_variable): Return on NULL expr.
	(gfc_simplify_expr): Only call gfc_expand_constructor for full
	arrays.

	PR fortran/20876
	* match.c (gfc_match_forall): Add missing locus to gfc_code.

2006-06-20  Paul Thomas  <pault@gcc.gnu.org>

	PR libfortran/28005
	* m4/matmul.m4: aystride = 1 does not uniquely detect the
	presence of a temporary transpose; an array element in the
	first dimension produces the same signature.  Detect this
	using the rank of a and add specific code.
	* generated/matmul_r4.c: Regenerate.
	* generated/matmul_r8.c: Regenerate.
	* generated/matmul_r10.c: Regenerate.
	* generated/matmul_r16.c: Regenerate.
	* generated/matmul_c4.c: Regenerate.
	* generated/matmul_c8.c: Regenerate.
	* generated/matmul_c10.c: Regenerate.
	* generated/matmul_c16.c: Regenerate.
	* generated/matmul_i4.c: Regenerate.
	* generated/matmul_i8.c: Regenerate.
	* generated/matmul_i16.c: Regenerate.

2006-06-20  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/16206
	* gfortran.dg/array_initializer_1.f90: New test.

	PR fortran/28005
	* gfortran.dg/matmul_3.f90: New test.

From-SVN: r114802
2006-06-20 04:30:48 +00:00
Paul Thomas
6690a9e079 re PR fortran/14067 (no warning when character data statement overflows declared size)
2006-06-05  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/14067
	* data.c (create_character_intializer): Add warning message
	for truncated string.

	PR fortran/16943
	* symbol.c : Include flags.h.
	(gfc_add_type): If a procedure and types are the same do not
	throw an error unless standard is less than gnu or pedantic.

	PR fortran/20838
	* parse.c (parse_do_block): Error if named block do construct
	does not have a named enddo.

	PR fortran/27655
	* check.c (gfc_check_associated): Pick up EXPR_NULL for pointer
	as well as target and put error return at end of function.

2006-06-05  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/14067
	* gfortran.dg/data_char_1.f90: Add messages for truncated
	strings.

	PR fortran/16943
	* gfortran.dg/func_decl_2.f90: New test.

	PR fortran/20838
	* gfortran.dg/do_2.f90: New test.

	PR fortran/27655
	* gfortran.dg/associated_3.f90: New test.

From-SVN: r114385
2006-06-05 07:45:03 +00:00
Kazu Hirata
e2ae1407d3 check.c, [...]: Fix comment typos.
* check.c, expr.c, resolve.c, trans-common.c,
	trans-intrinsic.c, trans-stmt.c, trans-types.c: Fix comment typos.

From-SVN: r114170
2006-05-28 17:56:58 +00:00
Paul Thomas
476220e7ee re PR fortran/25746 (Elemental assignment gives wrong result)
2006-05-21  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/25746
	* interface.c (gfc_extend_assign): Use new code EXEC_ASSIGN_CALL.
	* gfortran.h : Put EXEC_ASSIGN_CALL in enum.
	* trans-stmt.c (gfc_conv_elemental_dependencies): New function.
	(gfc_trans_call): Call it.  Add new boolian argument to flag
	need for dependency checking. Assert intent OUT and IN for arg1
	and arg2.
	(gfc_trans_forall_1): Use new code EXEC_ASSIGN_CALL.
	trans-stmt.h : Modify prototype of gfc_trans_call.
	trans.c (gfc_trans_code): Add call for EXEC_ASSIGN_CALL.
	st.c (gfc_free_statement): Free actual for EXEC_ASSIGN_CALL.
	* dependency.c (gfc_check_fncall_dependency): Don't check other
	against itself.

	PR fortran/25090
	* resolve.c : Remove resolving_index_expr.
	(entry_parameter): Remove.
	(gfc_resolve_expr, resolve_charlen, resolve_fl_variable): Remove
	calls to entry_parameter and references to resolving_index_expr.

	PR fortran/27584
	* check.c (gfc_check_associated): Replace NULL assert with an
	error message, since it is possible to generate bad code that
	has us fall through to here..

	PR fortran/19015
	* iresolve.c (maxloc, minloc): If DIM is not present, pass the
	rank of ARRAY as the shape of the result.  Otherwise, pass the
	shape of ARRAY, less the dimension DIM.
	(maxval, minval): The same, when DIM is present, otherwise no
	change.

2006-05-21  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/25746
	* gfortran.dg/elemental_subroutine_3.f90: New test.

	PR fortran/25090
	* gfortran.dg/entry_dummy_ref_1.f90: Remove.

	PR fortran/27584
	* gfortran.dg/associated_target_1.f90: New test.

	PR fortran/19015
	* gfortran.dg/maxloc_shape_1.f90: New test.

From-SVN: r113949
2006-05-21 07:35:05 +00:00
Tobias Schlüter
8f320bb097 check.c: Update copyright years.
* check.c: Update copyright years.

From-SVN: r111110
2006-02-15 13:42:16 +01:00
Tobias Schlüter
b98e315984 check.c (gfc_check_minloc_maxloc, [...]): Don't call dim_range_check on not-present optional dim argument.
* check.c (gfc_check_minloc_maxloc, check_reduction): Don't call
	dim_range_check on not-present optional dim argument.

From-SVN: r111108
2006-02-15 12:02:21 +01:00
Thomas Koenig
ce99d59440 re PR fortran/25045 ([4.1 only] DIM argument of PRODUCT is not optional)
2006-02-14  Thomas Koenig  <Thomas.Koenig@online.de>

        PR fortran/25045
        * check.c (dim_check):  Perform all checks if dim is optional.
        (gfc_check_minloc_maxloc):  Use dim_check and dim_rank_check
        to check dim argument.
        (check_reduction):  Likewise.

2006-02-14  Thomas Koenig  <Thomas.Koenig@online.de>

        PR fortran/25045
        * optional_dim.f90:  New test.

From-SVN: r110994
2006-02-14 19:25:36 +00:00
Thomas Koenig
a89992356b re PR fortran/25075 ([4.1 only] array size mismatch in DOT_PRODUCT)
2006-02-04  Thomas Koenig  <Thomas.Koenig@online.de>

	PR fortran/25075
	check.c (identical_dimen_shape):  New function.
	(check_dot_product):  Use identical_dimen_shape() to check sizes
	for dot_product.
	(gfc_check_matmul):  Likewise.
	(gfc_check_merge):  Check conformance between tsource and fsource
	and between tsource and mask.
	(gfc_check_pack):  Check conformance between array and mask.

2006-02-04  Thomas Koenig  <Thomas.Koenig@online.de>

	PR fortran/25075
	intrinsic_argument_conformance_1.f90:  New test.

From-SVN: r110596
2006-02-04 22:11:57 +00:00
Thomas Koenig
17d761bbc8 re PR fortran/26039 (ICE with maxval)
2006-01-31  Thomas Koenig  <Thomas.Koenig@online.de>

	PR fortran/26039
	expr.c (gfc_check_conformance):  Reorder error message
	to avoid plural.
	check.c(gfc_check_minloc_maxloc):  Call gfc_check_conformance
	for checking arguments array and mask.
	(check_reduction):  Likewise.

2006-01-31  Thomas Koenig  <Thomas.Koenig@online.de>

	PR fortran/26039
	maxval_maxloc_conformance_1.f90:  New test.

From-SVN: r110453
2006-01-31 22:52:49 +00:00
Erik Edelmann
58c0774f29 re PR fortran/25292 (ASSOCIATED( func() ) rejected ?)
fortran/
2005-12-08  Erik Edelmann  <eedelman@gcc.gnu.org>

        PR fortran/25292
        * check.c (gfc_check_associated): Allow function results
        as actual arguments to ASSOCIATED.  Moved a misplaced
        comment.


testsuite/
2005-12-08  Erik Edelmann  <eedelman@gcc.gnu.org>

        PR fortran/25292
        * gfortran.dg/associated_1.f90: New.

From-SVN: r108238
2005-12-08 16:56:10 +00:00
Francois-Xavier Coudert
991bb83249 re PR fortran/23912 (MOD function requires same kind arguments)
PR fortran/23912

	* iresolve.c (gfc_resolve_dim, gfc_resolve_mod,
	gfc_resolve_modulo): When arguments have different kinds, fold
	the lower one to the largest kind.
	* check.c (gfc_check_a_p): Arguments of different kinds is not
	a hard error, but an extension.
	* simplify.c (gfc_simplify_dim, gfc_simplify_mod,
	gfc_simplify_modulo): When arguments have different kinds, fold
        the lower one to the largest kind.

	* gfortran.dg/modulo_1.f90: New test.

From-SVN: r107566
2005-11-27 14:01:36 +00:00
Francois-Xavier Coudert
5d723e5434 fget.c: New file.
* intrinsics/fget.c: New file.
	* intrinsics/ftell.c: New file.
	* io/unix.c (stream_offset): New function.
	* io/io.h: Add prototype for stream_offset.
	* Makefile.am: Add intrinsics/fget.c and intrinsics/ftell.c.
	* Makefile.in: Regenerate.

	* intrinsic.c (add_functions): Add COMPLEX, FTELL, FGETC, FGET,
	FPUTC, FPUT, AND, XOR and OR intrinsic functions.
	(add_subroutines): Add FGETC, FGET, FPUTC, FPUT and FTELL intrinsic
	subroutines.
	* gfortran.h: Add GFC_ISYM_AND, GFC_ISYM_COMPLEX, GFC_ISYM_FGET,
	GFC_ISYM_FGETC, GFC_ISYM_FPUT, GFC_ISYM_FPUTC, GFC_ISYM_FTELL,
	GFC_ISYM_OR, GFC_ISYM_XOR.
	* iresolve.c (gfc_resolve_and, gfc_resolve_complex,
	gfc_resolve_or, gfc_resolve_fgetc, gfc_resolve_fget,
	gfc_resolve_fputc, gfc_resolve_fput, gfc_resolve_ftell,
	gfc_resolve_xor, gfc_resolve_fgetc_sub, gfc_resolve_fget_sub,
	gfc_resolve_fputc_sub, gfc_resolve_fput_sub, gfc_resolve_ftell_sub):
	New functions.
	* check.c (gfc_check_complex, gfc_check_fgetputc_sub,
	gfc_check_fgetputc, gfc_check_fgetput_sub, gfc_check_fgetput,
	gfc_check_ftell, gfc_check_ftell_sub, gfc_check_and): New functions.
	* simplify.c (gfc_simplify_and, gfc_simplify_complex, gfc_simplify_or,
	gfc_simplify_xor): New functions.
	* trans-intrinsic.c (gfc_conv_intrinsic_function): Add cases for
	GFC_ISYM_AND, GFC_ISYM_COMPLEX, GFC_ISYM_FGET, GFC_ISYM_FGETC,
	GFC_ISYM_FPUT, GFC_ISYM_FPUTC, GFC_ISYM_FTELL, GFC_ISYM_OR and
	GFC_ISYM_XOR.
	* intrinsic.h: Add prototypes for all functions added to iresolve.c,
	simplify.c and check.c.

	* gfortran.dg/complex_intrinsic_1.f90: New test.
	* gfortran.dg/complex_intrinsic_2.f90: New test.
	* gfortran.dg/fgetc_1.f90: New test.
	* gfortran.dg/fgetc_2.f90: New test.
	* gfortran.dg/fgetc_3.f90: New test.
	* gfortran.dg/ftell_1.f90: New test.
	* gfortran.dg/ftell_2.f90: New test.
	* gfortran.dg/gnu_logical_1.F: New test.
	* gfortran.dg/gnu_logical_2.f90: New test.

From-SVN: r106859
2005-11-13 09:33:19 +00:00
Francois-Xavier Coudert
3505981152 intrinsic.c (add_functions): Add ctime and fdate intrinsics.
* intrinsic.c (add_functions): Add ctime and fdate intrinsics.
	(add_subroutines): Likewise.
	* intrinsic.h: Prototypes for gfc_check_ctime,
	gfc_check_ctime_sub, gfc_check_fdate_sub, gfc_resolve_ctime,
	gfc_resolve_fdate, gfc_resolve_ctime_sub, gfc_resolve_fdate_sub.
	* gfortran.h: Add GFC_ISYM_CTIME and GFC_ISYM_FDATE.
	* iresolve.c (gfc_resolve_ctime, gfc_resolve_fdate,
	gfc_resolve_ctime_sub, gfc_resolve_fdate_sub): New functions.
	* trans-decl.c (gfc_build_intrinsic_function_decls): Add
	gfor_fndecl_fdate and gfor_fndecl_ctime.
	* check.c (gfc_check_ctime, gfc_check_ctime_sub,
	gfc_check_fdate_sub): New functions.
	* trans-intrinsic.c (gfc_conv_intrinsic_ctime,
	gfc_conv_intrinsic_fdate): New functions.
	(gfc_conv_intrinsic_function): Add cases for GFC_ISYM_CTIME
	and GFC_ISYM_FDATE.
	* intrinsic.texi: Documentation for the new CTIME and FDATE
	intrinsics.
	* trans.h: Declarations for gfor_fndecl_ctime and gfor_fndecl_fdate.

	* intrinsics/ctime.c: New file.
	* configure.ac: Add check for ctime.
	* Makefile.am: Add ctime.c
	* configure: Regenerate.
	* config.h.in: Regenerate.
	* Makefile.in: Regenerate.

From-SVN: r106558
2005-11-06 10:17:04 +00:00
Francois-Xavier Coudert
25fc05eb62 intrinsic.c (add_functions): Add function version of TTYNAM.
* intrinsic.c (add_functions): Add function version of TTYNAM.
	* intrinsic.h: Add prototypes for gfc_check_ttynam and
	gfc_resolve_ttynam.
	* gfortran.h: Add case for GFC_ISYM_TTYNAM.
	* iresolve.c (gfc_resolve_ttynam): New function.
	* trans-decl.c (gfc_build_intrinsic_function_decls): Add a tree
	for function call to library ttynam.
	* check.c (gfc_check_ttynam): New function.
	* trans-intrinsic.c (gfc_conv_intrinsic_ttynam): New function.
	(): Call gfc_conv_intrinsic_ttynam.
	* trans.h: Add prototype for gfor_fndecl_ttynam.

	* intrinsics/tty.c (ttynam): New function.

From-SVN: r106522
2005-11-05 08:34:07 +00:00
Paul Thomas
53096259e6 re PR fortran/21565 (namelist in block data is illegal)
2005-11-01  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/21565
	* symbol.c (check_conflict): An object cannot be in a namelist and in
	block data.

	PR fortran/18737
	* resolve.c (resolve_symbol): Set the error flag to
	gfc_set_default_type, in the case of an external symbol, so that
	an error message is emitted if IMPLICIT NONE is set.

	PR fortran/14994
	* gfortran.h (gfc_generic_isym_id): Add GFC_ISYM_SECNDS to enum.
	* check.c (gfc_check_secnds): New function.
	* intrinsic.c (add_functions): Add call to secnds.
	* iresolve.c (gfc_resolve_secnds): New function.
	* trans-intrinsic (gfc_conv_intrinsic_function): Add call to
	secnds via case GFC_ISYM_SECNDS.
	* intrinsic.texi: Add documentation for secnds.

2005-11-01  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/14994
	* libgfortran/intrinsics/date_and_time.c: Add interface to
	the functions date_and_time for the intrinsic function secnds.

2005-11-01  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/21565
	gfortran.dg/namelist_blockdata.f90: New test.

	PR fortran/18737
	gfortran.dg/external_implicit_none.f90: New test.

	PR fortran/14994
	* gfortran.dg/secnds.f: New test.

From-SVN: r106317
2005-11-01 05:53:29 +00:00
Francois-Xavier Coudert
0d519038a0 check.c (gfc_check_malloc, [...]): New functions.
* check.c (gfc_check_malloc, gfc_check_free): New functions.
	* gfortran.h (gfc_generic_isym_id): Add GFC_ISYM_MALLOC.
	* intrinsic.c (add_functions): Add symbols for MALLOC function.
	(add_subroutines): Add symbol for FREE subroutine.
	* intrinsic.h: Prototypes for gfc_check_malloc, gfc_check_free,
	gfc_resolve_malloc and gfc_resolve_free.
	* intrinsic.texi: Add doc for FREE and MALLOC intrinsics.
	* iresolve.c (gfc_resolve_malloc, gfc_resolve_free): New
	functions.
	* trans-intrinsic.c (gfc_conv_intrinsic_function): Add case for
	GFC_ISYM_MALLOC.

	* Makefile.am: Add intrinsics/malloc.c file.
	* Makefile.in: Regenerate.
	* intrinsics/malloc.c: New file, with implementations for free
	and malloc library functions.

	* gfortran.dg/malloc_free_1.f90: New test.

From-SVN: r106016
2005-10-30 12:17:48 +00:00
Francois-Xavier Coudert
185d7d9750 check.c (gfc_check_alarm_sub, [...]): New functions.
* check.c (gfc_check_alarm_sub, gfc_check_signal,
	gfc_check_signal_sub): New functions.
	* gfortran.h (gfc_generic_isym_id): Add GFC_ISYM_SIGNAL.
	* intrinsic.c (add_functions): Add signal intrinsic.
	(add_subroutines): Add signal and alarm intrinsics.
	* intrinsic.texi: Document the new intrinsics.
	* iresolve.c (gfc_resolve_signal, gfc_resolve_alarm_sub,
	gfc_resolve_signal_sub): New functions.
	* trans-intrinsic.c (gfc_conv_intrinsic_function): Add case
	for GFC_ISYM_SIGNAL.
	* intrinsic.h: Add prototypes for gfc_check_alarm_sub,
	gfc_check_signal, gfc_check_signal_sub, gfc_resolve_signal,
	gfc_resolve_alarm_sub, gfc_resolve_signal_sub.

	* Makefile.am (intrinsics): Add signal.c.
	* Makefile.in: Regenerate.
	* configure.ac: Checks for signal and alarm.
	* config.h.in: Regenerate.
	* configure: Regenerate.
	* intrinsics/signal.c: New file for SIGNAL and ALARM intrinsics.

From-SVN: r105967
2005-10-28 21:16:17 +00:00
Asher Langton
83d890b9ba Commit for Asher Langton
PR fortran/17031
	PR fortran/22282

fortran/
	* check.c (gfc_check_loc) : New function
	* decl.c (variable_decl): New variables cp_as and sym. Added a
	check for variables that have already been declared as Cray
	Pointers, so we can get the necessary attributes without adding
	a new symbol.
	(attr_decl1): Added code to catch pointee symbols and "fix"
	their array specs.
	(cray_pointer_decl): New method.
	(gfc_match_pointer): Added Cray pointer parsing code.
	(gfc_mod_pointee_as): New method.
	* expr.c (gfc_check_assign): added a check to catch vector-type
	assignments to pointees with an unspecified final dimension.
	* gfortran.h: (GFC_ISYM_LOC): New.
	(symbol_attribute): Added cray_pointer and cray_pointee bits.
	(gfc_array_spec): Added cray_pointee and cp_was_assumed bools.
	(gfc_symbol): Added gfc_symbol *cp_pointer.
	(gfc_option): Added flag_cray_pointer.
	(gfc_add_cray_pointee): Declare.
	(gfc_add_cray_pointer ): Declare.
	(gfc_mod_pointee_as): Declare.
	* intrinsic.c (add_functions): Add code for loc() intrinsic.
	* intrinsic.h (gfc_check_loc): Declare.
	(gfc_resolve_loc): Declare.
	* iresolve.c (gfc_resolve_loc): New.
	* lang.opt: Added fcray-pointer flag.
	* options.c (gfc_init_options): Intialized
	gfc_match_option.flag_cray_pointer.
	(gfc_handle_option): Deal with -fcray-pointer.
	* parse.c:(resolve_equivalence): Added code prohibiting Cray
	pointees in equivalence statements.
	* resolve.c (resolve_array_ref): Added code to prevent bounds
	checking for Cray Pointee arrays.
	(resolve_equivalence): Prohibited pointees in equivalence
	statements.
	* symbol.c (check_conflict): Added Cray pointer/pointee
	attribute checking.
	(gfc_add_cray_pointer): New
	(gfc_add_cray_pointee): New
	(gfc_copy_attr): New code for Cray pointers and pointees
	* trans-array.c (gfc_trans_auto_array_allocation): Added code to
	prevent space from being allocated for pointees.
	(gfc_conv_array_parameter): Added code to catch pointees and
	correctly set their base address.
	* trans-decl.c (gfc_finish_var_decl): Added code to prevent
	pointee declarations from making it to the back end.
	(gfc_create_module_variable): Same.
	* trans-expr.c (gfc_conv_variable): added code to detect and
	translate pointees.
	(gfc_conv_cray_pointee): New.
	* trans-intrinsic.c (gfc_conv_intrinsic_loc): New.
	(gfc_conv_intrinsic_function): added entry point for loc
	translation.
	* trans.h (gfc_conv_cray_pointee): Declare.

	* gfortran.texi: Added section on Cray pointers, removed Cray
	pointers from list of proposed extensions
	* intrinsic.texi: Added documentation for loc intrinsic.
	* invoke.texi: Documented -fcray-pointer flag

testsuite/
	PR fortran/17031
	PR fortran/22282
	* gfortran.dg/cray_pointers_1.f90: New test.
	* gfortran.dg/cray_pointers_2.f90: New test.
	* gfortran.dg/cray_pointers_3.f90: New test.
	* gfortran.dg/loc_1.f90: New test.
	* gfortran.dg/loc_2.f90: New test.

From-SVN: r105859
2005-10-24 19:28:18 +00:00
Francois-Xavier Coudert
4c93c95ac5 re PR fortran/15586 (gfortran should support i18n in its compiler messages)
PR fortran/15586
	* arith.c (gfc_arith_error): Change message to include locus.
	(check_result, eval_intrinsic, gfc_int2int, gfc_real2real,
	gfc_real2complex, gfc_complex2real, gfc_complex2complex): Use
	the new gfc_arith_error.
	(arith_error): Rewrite full error messages instead of building
	them from pieces.
	* check.c (must_be): Removed.
	(type_check, numeric_check, int_or_real_check, real_or_complex_check,
	kind_check, double_check, logical_array_check, array_check,
	scalar_check, same_type_check, rank_check, kind_value_check,
	variable_check, gfc_check_allocated, gfc_check_associated,
	gfc_check_cmplx, gfc_check_dcmplx, gfc_check_dot_product,
	gfc_check_index, gfc_check_kind, gfc_check_matmul, gfc_check_null,
	gfc_check_pack, gfc_check_precision, gfc_check_present,
	gfc_check_spread): Rewrite full error messages instead of
	building them from pieces.
	* decl.c (gfc_match_entry): Rewrite full error messages instead
	of building them from pieces.
	* parse.c (gfc_state_name): Remove.
	* parse.h: Remove prototype for gfc_state_name.

From-SVN: r105844
2005-10-24 09:11:51 +00:00
Andrew Pinski
78bd27f62c re PR fortran/23635 (Argument of ichar at (1) must be of length one)
2005-10-23  Andrew Pinski  <pinskia@physics.uc.edu>

        PR fortran/23635
        * gfortran.dg/ichar_1.f90: Add tests for derived types.


2005-10-23  Andrew Pinski  <pinskia@physics.uc.edu>

        PR fortran/23635
        * check.c (gfc_check_ichar_iachar): Move the code around so
        that the check on the length is after check for
        references.

From-SVN: r105829
2005-10-23 15:16:38 -07:00
Francois-Xavier Coudert
31043f6cfc re PR fortran/15586 (gfortran should support i18n in its compiler messages)
PR fortran/15586

	* arith.c (gfc_arith_error): Add translation support
	for error messages.
	* array.c (gfc_match_array_ref): Likewise.
	(gfc_match_array_spec): Likewise.
	* check.c (must_be): Add msgid convention to third argument.
	(same_type_check): Add translation support for error message.
	(rank_check): Likewise.
	(kind_value_check): Likewise.
	(gfc_check_associated): Correct typo.
	(gfc_check_reshape): Add translation support for error message.
	(gfc_check_spread): Likewise.
	* error.c (error_printf): Add nocmsgid convention to argument.
	(gfc_warning, gfc_notify_std, gfc_warning_now, gfc_warning_check)
	(gfc_error, gfc_error_now): Likewise.
	(gfc_status): Add cmsgid convention to argument.
	* expr.c (gfc_extract_int): Add translation support
        for error messages.
	(gfc_check_conformance): Add msgid convention to argument.
	(gfc_check_pointer_assign): Correct tabbing.
	* gfortran.h: Include intl.h header. Remove prototype
	for gfc_article.
	* gfortranspec.c: Include intl.h header.
	(lang_specific_driver): Add translation support for --version.
	* io.c (check_format): Add translation support for
	error message.
	(format_item_1): Likewise.
	(data_desc): Likewise.
	* matchexp.c: Likewise.
	* misc.c (gfc_article): Remove function.
	* module.c (bad_module): Use msgid convention. Add
	translation support for error messages.
	(require_atom): Add translation support for error messages.
	* parse.c (gfc_ascii_statement): Likewise.
	(gfc_state_name): Likewise.
	* primary.c (match_boz_constant): Reorganise error
	messages for translations.
	* resolve.c (resolve_entries): Likewise.
	(resolve_operator): Add translation support for error messages.
	(gfc_resolve_expr): Use msgid convention. Reorganise error
        messages for translations.
	(resolve_symbol): Add translation support for error messages.
	* symbol.c (gfc_add_procedure): Remove use of gfc_article function.
	* trans-const.c (gfc_build_string_const): Use msgid convention.

	* exgettext: Add a new nocmsgid convention for arguments
	that should be marked as no-c-format.
	* gcc.pot: Regenerate.

From-SVN: r104372
2005-09-17 18:58:01 +00:00
François-Xavier Coudert
ae8b87895f check.c (gfc_check_ttynam_sub, [...]): Add check functions for new intrinsics TTYNAM and ISATTY.
* check.c (gfc_check_ttynam_sub, gfc_check_isatty): Add check
	functions for new intrinsics TTYNAM and ISATTY.
	* intrinsic.c (add_functions, add_subroutines): Add new
	intrinsics.
	* intrinsic.h: Add prototypes for new check and resolve
	functions.
	* iresolve.c (gfc_resolve_isatty, gfc_resolve_ttynam_sub): New
	resolve functions for intrinsics TTYNAM and ISATTY.
	* gfortran.h (gfc_generic_isym_id): Add symbol for ISATTY.
	* trans-intrinsic.c: Add case for GFC_ISYM_ISATTY.
	* Makefile.am: Add file intrinsics/tty.c to Makefile process.
	* Makefile.in: Regenerate.
	* io/io.h: Prototypes for new functions stream_isatty and
	stream_ttyname.
	* io/unix (stream_isatty, stream_ttyname): New functions to call
	isatty() and ttyname() on a given unit.
	* intrinsics/tty.c: New file to implement g77 intrinsics TTYNAM
	and ISATTY.

From-SVN: r102915
2005-08-09 17:33:17 +00:00
Kelley Cook
ab57747bb0 Update FSF address.
From-SVN: r101310
2005-06-25 00:40:37 +00:00
Paul Brook
860c8f3ba9 re PR fortran/20879 (argument to ICHAR must have length one)
2005-04-25  Paul Brook  <paul@codesourcery.com>
	Steven G. Kargl  <kargls@comcast.net>

	PR fortran/20879
	* check.c (gfc_check_ichar_iachar): New function.
	* instinsic.h (gfc_check_ichar_iachar): Add prototype.
	* intrinsic.c (add_functions): Use it.
	* primary.c (match_varspec, gfc_match_rvalue): Clear incorrect
	character expression lengths.

testsuite/
	* gfortran.dg/ichar_1.f90: New file.

Co-Authored-By: Steven G. Kargl <kargls@comcast.net>

From-SVN: r98686
2005-04-25 00:09:11 +00:00
François-Xavier Coudert
f77b6ca3da Makefile.am: Added new files.
* Makefile.am: Added new files.
        * Makefile.in: Regenerate.
        * aclocal.m4: Regenerate.
        * configure.ac: add checks for signal.h headers file, as well as
        following functions: chdir, strerror, getlogin, gethostname, kill,
        link, symlink, perror, sleep, time.
        * configure: Regenerate.
        * intrinsics/chdir.c, intrinsics/gerror.c, intrinsics/getlog.c,
        intrinsics/hostnm.c, intrinsics/ierrno.c, intrinsics/kill.c,
        intrinsics/link.c, intrinsics/perror.c, intrinsics/rename.c,
        intrinsics/sleep.c, intrinsics/symlnk.c, intrinsics/time.c: Newly
        implementend g77 intrinsics.

        * check.c (gfc_check_chdir, gfc_check_chdir_sub, gfc_check_kill,
        gfc_check_kill_sub, gfc_check_link, gfc_check_link_sub,
        gfc_check_symlnk, gfc_check_symlnk_sub, gfc_check_rename,
        gfc_check_rename_sub, gfc_check_sleep_sub, gfc_check_gerror,
        gfc_check_getlog, gfc_check_hostnm, gfc_check_hostnm_sub,
        gfc_check_perror): new functions to check newly implemented
        g77 intrinsics.
        * gfortran.h: adding symbols for new intrinsics.
        * intrinsic.c (add_functions): adding new intrinsics.
        (add_subroutines): adding new intrinsics.
        * intrinsic.h: prototype for all checking and resolving
        functions.
        * iresolve.c (gfc_resolve_chdir, gfc_resolve_chdir_sub,
        gfc_resolve_hostnm, gfc_resolve_ierrno, gfc_resolve_kill,
        gfc_resolve_link, gfc_resolve_rename, gfc_resolve_symlnk,
        gfc_resolve_time, gfc_resolve_time8, gfc_resolve_rename_sub,
        gfc_resolve_kill_sub, gfc_resolve_link_sub,
        gfc_resolve_symlnk_sub, gfc_resolve_sleep_sub,
        gfc_resolve_gerror, gfc_resolve_getlog, gfc_resolve_hostnm_sub,
        gfc_resolve_perror): new functions to resolve intrinsics.
        * trans-intrinsic.c (gfc_conv_intrinsic_function): add case
        for new symbols.

        * g77_intrinsics_funcs.f: New test.
        * g77_intrinsics_sub.f: New test.

From-SVN: r96893
2005-03-22 22:08:22 +00:00
Tobias Schlüter
cb9e4f55b0 Unrevert previously reversed patch, adding this patch:
* module.c (find_true_name): Deal with NULL module.

From-SVN: r95506
2005-02-24 19:26:27 +01:00
Tobias Schlüter
f5e9e99c8d Revert yesterday's patch:
2005-02-23  Tobias Schl"uter  <tobias.schlueter@physik.uni-muenchen.de>

                * gfortran.h (gfc_component, gfc_actual_arglist, ...
                ... argument.  Copy string instead of pointing to it.

From-SVN: r95496
2005-02-24 14:01:44 +01:00
Tobias Schlüter
e9444bd5ee gfortran.h (gfc_component, [...]): Make 'name' a 'const char *'.
* gfortran.h (gfc_component, gfc_actual_arglist, gfc_user_op): Make
'name' a 'const char *'.
(gfc_symbol): Likewise, also for 'module'.
(gfc_symtree): Make 'name' a 'const char *'.
(gfc_intrinsic_sym): Likewise, also for 'lib_name'.
(gfc_get_gsymbol, gfc_find_gsymbol): Add 'const' qualifier to
'char *' argument.
(gfc_intrinsic_symbol): Use 'gfc_get_string' instead of 'strcpy' to
initialize 'SYM->module'.
* check.c (gfc_check_minloc_maxloc, check_reduction): Check for NULL
pointer instead of empty string.
* dump-parse-tree.c (gfc_show_actual_arglist): Likewise.
* interface.c (gfc_compare_types): Adapt check to account for possible
NULL pointer.
(compare_actual_formal): Check for NULL pointer instead of empty
string.
* intrinsic.c (gfc_current_intrinsic, gfc_current_intrinsic_arg):
Add 'const' qualifier.
(conv_name): Return a heap allocated string.
(find_conv): Add 'const' qualifier to 'target'.
(add_sym): Use 'gfc_get_string' instead of 'strcpy'.
(make_generic): Check for NULL pointer instead of emptystring.
(make_alias): Use 'gfc_get_string' instead of 'strcpy'.
(add_conv): No need to strcpy result from 'conv_name'.
(sort_actual): Check for NULL pointer instead of emptystring.
* intrinsic.h (gfc_current_intrinsic, gfc_current_intrinsic_arg):
Adapt prototype.
* module.c (compare_true_names): Compare pointers instead of strings
for 'module' member.
(find_true_name): Initialize string fields with gfc_get_string.
(mio_pool_string): New function.
(mio_internal_string): Adapt comment.
(mio_component_ref, mio_component, mio_actual_arg): Use
'mio_pool_string' instead of 'mio_internal_string'.
(mio_symbol_interface): Add 'const' qualifier to string arguments.
Add level of indirection. Use 'mio_pool_string' instead of
'mio_internal_string'.
(load_needed, read_module): Use 'gfc_get_string' instead of 'strcpy'.
(write_common, write_symbol): Use 'mio_pool_string' instead of
'mio_internal_string'.
(write_symbol0, write_symbol1): Likewise, also check for NULL pointer
instead of empty string.
(write_operator, write_generic): Pass correct type variable to
'mio_symbol_interface'.
(write_symtree): Use 'mio_pool_string' instead of
'mio_internal_string'.
* primary.c (match_keyword_arg): Adapt check to possible
case of NULL pointer.  Use 'gfc_get_string' instead of 'strcpy'.
* symbol.c (gfc_add_component, gfc_new_symtree, delete_symtree,
gfc_get_uop, gfc_new_symbol): Use 'gfc_get_string' instead of
'strcpy'.
(ambiguous_symbol): Check for NULL pointer instead of empty string.
(gfc_find_gsymbol, gfc_get_gsymbol): Add 'const' qualifier on string
arguments.
* trans-array.c (gfc_trans_auto_array_allocation): Check for NULL
pointer instead of empty string.
* trans-decl.c (gfc_sym_mangled_identifier,
gfc_sym_mangled_function_id, gfc_finish_var_decl, gfc_get_symbol_decl,
gfc_get_symbol_decl): Likewise.
* trans-io.c (gfc_new_nml_name_expr): Add 'const' qualifier to
argument.  Copy string instead of pointing to it.

From-SVN: r95472
2005-02-23 23:14:12 +01:00
Steven G. Kargl
145cf79b57 check.c (gfc_check_selected_int_kind): New function.
* check.c (gfc_check_selected_int_kind): New function.
	* intrinsic.h: Prototype it.
	* intrinsic.c (add_function): Use it.
	* simplify (gfc_simplify_ceiling,gfc_simplify_floor): Change
	  BT_REAL to BT_INTEGER and use gfc_default_integer_kind.

From-SVN: r95291
2005-02-19 20:29:05 +00:00
Steven G. Kargl
c60d77d4db check.c (gfc_check_int): improve checking of optional kind
* check.c (gfc_check_int): improve checking of optional kind
	* simplify.c (gfc_simplify_int): Change BT_REAL to BT_INTEGER

	* gfortran.dg/int_1.f90: New test.

From-SVN: r95290
2005-02-19 20:07:47 +00:00
Steven G. Kargl
332e7efe7f check.c (gfc_check_achar): New function
* check.c (gfc_check_achar): New function
	* intrinsic.h: Prototype it.
	* intrinsic.c (add_function): Use it.

	* gfortran.dg/achar_1.f90: New test.

From-SVN: r95288
2005-02-19 19:16:09 +00:00
Paul Brook
985aff9c17 re PR fortran/18565 (gfortran: CONJG: false error message about standard violation)
2005-01-29  Paul Brook  <paul@codesourcery.com>

	PR fortran/18565
	* check.c (real_or_complex_check): New function.
	(gfc_check_fn_c, gfc_check_fn_r, gfc_check_fn_rc): New functions.
	* intrinsic.c (add_functions): Use new check functions.
	* intrinsic.h (gfc_check_fn_c, gfc_check_fn_r, gfc_check_fn_rc):
	Add prototypes.
testsuite/
	* gfortran.dg/double_complex_1.f90: New test.

From-SVN: r94412
2005-01-29 17:46:34 +00:00
Kazu Hirata
ec3781807e arith.c, [...]: Update copyright.
* arith.c, array.c, check.c, decl.c, expr.c, f95-lang.c,
	gfortran.h, interface.c, intrinsic.c, io.c, iresolve.c,
	match.c, matchexp.c, misc.c, module.c, options.c, parse.c,
	scanner.c, simplify.c, symbol.c, trans-array.c, trans-expr.c,
	trans-io.c, trans-stmt.c, trans.c: Update copyright.

From-SVN: r93830
2005-01-18 12:11:56 +00:00
Tobias Schlüter
27dfc9c46d arith.c (arctangent2, [...]): Fix whitespace issues.
* arith.c (arctangent2, gfc_arith_init_1, gfc_arith_done_1,
gfc_constant_result, gfc_range_check, gfc_arith_power,
eval_type_intrinsic0, eval_intrinsic_f2, gfc_real2real,
gfc_real2complex, gfc_complex2int, gfc_complex2real,
gfc_complex2complex): Fix whitespace issues.
check.c (must_be, type_check, numeric_check, int_or_real_check,
logical_array_check, array_check, scalar_check, nonoptional_check,
variable_check, dim_check, check_a_kind, gfc_check_a_ikind,
gfc_check_a_xkind, gfc_check_abs, gfc_check_all_any,
gfc_check_allocated, gfc_check_a_p, gfc_check_besn,
gfc_check_btest, gfc_check_char, gfc_check_cmplx, gfc_check_count,
gfc_check_cshift, gfc_check_dcmplx, gfc_check_dble,
gfc_check_digits, gfc_check_dot_product, gfc_check_eoshift,
gfc_check_fnum, gfc_check_g77_math1, gfc_check_huge, gfc_check_i,
gfc_check_iand, gfc_check_ibclr, gfc_check_ibits, gfc_check_ibset,
gfc_check_idnint, gfc_check_ieor, gfc_check_index, gfc_check_int,
gfc_check_ior, gfc_check_ishft, gfc_check_ishftc, gfc_check_kind,
gfc_check_lbound, gfc_check_logical, min_max_args,
gfc_check_min_max_integer, gfc_check_min_max_real,
gfc_check_min_max_double, gfc_check_matmul,
gfc_check_minval_maxval, gfc_check_merge, gfc_check_nearest,
gfc_check_pack, gfc_check_precision, gfc_check_radix,
gfc_check_range, gfc_check_real, gfc_check_repeat,
gfc_check_scale, gfc_check_scan, gfc_check_selected_real_kind,
gfc_check_set_exponent): Fix formatting issues.
(gfc_check_size, gfc_check_sign): Alphabetize function order,
remove whitespace-only line.
(gfc_check_fstat, gfc_check_fstat_sub, gfc_check_stat,
gfc_check_stat_sub, gfc_check_transfer, gfc_check_transpose,
gfc_check_ubound, gfc_check_unpack, gfc_check_verify, gfc_check_x,
gfc_check_cpu_time, gfc_check_date_and_time, gfc_check_mvbits,
gfc_check_random_number, gfc_check_random_seed,
gfc_check_second_sub, gfc_check_system_clock,
gfc_check_getcwd_sub, gfc_check_exit, gfc_check_flush,
gfc_check_umask, gfc_check_umask_sub, gfc_check_unlink,
gfc_check_unlink_sub): Fix formatting issues.

From-SVN: r93093
2005-01-08 23:40:47 +01:00
Steven G. Kargl
d22e48951c arith.c: Add system.h; remove string.h
* arith.c: Add system.h; remove string.h
        * decl.c: Ditto
        * matchexp.c: Ditto
        * parse.c: Ditto
        * resolve.c: Ditto
        * st.c: Ditto
        * check.c: Remove stdlib.h and stdarg.h
        * error.c: Remove stdlib.h, stdarg.h, stdio.h, string.h
        * expr.c: Add system.h; remove stdarg.h, stdio.h, and string.h
        * f95-lang.c: Add system.h; remove stdio.h
        * interface.c: Add system.h; remove stdlib.h and string.h
        * intrinsic.c: Remove stdarg.h, stdio.h, and string.h
        * io.c: Remove string.h
        * simplify.c: Ditto
        * match.c: Remove stdarg.h and string.h
        * misc.c: Update copyright; add system.h; remove stdlib.h,
        string.h, and sys/stat.h
        * module.c: Add system.h; remove string.h, stdio.h, errno.h,
        unistd.h, and time.h
        * option.c: Remove string.h and stdlib.h
        * primary.c: Ditto
        * scanner.c: Update copyright; add system.h; remove stdlib.h,
        stdio.h, string.h, and strings.h
        * symbol.c: Add system.h; remove stdlib.h, stdio.h, and string.h
        * trans-array.c: Remove stdio.h and gmp.h
        * trans-const.c: Ditto
        * trans-expr.c: Ditto
        * trans-io.c: Ditto
        * trans-stmt.c: Ditto
        * trans.c: Ditto
        * trans-intrinsic.c: Remove stdio.h and string.h

From-SVN: r92866
2005-01-03 13:43:55 -08:00
Steven G. Kargl
c3d003d207 re PR fortran/16581 (gfortran F90 bit intrinsics don't work with integer*{1,2,8})
2004-12-12  Steven G. Kargl  <kargls@comcast.net>

	PR fortran/16581
	* check.c (gfc_check_iand, gfc_check_ibclr, gfc_check_ibits,
	gfc_check_ibset, gfc_check_ieor, gfc_check_ior): Remove default
	integer kind check; Issue error for -std=f95 when needed.
	* intrinsic.c (add_functions): Change ieor from GFC_STD_GNU to
	GFC_STD_F95.
	* iresolve.c (gfc_resolve_iand, gfc_resolve_ieor, gfc_resolve_ior):
	Promote arguments to same kind.

From-SVN: r92063
2004-12-12 21:09:09 +00:00
Steven G. Kargl
df65f0938c flush.c: New file.
2004-12-02  Steven G. Kargl  <kargls@comcast.net>
	Paul Brook  <paul@codesourcery.com>

libgfortran/
	* intrinsics/flush.c: New file.
	* intrinsics/fnum.c: ditto
	* intrinsics/stat.c: ditto
	* io/io.h (unit_to_fd): Add prototype.
	* io/unix.c (unit_to_fd): New function.
	* configure.ac: Add test for members of struct stat.  Check for
	sys/types.h and sys/stat.h
	* Makefile.am: Add intrinsics/{flush.c,fnum.c,stat.c}
	* configure.in: Regenerate.
	* config.h.in: Regenerate.
	* Makefile.in: Regenerate.
fortran/
	* check.c (gfc_check_flush, gfc_check_fnum): New functions.
	(gfc_check_fstat, gfc_check_fstat_sub): New functions.
	(gfc_check_stat, gfc_check_stat_sub): New functions.
	* gfortran.h (GFC_ISYM_FNUM,GFC_ISYM_FSTAT,GFC_ISYM_STAT): New symbols
	* intrinsic.c (add_functions,add_subroutines): Add flush, fnum,
	fstat, and stat to intrinsics symbol tables.
	* intrinsic.h (gfc_check_flush, gfc_resolve_stat_sub): Add prototypes.
	(gfc_resolve_fstat_sub, gfc_resolve_stat): Ditto.
	* iresolve.c (gfc_resolve_fnum, gfc_resolve_fstat): New functions.
	(gfc_resolve_stat, gfc_resolve_flush): New functions.
	(gfc_resolve_stat_sub,gfc_resolve_fstat_sub): New functions
	* trans-intrinsic.c (gfc_conv_intrinsic_function): Add new intrinsics.

Co-Authored-By: Paul Brook <paul@codesourcery.com>

From-SVN: r91609
2004-12-02 04:10:26 +00:00
Steven G. Kargl
d8fe26b2cd check.c (gfc_check_getcwd_sub): Fix seg fault.
* check.c (gfc_check_getcwd_sub): Fix seg fault.

	* check.c (gfc_check_exit,gfc_check_umask,gfc_check_umask_sub,
	gfc_check_unlink,gfc_check_unlink_sub): New functions
	* gfortran.h (GFC_ISYM_UMASK,GFC_ISYM_UNLINK): New symbols
	* intrinsic.c (add_functions,add_subroutines): Add umask, unlink,
	exit to intrinsics symbol tables.
	* intrinsic.h (gfc_check_umask,gfc_check_unlink,gfc_check_exit,
	gfc_check_umask_sub,gfc_check_unlink_sub,gfc_resolve_umask,
	gfc_resolve_unlink,gfc_resolve_exit,gfc_resolve_umask_sub,
	gfc_resolve_unlink_sub): Add and sort prototypes.
	* iresolve.c (gfc_resolve_umask,gfc_resolve_unlink,gfc_resolve_exit,
	gfc_resolve_umask_sub,gfc_resolve_unlink_sub): New functions
	* trans-intrinsic.c (gfc_conv_intrinsic_function): Use symbols

libgfortran/
	* Makefile.am: Add intrinsics/{umask.c,unlink.c,exit.c}
	* Makefile.in: Regenerated
	* intrinsics/umask.c: New file
	* intrinsics/unlink.c: ditto
	* intrinsics/exit.c: ditto

From-SVN: r90949
2004-11-20 01:44:49 +00:00
Canqun Yang
7a003d8e2e check.c (gfc_check_rand): Allow missing optional argument.
2004-10-30  Canqun Yang  <canqun@nudt.edu.cn>

	* check.c (gfc_check_rand): Allow missing optional argument.
	(gfc_check_irand): Ditto.
	* intrinsic.c (add_functions): Set arg optional flag for {i,}rand.
libgfortran/
	* intrinsics/rand.c (irand): Handle NULL argument.

From-SVN: r89886
2004-10-30 14:18:34 +00:00
Tobias Schlüter
5b1374e965 re PR fortran/17776 (no subroutine system)
fortran/
PR fortran/17776
* check.c (gfc_check_system_sub): New function.
* gfortran.h (gfc_generic_isym_id): Add GFC_ISYM_SYSTEM.
* intrinsic.c (add_functions): Add 'system'.
(add_subroutines): Add 'system'.
* intrinsic.h (gfc_check_etime_sub, gfc_check_getcwd_sub):
Move prototypes to other suborutines.
(gfc_check_system_sub, gfc_resolve_system, gfc_resolve_system_sub):
Add prototype.
(gfc_resolve_system_clock): Fix formatting of prototype.
* iresolve.c (gfc_resolve_system, gfc_resolve_system_sub): New
functions.
* trans-intrinsic.c (gfc_conv_intrinsic_function): Deal with
GFC_ISYM_SYSTEM.

libgfortran/
PR fortran/17776
* intrinsics/system.c: New file.
* Makefile.am: Add dependency for the new file.
* Makefile.in: Regenerate.

From-SVN: r88532
2004-10-04 23:30:32 +02:00
Steven G. Kargl
a8c60d7fff check.c (gfc_check_getcwd_sub): New function.
2004-09-15  Steven G. Kargl  <kargls@comcast.net>

	* check.c (gfc_check_getcwd_sub): New function.
	* gfortran.h (GFC_ISYM_GETCWD): New symbol.
	* intrinsic.c (add_functions): Add function definition;
	Use symbol.
	* intrinsic.c (add_subroutines): Add subroutine definitions.
	* intrinsic.h: Add prototypes.
	* iresolve.c (gfc_resolve_getcwd, gfc_resolve_getcwd_sub):
	New functions.
	* trans-intrinsic.c (gfc_conv_intrinsic_function): Use symbol.
libgfortran/
	* intrinsics/getcwd.c: New file.
	* Makefile.am: Add getcwd.c.
	* Makefile.in: Regenerated.

From-SVN: r87552
2004-09-15 14:09:17 +00:00