Commit Graph

57 Commits

Author SHA1 Message Date
Tobias Burnus
ee7e677fdd re PR fortran/23994 (PROTECTED attribute (F2003) is not implemented)
fortran/
2006-12-10  Tobias Burnus  <burnus@net-b.de>

    PR fortran/23994
    * interface.c (compare_actual_formal): PROTECTED is incompatible
with intent(out).
    * symbol.c (check_conflict): Check for PROTECTED conflicts.
      (gfc_add_protected): New function.
      (gfc_copy_attr): Copy PROTECTED attribute.
    * decl.c (match_attr_spec): Add PROTECTED support.
      (gfc_match_protected): New function.
    * dump-parse-tree.c (gfc_show_attr): Add PROTECTED support.
    * gfortran.h (gfc_symbol): Add protected flag.
      Add gfc_add_protected prototype.
    * expr.c (gfc_check_pointer_assign): Add PROTECTED support.
    * module.c (ab_attribute, attr_bits, mio_symbol_attribute,
mio_symbol_attribute):
       Add PROTECTED support.
    * resolve.c (resolve_equivalence): Add PROTECTED support.
    * match.c (gfc_match_assignment,)gfc_match_pointer_assignment:
       Check PROTECTED attribute.
    * match.h: Add gfc_match_protected prototype.
    * parse.c (decode_statement): Match PROTECTED statement.
    * primary.c (match_variable): Add PROTECTED support.

testsuite/
2006-12-10  Tobias Burnus  <burnus@net-b.de>

    PR fortran/23994
    * gfortran.dg/protected_1.f90: New test.
    * gfortran.dg/protected_2.f90: New test.
    * gfortran.dg/protected_3.f90: New test.
    * gfortran.dg/protected_4.f90: New test.
    * gfortran.dg/protected_5.f90: New test.
    * gfortran.dg/protected_6.f90: New test.

From-SVN: r119709
2006-12-10 20:53:07 +01:00
Tobias Burnus
2a6dcee5c3 re PR fortran/27546 (IMPORT is broken)
fortran/
2006-11-17  Tobias Burnus  <burnus@net-b.de>

    PR fortran/27546
    * primary.c (gfc_match_rvalue): Added IMPORT support.

testsuite/
2006-11-17  Tobias Burnus  <burnus@net-b.de>

    PR fortran/27546
    * gfortran.dg/import.f90: Extended test.
    * gfortran.dg/import2.f90: Extended test.

From-SVN: r119028
2006-11-20 22:29:32 +01:00
Brooks Moses
350ff03fa9 lang.opt: Remove non-working -qkind= option.
* lang.opt: Remove non-working -qkind= option.
* gfortran.h (gfc_option_t): Remove q_kind member.
* options.c (gfc_init_options): Remove q_kind initialization.
(gfc_handle_option): Remove -qkind= option handling.
* primary.c: (match_real_constant): Remove 'Q' exponent.

From-SVN: r118614
2006-11-08 22:41:55 -08:00
Francois-Xavier Coudert
150675a88b re PR fortran/29067 (gfc_resolve_expr(): Bad expression type)
PR fortran/29067

	* decl.c (gfc_set_constant_character_len): NULL-terminate the
	character constant string.
	* data.c (create_character_intializer): Likewise.
	* expr.c (gfc_simplify_expr): NULL-terminate the substring
	character constant.
	* primary.c (match_hollerith_constant): NULL-terminate the
	character constant string.

	* gfortran.dg/pr29067.f: New test.

From-SVN: r118338
2006-10-31 20:15:22 +00:00
Tobias Burnus
02712c161f primary.c: Revert 'significand'-to-'significant' comment change.
2006-10-16  Tobias Burnus  <burnus@net-b.de>

        * primary.c: Revert 'significand'-to-'significant' comment change.
        * invoke.texi (Warning Options): Minor cleanup for
          -Wimplicit-interface.

From-SVN: r117858
2006-10-18 19:19:23 +02:00
Tobias Burnus
fa9516946c trans-stmt.c: Fix a typo
2006-10-16  Tobias Burnus <burnus@net-b.de>

       * trans-stmt.c: Fix a typo
       * invoke.texi: Fix typos
       * resolve.c: Fix a comment typo
       * trans-decl.c: Fix a comment typo
       * primary.c: Fix a comment typo

From-SVN: r117781
2006-10-16 13:17:29 +02: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
Francois-Xavier Coudert
e227ac577f re PR fortran/29210 ([4.1 only] Name parameter in complex constant not allowed in F95)
PR fortran/29210

	* primary.c (match_sym_complex_part): Named constants as real or
	imaginary part of complex a named constant are only allowed in
	Fortran 2003.

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

From-SVN: r117368
2006-10-02 09:21:45 +00:00
Paul Thomas
fd2aa7ad9f re PR fortran/28526 ('end' is recognized as a variable incorrectly)
2006-09-18 Paul Thomas <pault@gcc.gnu.org>

	PR fortran/28526
	* primary.c (match_variable): If the compiler is in a module
	specification block, an interface block or a contains section,
	reset host_flag to force the changed symbols mechanism.

	PR fortran/29101
	* trans-stmt.c (gfc_trans_character_select): Add the post block
	for the expression to the main block, after the call to
	select_string and the last label.


2006-09-18 Paul Thomas <pault@gcc.gnu.org>

	PR fortran/28526
	* gfortran.dg/keyword_symbol_1.f90: New test.

	* gfortran.dg/spread_shape_1.f90: Add missing warning with
	pedantic compilation option.

From-SVN: r117034
2006-09-18 20:19:50 +00:00
Steven G. Kargl
5056a35047 re PR fortran/28866 (Simple if statements are not so simple)
2006-08-29  Steven G. Kargl  <kargls@comcast.net>

	PR fortran/28866
	* match.c: Wrap copyright.
	(gfc_match_assignment):  Return MATCH_NO for failed lvalue.  Remove
	gotos.  Move error handling of FL_PARAMETER to ...
 	* gfc_match_if: Deal with MATCH_NO from above.
	* primary.c: Wrap copyright.
	(match_variable): ... here.  Improve error messages.


2006-08-29  Steven G. Kargl  <kargls@comcast.net>

	PR fortran/28866
	* gfortran.dg/simpleif_2.f90: New test.
	* gfortran.dg/pr19936_1.f90: Adjust dg-error message.
	* gfortran.dg/enum_5.f90: Ditto.

From-SVN: r116570
2006-08-29 19:47:31 +00:00
Paul Thomas
3e978d3094 re PR fortran/28601 (ICE on reexport of renamed type)
2006-08-20 Paul Thomas <pault@gcc.gnu.org>

	PR fortran/28601
	PR fortran/28630
	* gfortran.h : Eliminate gfc_dt_list structure and reference
	to it in gfc_namespace.
	* resolve.c (resolve_fl_derived): Remove the building of the
	list of derived types for the current namespace.
	* symbol.c (find_renamed_type): New function to find renamed
	derived types by symbol name rather than symtree name.
	(gfc_use_derived): Search parent namespace for identical
	derived type and use it, even if local version is complete,
	except in interface bodies. Ensure that renamed derived types
	are found by call to find_renamed_type. Recurse for derived
	type components.
	(gfc_free_dt_list): Remove.
	(gfc_free_namespace): Remove call to previous.
	* trans-types.c (copy_dt_decls_ifequal): Remove.
	(gfc_get_derived_type): Remove all the paraphenalia for
	association of derived types, including calls to previous.
	* match.c (gfc_match_allocate): Call gfc_use_derived to
	associate any derived types that are being allocated.

	PR fortran/20886
	* resolve.c (resolve_actual_arglist): The passing of
	a generic procedure name as an actual argument is an
	error.

	PR fortran/28735
	* resolve.c (resolve_variable): Check for a symtree before
	resolving references.

	PR fortran/28762
	* primary.c (match_variable): Return MATCH_NO if the symbol
	is that of the program.

	PR fortran/28425
	* trans-expr.c (gfc_trans_subcomponent_assign): Translate
	derived type component expressions other than another derived
	type constructor.

	PR fortran/28496
	* expr.c (find_array_section): Correct errors in
	the handling of a missing start value for the
	index triplet in an array reference.

	PR fortran/18111
	* trans-decl.c (gfc_build_dummy_array_decl): Before resetting
	reference to backend_decl, set it DECL_ARTIFICIAL.
	(gfc_get_symbol_decl): Likewise for original dummy decl, when
	a copy is made of an array.
	(create_function_arglist): Likewise for the _entry paramter
	in entry_masters.
	(build_entry_thunks): Likewise for dummies in entry thunks.

	PR fortran/28600
	* trans-decl.c (gfc_get_symbol_decl): Ensure that the
	DECL_CONTEXT of the length of a character dummy is the
	same as that of the symbol declaration.

	PR fortran/28771
	* decl.c (add_init_expr_to_sym): Remove setting of charlen for
	an initializer of an assumed charlen variable.

	PR fortran/28660
	* trans-decl.c (generate_expr_decls): New function.
	(generate_dependency_declarations): New function.
	(generate_local_decl): Call previous if not either a dummy or
	a declaration in an entry master.

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

	PR fortran/28630
	* gfortran.dg/used_types_2.f90: New test.

	PR fortran/28601
	* gfortran.dg/used_types_3.f90: New test.

	PR fortran/20886
	* gfortran.dg/generic_actual_arg.f90: New test.

	PR fortran/28735
	* gfortran.dg/module_private_array_refs_1.f90: New test.

	PR fortran/28762
	* gfortran.dg/program_name_1.f90: New test.

	PR fortran/28425
	* gfortran.dg/derived_constructor_comps_1.f90: New test.

	PR fortran/28496
	* gfortran.dg/array_initializer_2.f90: New test.

	PR fortran/18111
	* gfortran.dg/unused_artificial_dummies_1.f90: New test. 

	PR fortran/28600
	* gfortran.dg/assumed_charlen_function_4.f90: New test.

	PR fortran/28771
	* gfortran.dg/assumed_charlen_in_main.f90: New test.

	PR fortran/28660
	* gfortran.dg/dependent_decls_1.f90: New test.

From-SVN: r116268
2006-08-20 05:45:43 +00:00
Asher Langton
5270c302f0 re PR fortran/24748 (substring of implicitly typed variable not rejected)
PR fortran/24748
	* primary.c (gfc_match_rvalue): Don't call match_substring for
	implicit non-character types.

	PR fortran/24748
	* gfortran.dg/implicit_8.f90: New.

From-SVN: r114901
2006-06-22 18:30:18 +00:00
Kazu Hirata
eb6d74fa82 options.c, [...]: Fix typos in error messages.
* options.c, primary.c, resolve.c, trans-common.c: Fix typos
	in error messages.

From-SVN: r114183
2006-05-29 05:19:37 +00:00
Paul Thomas
811849c027 re PR fortran/27613 (compile fails with "Unclassifiable statement" error message)
2006-05-21  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/27613
	* primary.c (gfc_match_rvalue): Test if symbol represents a
	direct recursive function reference.  Error if array valued,
	go to function0 otherwise.

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

	PR fortran/27613
	* gfortran.dg/recursive_reference_1.f90: New test.

From-SVN: r113951
2006-05-21 11:53:02 +00:00
Tobias Schlüter
5cf5458549 re PR fortran/18540 (Jumping into blocks gives error rather than warning)
PR fortran/18540
PR fortran/18937
* gfortran.h (BBT_HEADER): Move definition up.
(gfc_st_label): Add BBT_HEADER, remove 'prev' and 'next'.
* io.c (format_asterisk): Adapt initializer.
* resolve.c (resolve_branch): Allow FORTRAN 66 cross-block GOTOs
as extension.
* symbol.c (compare_st_labels): New function.
(gfc_free_st_label, free_st_labels, gfc_get_st_label): Convert to
using balanced binary tree.
* decl.c (match_char_length, gfc_match_old_kind_spec): Do away
with 'cnt'.
(warn_unused_label): Adapt to binary tree.
* match.c (gfc_match_small_literal_int): Only set cnt if non-NULL.
* primary.c (match_kind_param): Do away with cnt.

Also converted the ChangeLog to use latin1 characters.

From-SVN: r109914
2006-01-18 21:54:49 +01:00
Steven G. Kargl
8a8f7eca50 re PR fortran/25106 ([4.0/4.1] statement label is zero)
2005-12-10  Steven G. Kargl <kargls@comcast.net>
 
        PR fortran/25106
        PR fortran/25055
        * match.c (gfc_match_small_literal_int): Add cnt argument;
        (gfc_match_st_label,gfc_match_stopcode): Account for cnt argument.
        * match.h (gfc_match_small_literal_int): Update prototype.
        * decl.c (match_char_length,gfc_match_old_kind_spec): Account for cnt.
        * parse.c (next_free): Ditto.
        * primary.c (match_kind_param): Ditto.

        gfortran.dg/label_1.f90: New test.

From-SVN: r108692
2005-12-16 23:32:29 +00:00
Francois-Xavier Coudert
a34a91f0b7 re PR fortran/25106 ([4.0/4.1] statement label is zero)
PR fortran/25106
	* parse.c (next_free): Use new prototype for gfc_match_st_label.
	Correctly emit hard error if a label is zero.
	* match.c (gfc_match_st_label): Never allow zero as a valid
	label.
	(gfc_match, gfc_match_do, gfc_match_goto): Use new prototype for
	gfc_match_st_label.
	* primary.c (): Use new prototype for gfc_match_st_label.
	* io.c (): Likewise.
	* match.h: Likewise.

From-SVN: r107999
2005-12-03 15:32:04 +00:00
Steven G. Kargl
78019d1649 re PR fortran/24917 (Handling of hexadecimal constants in gfortran)
PR fortran/24917
* primary.c (match_boz_constant):  Implement postfix BOZ constants;
  (match_string_constant): Peek for b, o, z, and x

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

From-SVN: r107568
2005-11-27 15:47:56 +00:00
Tobias Schlüter
c040ffff75 re PR fortran/24643 (Unclassifiable statement on implicitly typed character substring)
fortran/
PR fortran/24643
* primary.c (match_varspec): Check for implicitly typed CHARACTER
variables before matching substrings.

testsuite/
PR fortran/24643
* gfortran.dg/implicit_6.f90, gfortran.dg/implicit_7.f90: New.

From-SVN: r106753
2005-11-10 22:49:29 +01:00
Jakub Jelinek
21dac32c3c primary.c (match_boz_constant): Add missing break after gfc_error.
* primary.c (match_boz_constant): Add missing break after gfc_error.

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

From-SVN: r105420
2005-10-14 21:40:29 +02:00
Jakub Jelinek
7a4ef45bf4 re PR fortran/23663 (rejects entry point as a value)
PR fortran/23663
	* primary.c (match_actual_arg): Handle ENTRY the same way
	as FUNCTION.

	* gfortran.fortran-torture/execute/entry_11.f90: New test.

From-SVN: r104453
2005-09-20 16:37:44 +02: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
Paul Thomas
30aabb86ef re PR fortran/18878 ([4.0 only] erronous error message on vaild USE statement)
2005-09-09  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/18878
	* module.c (find_use_name_n): Based on original
	find_use_name. Either counts number of use names for a
	given real name or returns use name n.
	(find_use_name, number_use_names): Interfaces to the
	function find_use_name_n.
	(read_module): Add the logic and calls to these functions,
	so that mutiple reuses of the same real name are loaded.

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

	PR fortran/22304
	PR fortran/23270
	PR fortran/18870
	PR fortran/16511
	PR fortran/17917
	* gfortran.h: Move definition of BLANK_COMMON_NAME from trans-
	common.c so that it is accessible to module.c. Add common_head
	field to gfc_symbol structure. Add field for the equivalence
	name AND new attr field, in_equivalence.
	* match.c (gfc_match_common, gfc_match_equivalence): In loops
	that flag common block equivalences, emit an error if the
	common blocks are different, using sym->common_head as the
	common block identifier. Ensure that symbols that are equivalence
	associated with a common block are marked as being in_common.
	* module.c (write_blank_common): New.
	(write_common): Use unmangled common block name.
	(load_equiv): New function ported from g95.
	(read_module): Call load_equiv.
	(write_equiv): New function ported from g95. Correct
	string referencing for gfc functions. Give module
	equivalences a unique name.
	(write_module): Call write_equiv and write_blank_common.
	* primary.c (match_variable) Old gfc_match_variable, made
	static and third argument provided to indicate if parent
	namespace to be visited or not.
	(gfc_match_variable) New. Interface to match_variable.
	(gfc_match_equiv_variable) New. Interface to match_variable.
	* trans-common.c (finish_equivalences): Provide the call
	to create_common with a gfc_common_header so that
	module equivalences are made external, rather than local.
	(find_equivalences): Ensure that all members in common block
	equivalences are marked as used. This prevents the subsequent
	call to this function from making local unions.
	* trans-decl.c (gfc_generate_function_code): Move the call to
	gfc_generate_contained_functions to after the call to
	gfc_trans_common so the use-associated, contained common
	blocks produce the correct references.
	(gfc_create_module_variable): Return for equivalenced symbols
	with existing backend declaration.

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

	PR fortran/18878
	* gfortran.dg/module_double_reuse.f90: New.

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

	PR fortran/23270
	PR fortran/22304
	PR fortran/18870
	PR fortran/17917
	PR fortran/16511
	* gfortran.dg/common_equivalence_1.f: New.
	* gfortran.dg/common_equivalence_2.f: New.
	* gfortran.dg/common_equivalence_3.f: New.
	* gfortran.dg/contained_equivalence_1.f90: New.
	* gfortran.dg/module_blank_common.f90: New.
	* gfortran.dg/module_commons_1.f90: New.
	* gfortran.dg/module_equivalence_1.f90: New.
	* gfortran.dg/nested_modules_1.f90: New.
	* gfortran.dg/g77/19990905-0.f: Remove XFAIL, rearrange
	equivalences and add comment to connect the test with
	the PR.

From-SVN: r104060
2005-09-09 00:23:09 +00:00
Tobias Schlüter
4f8ea09e0b [multiple changes]
2005-08-27  Erik Edelmann  <erik.edelmann@iki.fi>

	* trans-array.c (gfc_trans_deferred_array): Fix comments.

2005-08-27  Erik Schnetter  <schnetter@aei.mpg.de>

	* primary.c (match_charkind_name): Fix typo in comment leading to
	function.

From-SVN: r103558
2005-08-27 13:28:51 +02:00
Francois-Xavier Coudert
9da375252f * primary.c (match_hollerith_constant): Fix typo.
From-SVN: r102814
2005-08-06 19:18:45 +00:00
Jakub Jelinek
a8006d0933 re PR fortran/18833 (ICE 'missing spec' on integer/char equivalence)
PR fortran/18833
	PR fortran/20850
	* primary.c (match_varspec): If equiv_flag, don't look at sym's
	attributes, call gfc_match_array_ref up to twice and don't do any
	substring or component processing.
	* resolve.c (resolve_equivalence): Transform REF_ARRAY into
	REF_SUBSTRING or nothing if needed.  Check that substrings
	don't have zero length.

	* gfortran.dg/equiv_1.f90: New test.
	* gfortran.dg/equiv_2.f90: New test.
	* gfortran.fortran-torture/execute/equiv_2.f90: New test.
	* gfortran.fortran-torture/execute/equiv_3.f90: New test.
	* gfortran.fortran-torture/execute/equiv_4.f90: New test.

From-SVN: r102801
2005-08-06 12:00:53 +02:00
Jakub Jelinek
d71b89ca60 gfortran.h (MAX_ERROR_MESSAGE): Remove.
* gfortran.h (MAX_ERROR_MESSAGE): Remove.
	(gfc_error_buf): Add allocated and index fields.  Change message
	field from array to a pointer.
	* error.c (use_warning_buffer, error_ptr, warning_ptr): Remove.
	(cur_error_buffer): New variable.
	(error_char): Use cur_error_buffer->{message,index} instead of
	{warning,error}_{buffer.message,ptr}.  Reallocate message buffer
	if too small.
	(gfc_warning, gfc_notify_std, gfc_error, gfc_error_now): Setup
	cur_error_buffer and its index rather than {warning,error}_ptr
	and use_warning_buffer.
	(gfc_warning_check, gfc_error_check): Don't print anything if
	message is NULL.
	(gfc_push_error): Allocate saved message with xstrdup.
	(gfc_pop_error): Free saved message with gfc_free.
	(gfc_free_error): New function.
	* primary.c (match_complex_constant): Call gfc_free_error if
	gfc_pop_error will not be called.
	* match.c (gfc_match_st_function): Likewise.

	* gfortran.dg/g77/cpp6.f: New test.

From-SVN: r102015
2005-07-14 12:12:17 +02:00
Jakub Jelinek
0921bc44f7 primary.c (gfc_match_rvalue): Handle ENTRY the same way as FUNCTION.
* primary.c (gfc_match_rvalue): Handle ENTRY the same way
	as FUNCTION.

	* gfortran.fortran-torture/execute/entry_10.f90: New test.

From-SVN: r101758
2005-07-08 12:06:57 +02:00
Steven Bosscher
24bce1fd23 primary.c (match_hollerith_constant): Use int, not unsigned int, for the hollerith length.
* primary.c (match_hollerith_constant): Use int, not unsigned int,
	for the hollerith length.  Fix indentation.

From-SVN: r101707
2005-07-07 11:59:29 +00:00
Feng Wang
d3642f893a For the 60th anniversary of Chinese people��s Anti-Japan war victory.
2005-07-07  Feng Wang  <fengwang@nudt.edu.cn>

	PR fortran/16531
	PR fortran/15966
	PR fortran/18781
	* arith.c (gfc_hollerith2int, gfc_hollerith2real,
	gfc_hollerith2complex, gfc_hollerith2character, gfc_hollerith2logical):
	New functions.
	(eval_intrinsic): Don't evaluate if Hollerith constant arguments exist.
	* arith.h (gfc_hollerith2int, gfc_hollerith2real,
	gfc_hollerith2complex, gfc_hollerith2character, gfc_hollerith2logical):
	Add prototypes.
	* expr.c (free_expr0): Free memery allocated for Hollerith constant.
	(gfc_copy_expr): Allocate and copy string if Expr is from Hollerith.
	(gfc_check_assign): Enable conversion from Hollerith to other.
	* gfortran.h (bt): Add BT_HOLLERITH.
	(gfc_expr): Add from_H flag.
	* intrinsic.c (gfc_type_letter): Return 'h' for BT_HOLLERITH.
	(add_conversions): Add conversions from Hollerith constant to other.
	(do_simplify): Don't simplify if  Hollerith constant arguments exist.
	* io.c (resolve_tag): Enable array in FORMAT tag under GFC_STD_GNU.
	* misc.c (gfc_basetype_name): Return "HOLLERITH" for BT_HOLLERITH.
	(gfc_type_name): Print "HOLLERITH" for BT_HOLLERITH.
	* primary.c (match_hollerith_constant): New function.
	(gfc_match_literal_constant): Add match Hollerith before Integer.
	* simplify.c (gfc_convert_constant): Add conversion from Hollerith
	to other.
	* trans-const.c (gfc_conv_constant_to_tree): Use VIEW_CONVERT_EXPR to
	convert Hollerith constant to tree.
	* trans-io.c (gfc_convert_array_to_string): Get array's address and
	length to set string expr.
	(set_string): Deal with array assigned Hollerith constant and character
	array.
	* gfortran.texi: Document Hollerith constants as extention support.

2005-07-07  Feng Wang  <fengwang@nudt.edu.cn>

	PR fortran/16531
	PR fortran/15966
	PR fortran/18781
	* gfortran.dg/hollerith.f90: New.
	* gfortran.dg/hollerith2.f90: New.
	* gfortran.dg/hollerith3.f90: New.
	* gfortran.dg/hollerith4.f90: New.
	* gfortran.dg/hollerith_f95.f90: New.
	* gfortran.dg/hollerith_legacy.f90: New.
	* gfortran.dg/g77/cpp4.F: New. Port from g77.

2005-07-07  Feng Wang  <fengwang@nudt.edu.cn>

	PR fortran/16531
	* io/transfer.c (formatted_transfer): Enable FMT_A on other types to
	support Hollerith constants.

From-SVN: r101688
2005-07-07 07:54:58 +00:00
Kelley Cook
ab57747bb0 Update FSF address.
From-SVN: r101310
2005-06-25 00:40:37 +00:00
François-Xavier Coudert
131c66cd15 gfortran.h: Add flag_backslash compile-time option.
* gfortran.h: Add flag_backslash compile-time option.
	* lang.opt: Add support for -fbackslash option.
	* options.c: Likewise.
	* primary.c: Implement behavior for -fno-backslash.
	* invoke.texi: Add doc for -fbackslash option.
	* gfortran.texi: Remove mention of -fno-backslash as a
	possible extension.
	* gfortran.dg/backslash_1.f90: New test.
	* gfortran.dg/backslash_2.f90: New test.

From-SVN: r101216
2005-06-20 20:14:20 +00:00
Erik Edelmann
b7263e8f2f re PR fortran/19926 ([4.0 only] Incorrect rank with PARAMETER and array element.)
PR fortran/19926
* primary.c (gfc_match_rvalue):  expr_type can be EXPR_CONSTANT
  for an array; check that sym->as is NULL.

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

From-SVN: r101161
2005-06-18 18:16:22 +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
Steven G. Kargl
87ebdf2fab re PR fortran/19936 (confused error message about implied do loop)
PR 19936
* primary.c (match_complex_constant): Mangled complex constant may
be an implied do-loop.  Give implied do-loop matcher a chance.

From-SVN: r95951
2005-03-05 23:35:44 +00:00
Steven G. Kargl
f4e7375a8a re PR fortran/20058 (Error on kind 16 hex data statement)
PR fortran/20058
* trans-types.c (gfc_max_integer_kind): Declare
  (gfc_init_kinds): Initialize it.
* gfortran.h (gfc_max_integer_kind): extern it.
* primary.c (match_boz_constant): Use it; remove gfortran extension
  of kind suffixes on BOZ literal constants

From-SVN: r95643
2005-02-28 00:38:12 +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
Tobias Schlüter
231b2fccf5 gfortran.h (gfc_add_dimension, [...]): Add argument.
* gfortran.h (gfc_add_dimension, gfc_add_result, gfc_add_save,
gfc_add_dummy, gfc_add_generic, gfc_add_in_common, gfc_add_data,
gfc_add_in_namelist, gfc_add_sequence, gfc_add_function,
gfc_add_subroutine, gfc_add_access, gfc_add_flavor, gfc_add_entry,
gfc_add_procedure): Add argument.
* array.c (gfc_set_array_spec), decl.c (var_element, get_proc_name,
gfc_match_null, match_type_spec, match_attr_spec,
gfc_match_formal_arglist, match_result, gfc_match_function_decl):
Update callers to match.
(gfc_match_entry) : Likewise, fix comment typo.
(gfc_match_subroutine, attr_decl1, gfc_add_dimension,
access_attr_decl, do_parm, gfc_match_save, gfc_match_modproc,
gfc_match_derived_decl): Update callers.
* interface.c (gfc_match_interface): Likewise.
* match.c (gfc_match_label, gfc_add_flavor,
gfc_match_call, gfc_match_common, gfc_match_block_data,
gfc_match_namelist, gfc_match_module, gfc_match_st_function):
Likewise.
* parse.c (parse_derived, parse_interface, parse_contained),
primary.c (gfc_match_rvalue, gfc_match_variable): Likewise.
* resolve.c (resolve_formal_arglist, resolve_entries): Update callers.
* symbol.c (check_conflict, check_used): Add new 'name' argument,
use when printing error message.
(gfc_add_dimension, gfc_add_result, gfc_add_save, gfc_add_dummy,
gfc_add_generic, gfc_add_in_common, gfc_add_data,
gfc_add_in_namelist, gfc_add_sequence, gfc_add_function,
gfc_add_subroutine, gfc_add_access, gfc_add_flavor, gfc_add_entry,
gfc_add_procedure): Add new 'name' argument.  Pass along to
check_conflict and check_used.
(gfc_add_allocatable, gfc_add_external, gfc_add_intrinsic,
gfc_add_optional, gfc_add_pointer, gfc_add_target, gfc_add_elemental,
gfc_add_pure, gfc_add_recursive, gfc_add_intent,
gfc_add_explicit_interface, gfc_copy_attr): Pass NULL for new
argument in calls to any of the modified functions.

From-SVN: r94718
2005-02-07 23:16:13 +01:00
Paul Brook
69029c61aa re PR fortran/17941 (gfortran: parser chokes on complex literal constant)
2004-01-23  Paul Brook  <paul@codesourcery.com>
	Steven G. Kargl  <kargls@comcast.net>

	PR fortran/17941
	* arith.c (gfc_convert_real): Remove sign handling.
	* primary.c (match_digits): Allow whitespace after initial sign.
	(match_real_const): Handle signs here.  Allow whitespace after
	initial sign.  Remove dead code.
	(match_const_complex_part): Remove.
	(match_complex_part): Use match_{real,integer}_const.
	(match_complex_constant): Cross-promote integer types.
testsuite/
	* gfortran.dg/real_const_1.f: New test.
	* gfortran.dg/real_const_2.f90: New test.
	* gfortran.dg/complex_int_1.f90: New test.

From-SVN: r94127
2005-01-23 22:29:41 +00:00
Paul Brook
0dd973dd97 primary.c (gfc_match_rvalue): Only apply implicit type if variable does not have an explicit type.
2005-01-22  Paul Brook  <paul@codesourcery.com>

	* primary.c (gfc_match_rvalue): Only apply implicit type if variable
	does not have an explicit type.
	(gfc_match_variable): Resolve implicit derived types in all cases.
	Resolve contained function types from their own namespace, not the
	parent.
	* resolve.c (resolve_contained_fntype): Remove duplicate sym->result
	checking.  Resolve from the contained namespace, not the parent.
testsuite/
	* gfortran.dg/implicit_2.f90: New test.

From-SVN: r94066
2005-01-22 15:24:09 +00:00
Tobias Schlüter
da8309c66d primary.c (check_digit): Call 'ISXDIGIT' instead of assuming ASCII-like character encoding.
* primary.c (check_digit): Call 'ISXDIGIT' instead of assuming
ASCII-like character encoding.

From-SVN: r93713
2005-01-15 23:38:01 +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
Kazu Hirata
f7b529fae7 arith.c, [...]: Fix comment formatting.
* arith.c, array.c, decl.c, expr.c, f95-lang.c, gfortran.h,
	gfortranspec.c, interface.c, intrinsic.c, iresolve.c, match.c,
	module.c, parse.c, parse.h, primary.c, resolve.c, scanner.c,
	trans-array.c, trans-array.h, trans-expr.c, trans-intrinsic.c,
	trans-io.c, trans-stmt.c, trans.h: Fix comment formatting.

From-SVN: r90266
2004-11-08 14:56:41 +00:00
Tobias Schlüter
5d874166a8 primary.c (match_boz_constant): Allow kind parameter suffixes.
fortran/
* primary.c (match_boz_constant): Allow kind parameter suffixes.
Move standard warning further to the front.

testsuite/
* gfortran.fortran-torture/execute/intrinsic_mvbits.f90,
gfortran.dg/ishft.f90: Add more tests.

From-SVN: r88690
2004-10-07 17:12:06 +02:00
Tobias Schlüter
d1d61a0086 * primary.c: Update copyright boilerplate to say GCC.
From-SVN: r86826
2004-08-31 15:35:01 +02:00
Tobias Schlüter
9d64df18fd gfortran.h (gfc_default_*_kind): Remove prototypes, add extern variable declaration of same name.
* gfortran.h (gfc_default_*_kind): Remove prototypes, add extern
variable declaration of same name.
* arith.c, check.c, decl.c, dump_parse_tree.c, expr.c,
intrinsic.c, io.c, iresolve.c, match.c, options.c, primary.c,
resolve.c, simplify.c, symbol.c, trans-const.c, trans-io.c:
Replace all calls to gfc_default_*_kind with variable accesses.
* trans-types.c: Same as above.
(gfc_default_*_kind_1): Rename to gfc_default_*_kind, remove
static qualifier. Replace all occurences.
(gfc_default_*_kind): Remove functions.

From-SVN: r86662
2004-08-27 16:49:35 +02:00
Richard Henderson
e7a2d5fb77 arith.c (gfc_validate_kind): Add may_fail argument; abort if false and we don't validate the kind.
* arith.c (gfc_validate_kind): Add may_fail argument; abort if
        false and we don't validate the kind.
        (gfc_check_integer_range, gfc_check_real_range): Update to match.
        * check.c (kind_check): Likewise.
        * decl.c (gfc_match_old_kind_spec, gfc_match_kind_spec): Likewise.
        (match_char_spec, match_logical_spec): Likewise.
        * gfortran.h (gfc_validate_kind): Likewise.
        * options.c (gfc_handle_option): Likewise.
        * primary.c (match_integer_constant, match_real_constant,
        match_string_constant, match_logical_constant,
        match_const_complex_part): Likewise.
        * simplify.c (get_kind, gfc_simplify_bit_size, gfc_simplify_digits,
        gfc_simplify_epsilon, gfc_simplify_huge, gfc_simplify_ibclr,
        gfc_simplify_ibset, gfc_simplify_ishft, gfc_simplify_ishftc,
        gfc_simplify_maxexponent, gfc_simplify_minexponent,
        gfc_simplify_nearest, gfc_simplify_not, gfc_simplify_precision,
        gfc_simplify_radix, gfc_simplify_range, gfc_simplify_rrspacing,
        gfc_simplify_scale, gfc_simplify_spacing, gfc_simplify_tan,
        gfc_simplify_tiny): Likewise.
        * trans-intrinsic.c (gfc_conv_intrinsic_aint, gfc_conv_intrinsic_mod,
        gfc_conv_intrinsic_minmaxloc, gfc_conv_intrinsic_minmaxval,
        prepare_arg_info): Likewise.

From-SVN: r86608
2004-08-25 23:07:52 -07:00
Steven G. Kargl
f8e566e525 arith.c: Add #define for model numbers.
2004-08-06  Steven G. Kargl  <kargls@comcast.net>

	* arith.c: Add #define for model numbers.  Remove global GMP variables.
	(natural_logarithm,common_logarithm,exponential,sine,
	cosine,arctangent,hypercos,hypersine ): Remove.
	(gfc_mpfr_to_mpz,gfc_set_model_kind,gfc_set_model): New functions.
	(arctangent2,gfc_arith_init_1,gfc_arith_done_1
	gfc_check_real_range, gfc_constant_result, gfc_range_check,
	gfc_arith_uminus,gfc_arith_plus, gfc_arith_minus, gfc_arith_times,
	gfc_arith_divide,complex_reciprocal,complex_pow_ui,
	gfc_arith_power,gfc_compare_expr,compare_complex,gfc_convert_real,
	gfc_convert_complex,gfc_int2real,gfc_int2complex,
	gfc_real2int,gfc_real2real,gfc_real2complex,
	gfc_complex2int,gfc_complex2real,gfc_complex2complex): Convert GMP
	to MPFR, use new functions.
	* arith.h: Remove extern global variables.
	(natural_logarithm,common_logarithm,exponential, sine, cosine,
	arctangent,hypercos,hypersine): Remove prototypes.
	(arctangent2): Update prototype from GMP to MPFR.
	(gfc_mpfr_to_mpz, gfc_set_model_kind,gfc_set_model): Add prototypes.
	* dump-parse-tree.c (gfc_show_expr): Convert GMP to MPFR.
	* expr.c (free_expr0,gfc_copy_expr): Convert GMP to MPFR.
	* gfortran.h (GFC_REAL_BITS): Remove.
	(arith): Add ARITH_NAN.
	Include mpfr.h.  Define GFC_RND_MODE.
	Rename GCC_GFORTRAN_H GFC_GFC_H.
	(gfc_expr): Convert GMP to MPFR.
	* module.c: Add arith.h, correct type in comment.
	(mio_gmp_real): Convert GMP to MPFR.
	(mio_expr):  Use gfc_set_model_kind().
	* primary.c:  Update copyright date with 2004.
	(match_real_constant,match_const_complex_part): Convert GMP to MPFR.
	* simplify.c: Remove global GMP variables
	(gfc_simplify_abs,gfc_simplify_acos,gfc_simplify_aimag,
	gfc_simplify_aint,gfc_simplify_dint,gfc_simplify_anint,
	gfc_simplify_dnint,gfc_simplify_asin,gfc_simplify_atan,
	gfc_simplify_atan2,gfc_simplify_ceiling,simplify_cmplx,
	gfc_simplify_conjg,gfc_simplify_cos,gfc_simplify_cosh,
	gfc_simplify_dim,gfc_simplify_dprod,gfc_simplify_epsilon,
	gfc_simplify_exp,gfc_simplify_exponent,gfc_simplify_floor,
	gfc_simplify_fraction,gfc_simplify_huge,gfc_simplify_int,
	gfc_simplify_ifix,gfc_simplify_idint,gfc_simplify_log,
	gfc_simplify_log10,simplify_min_max,gfc_simplify_mod,
	gfc_simplify_modulo,gfc_simplify_nearest,simplify_nint,
	gfc_simplify_rrspacing,gfc_simplify_scale,
	gfc_simplify_set_exponent,gfc_simplify_sign,gfc_simplify_sin,
	gfc_simplify_sinh,gfc_simplify_spacing,gfc_simplify_sqrt,
	gfc_simplify_tan,gfc_simplify_tanh,gfc_simplify_tiny,
	gfc_simplify_init_1,gfc_simplify_done_1):  Convert GMP to MPFR.
	Use new functions.
	* trans-const.c (gfc_conv_mpfr_to_tree): Rename from
	gfc_conv_mpf_to_tree.  Convert it to use MPFR
	(gfc_conv_constant_to_tree): Use it.
	* trans-const.h: Update prototype for gfc_conv_mpfr_to_tree().
	* trans-intrinsic.c: Add arith.h, remove gmp.h
	(gfc_conv_intrinsic_aint,gfc_conv_intrinsic_mod): Convert GMP to MPFR.

From-SVN: r85652
2004-08-06 20:36:05 +00:00