OSDN Git Service

* arith.c: (gfc_arith_concat, gfc_compare_string,
[pf3gnuchains/gcc-fork.git] / gcc / fortran / ChangeLog
index 49c8a0c..66873c0 100644 (file)
@@ -1,3 +1,328 @@
+2008-05-06  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
+
+       * arith.c: (gfc_arith_concat, gfc_compare_string,
+       gfc_compare_with_Cstring, hollerith2representation,
+       gfc_hollerith2int, gfc_hollerith2real, gfc_hollerith2complex,
+       gfc_hollerith2character, gfc_hollerith2logical): Use wide
+       characters for character constants.
+       * data.c (create_character_intializer): Likewise.
+       * decl.c (gfc_set_constant_character_len): Likewise.
+       * dump-parse-tree.c (show_char_const): Correctly dump wide
+       character strings.
+       error.c (print_wide_char): Rename into gfc_print_wide_char.
+       (show_locus): Adapt to new prototype of gfc_print_wide_char.
+       expr.c (free_expr0): Representation is now disjunct from
+       character string value, so we always free it.
+       (gfc_copy_expr, find_substring_ref, gfc_simplify_expr): Adapt
+       to wide character strings.
+       * gfortran.h (gfc_expr): Make value.character.string a wide string.
+       (gfc_wide_toupper, gfc_wide_strncasecmp, gfc_wide_memset,
+       gfc_widechar_to_char, gfc_char_to_widechar): New prototypes.
+       (gfc_get_wide_string): New macro.
+       (gfc_print_wide_char): New prototype.
+       * io.c (format_string): Make a wide string.
+       (next_char, gfc_match_format, compare_to_allowed_values, 
+       gfc_match_open): Deal with wide strings.
+       * module.c (mio_expr): Convert between wide strings and ASCII ones.
+       * primary.c (match_hollerith_constant, match_charkind_name): 
+       Handle wide strings.
+       * resolve.c (build_default_init_expr): Likewise.
+       * scanner.c (gfc_wide_toupper, gfc_wide_memset,
+       gfc_char_to_widechar): New functions.
+       (wide_strchr, gfc_widechar_to_char, gfc_wide_strncasecmp):
+       Changes in prototypes.
+       (gfc_define_undef_line, load_line, preprocessor_line,
+       include_line, load_file, gfc_read_orig_filename): Handle wide
+       strings.
+       * simplify.c (gfc_simplify_achar, gfc_simplify_adjustl,
+       gfc_simplify_adjustr, gfc_simplify_char, gfc_simplify_iachar,
+       gfc_simplify_ichar, simplify_min_max, gfc_simplify_new_line,
+       gfc_simplify_repeat): Handle wide strings.
+       (wide_strspn, wide_strcspn): New helper functions.
+       (gfc_simplify_scan, gfc_simplify_trim, gfc_simplify_verify):
+       Handle wide strings.
+       * symbol.c (generate_isocbinding_symbol): Likewise.
+       * target-memory.c (size_character, gfc_target_expr_size,
+       encode_character, gfc_target_encode_expr, gfc_interpret_character,
+       gfc_target_interpret_expr): Handle wide strings.
+       * trans-const.c (gfc_conv_string_init): Lower wide strings to
+       narrow ones.
+       (gfc_conv_constant_to_tree): Likewise.
+       * trans-expr.c (gfc_conv_substring_expr): Handle wide strings.
+       * trans-io.c (gfc_new_nml_name_expr): Likewise.
+       * trans-stmt.c (gfc_trans_label_assign): Likewise.
+
+2008-05-06  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
+
+       * simplify.c (gfc_simplify_bessel_j0,gfc_simplify_bessel_j1,
+       gfc_simplify_bessel_jn,gfc_simplify_bessel_y0,
+       gfc_simplify_bessel_y1,gfc_simplify_bessel_yn): Mark arguments
+       with ATTRIBUTE_UNUSED.
+
+2008-05-06  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
+
+       * check.c (gfc_check_sizeof): Switch to ATTRIBUTE_UNUSED.
+       * simplify.c (gfc_simplify_lgamma): Likewise.
+
+2008-05-06  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
+
+       * openmp.c (gfc_match_omp_eos): Use gfc_next_ascii_char and
+       gfc_peek_ascii_char.
+       * decl.c (gfc_match_kind_spec, gfc_match_type_spec,
+       gfc_match_implicit_none, match_implicit_range, gfc_match_implicit,
+       match_string_p, match_attr_spec, gfc_match_suffix,
+       match_procedure_decl, gfc_match_entry, gfc_match_subroutine):
+       Likewise.
+       * gfortran.h (gfc_char_t): New type.
+       (gfc_linebuf): Make line member a gfc_char_t.
+       (locus): Make nextc member a gfc_char_t.
+       (gfc_wide_is_printable, gfc_wide_is_digit, gfc_wide_fits_in_byte,
+       gfc_wide_tolower, gfc_wide_strlen, gfc_next_ascii_char,
+       gfc_peek_ascii_char, gfc_check_digit): New prototypes.
+       * error.c (print_wide_char): New function.
+       (show_locus): Use print_wide_char and gfc_wide_strlen.
+       * io.c (next_char): Use gfc_char_t type.
+       (match_io): Use gfc_peek_ascii_char and gfc_next_ascii_char.
+       * match.c (gfc_match_parens, gfc_match_eos,
+       gfc_match_small_literal_int, gfc_match_name, gfc_match_name_C,
+       gfc_match_intrinsic_op, gfc_match_char,  gfc_match_return,
+       gfc_match_common): Likewise.
+       * match.h (gfc_match_special_char): Change prototype.
+       * parse.c (decode_specification_statement, decode_statement,
+       decode_omp_directive, next_free, next_fixed): Use
+       gfc_peek_ascii_char and gfc_next_ascii_char.
+       * primary.c (gfc_check_digit): Change name.
+       (match_digits, match_hollerith_constant, match_boz_constant,
+       match_real_constant, next_string_char, match_charkind_name,
+       match_string_constant, match_logical_constant_string,
+       match_complex_constant, match_actual_arg, match_varspec,
+       gfc_match_rvalue, match_variable): Use gfc_peek_ascii_char and
+       gfc_next_ascii_char.
+       * scanner.c (gfc_wide_fits_in_byte, wide_is_ascii,
+       gfc_wide_is_printable, gfc_wide_tolower, gfc_wide_is_digit,
+       gfc_wide_is_digit, wide_atoi, gfc_wide_strlen, wide_strcpy,
+       wide_strchr, widechar_to_char, wide_strncmp, wide_strncasecmp,
+       gfc_next_ascii_char, gfc_peek_ascii_char):
+       New functions.
+       (next_char, gfc_define_undef_line, skip_free_comments,
+       gfc_next_char_literal, gfc_next_char, gfc_peek_char,
+       gfc_error_recovery, load_line, preprocessor_line, include_line,
+       load_file, gfc_read_orig_filename): Use gfc_char_t for source
+       characters and the {gfc_,}wide_* functions to manipulate wide
+       strings.
+
+2008-05-06  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/36117
+       * intrinsic.c (add_functions): Call gfc_simplify_bessel_*.
+       * intrinsic.h: Add prototypes for gfc_simplify_bessel_*.
+       * simplify.c (gfc_simplify_bessel_j0,gfc_simplify_bessel_j1,
+       gfc_simplify_bessel_jn,gfc_simplify_bessel_y0,
+       gfc_simplify_bessel_y1,gfc_simplify_bessel_yn): New.
+
+2008-05-03  Janus Weil  <jaydub66@gmail.com>
+
+       * misc.c (gfc_clear_ts): Set interface to NULL.
+
+2008-05-03  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+       PR fortran/33268
+       * gfortran.h: Add extra_comma pointer to gfc_dt structure. Add iokind to
+       gfc_expr value union. Add io_kind enum to here from io.c.
+       * io.c (gfc_free_dt): Free extra_comma.
+       (gfc_resolve_dt): If an extra comma was encountered and io_unit is type
+       BT_CHARACTER, resolve to format_expr and set default unit.  Error if
+       io_kind is M_WRITE. (match_io):  Match the extra comma and set new
+       pointer, extra_comma.
+
+2008-05-01  Bud Davis  <bdavis9659@sbcglobal.net>
+
+       PR35940/Fortran
+       * simplify.c (gfc_simplify_index): Check for direction argument 
+       being a constant.
+
+2008-05-01  Janus Weil  <jaydub66@gmail.com>
+
+       * gfortran.h (struct gfc_symbol): Moving "interface" member to
+       gfc_typespec (plus fixing a small docu error).
+       * interface.c (gfc_procedure_use): Ditto.
+       * decl.c (match_procedure_decl): Ditto.
+       * resolve.c (resolve_specific_f0,
+       resolve_specific_f0, resolve_symbol): Ditto.
+
+2008-04-30  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
+
+       * intrinsic.c (add_functions): Add SELECTED_CHAR_KIND intrinsic.
+       * intrinsic.h (gfc_check_selected_char_kind,
+       gfc_simplify_selected_char_kind): New prototypes.
+       * gfortran.h (gfc_isym_id): Add GFC_ISYM_SC_KIND.
+       * trans.h (gfor_fndecl_sc_kind): New function decl.
+       * trans-decl.c (gfor_fndecl_sc_kind): Build new decl.
+       * arith.c (gfc_compare_with_Cstring): New function.
+       * arith.h (gfc_compare_with_Cstring): New prototype.
+       * check.c (gfc_check_selected_char_kind): New function.
+       * primary.c (match_string_constant, match_kind_param): Mark
+       symbols used as literal constant kind param as referenced.
+       * trans-intrinsic.c (gfc_conv_intrinsic_sc_kind): New function.
+       (gfc_conv_intrinsic_function): Call gfc_conv_intrinsic_sc_kind.
+       * intrinsic.texi (SELECTED_CHAR_KIND): Document new intrinsic.
+       * simplify.c (gfc_simplify_selected_char_kind): New function.
+
+2008-04-28  Paul Thomas  <pault@gcc.gnu.org>
+
+       PR fortran/35997
+       * module.c (find_symbol): Do not return a result for a symbol
+       that has been renamed in another module.
+
+2008-04-26  George Helffrich <george@gcc.gnu.org>
+
+       PR fortran/35892
+       PR fortran/35154
+       * trans-common.c (create_common):  Add decl to function
+       chain (if inside one) to preserve identifier scope in debug output.
+
+2008-04-25  Jan Hubicka  <jh@suse.cz>
+
+       * trans-decl.c (trans_function_start): Update.
+
+2008-04-25  Tobias Burnus  <burnus@net-b.de>
+           Daniel Franke <franke.daniel@gmail.com>
+
+       PR fortran/35156
+       * gfortranspec.c (lang_specific_driver): Deprecate
+       -M option; fix ICE when "-M" is last argument and
+       make "-M<dir>" work.
+       * options.c (gfc_handle_module_path_options): 
+       Use -J instead of -M in error messages.
+       * invoke.texi: Mark -M as depecated.
+
+2008-04-23  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+           Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
+
+       PR fortran/35994
+       * trans-instrinsic.c (gfc_conv_intrinsic_minmaxloc): Correctly adjust
+       loop counter offset.
+
+2008-04-23  Paolo Bonzini  <bonzini@gnu.org>
+
+       * trans-expr.c (gfc_conv_structure): Don't set TREE_INVARIANT.
+       * trans-array.c (gfc_build_null_descriptor): Don't set TREE_INVARIANT.
+       (gfc_trans_array_constructor_value): Don't set TREE_INVARIANT.
+       (gfc_build_constant_array_constructor): Don't set TREE_INVARIANT.
+       (gfc_conv_array_initializer): Don't set TREE_INVARIANT.
+       * trans-common.c (get_init_field): Don't set TREE_INVARIANT.
+       (create_common): Don't set TREE_INVARIANT.
+       * trans-stmt.c (gfc_trans_character_select): Don't set TREE_INVARIANT.
+       * trans-decl.c (gfc_generate_function_code): Don't set TREE_INVARIANT.
+
+2008-04-21  Steve Ellcey  <sje@cup.hp.com>
+
+       * f95-lang.c (gfc_init_decl_processing): use ptr_mode instead of Pmode.
+
+2008-04-21  Daniel Franke  <franke.daniel@gmail.com>
+
+       PR fortran/35019
+       * gfortranspec.c (lookup_option): Properly handle separated arguments
+       in -J option, print missing argument message when necessary.
+
+2008-04-20  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+       PR fortran/35882
+       * scanner.c (skip_fixed_comments): Update continue_line when comment is
+       detected. (gfc_next_char_literal): Likewise.
+
+2008-04-19  Paul Thomas  <pault@gcc.gnu.org>
+
+       PR fortran/35944
+       PR fortran/35946
+       PR fortran/35947
+       * trans_array.c (gfc_trans_array_constructor): Temporarily
+       realign loop, if loop->from is not zero, before creating
+       the temporary array and provide an offset.
+
+       PR fortran/35959
+       * trans-decl.c (gfc_init_default_dt): Add gfc_ prefix to name
+       and allow for NULL body.  Change all references from
+       init_default_dt to gfc_init_default_dt.
+       * trans.h : Add prototype for gfc_init_default_dt.
+       * trans-array.c (gfc_trans_deferred_vars): After nullification
+       call gfc_init_default_dt for derived types with allocatable
+       components.
+
+2008-04-18  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+       PR fortran/35892
+       * trans-common.c (create_common): Revert patch causing regression.
+
+2008-04-16  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+       PR fortran/35724
+       * iresolve.c (gfc_resolve_eoshift): Check for NULL symtree in test for
+       optional argument attribute.
+       
+2008-04-16  Paul Thomas  <pault@gcc.gnu.org>
+
+       PR fortran/35932
+       * trans-intrinsic.c (gfc_conv_intrinsic_char): Even though KIND
+       is not used, the argument must be converted.
+
+2008-04-16  Jakub Jelinek  <jakub@redhat.com>
+
+       PR target/35662
+       * f95-lang.c (gfc_init_builtin_functions): Make sure
+       BUILT_IN_SINCOS{,F,L} types aren't varargs.
+
+2008-04-15  Paul Thomas  <pault@gcc.gnu.org>
+
+       PR fortran/35864
+       * expr.c (scalarize_intrinsic_call): Reorder identification of
+       array argument so that if one is not found a segfault does not
+       occur.  Return FAILURE if all scalar arguments.
+
+2008-04-13  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+           Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/35882
+       * options.c (gfc_init_options): Set the default maximum continuation
+       lines to 255 for both free and fixed form source for warnings.
+       (gfc_handle_option): Set -std=f95 fixed form max continuations to 19 and
+       the -std=f95 free form max continuations to 39 for warnings.
+       * scanner.c (gfc_next_char_literal): Adjust the current_line number only
+       if it is less than the current locus.
+
+2008-04-07  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+       PR fortran/25829 28655
+       * io.c (io_tag): Add new tags for decimal, encoding, asynchronous,
+       round, sign, and id. (match_open_element): Match new tags.
+       (gfc_resolve_open): Resolve new tags. (gfc_match_open): Enable encoding
+       for DEFAULT only. Update error messages. (match_dt_element): Fix match
+       tag for asynchronous. Update error messages. (gfc_free_inquire): Free
+       new expressions. (match_inquire_element): Match new tags.
+       (gfc_match_inquire): Add constraint for ID and PENDING.
+       (gfc_resolve_inquire): Resolve new tags.
+       * trans-io.c (gfc_trans_inquire): Clean up whitespace and fix setting of
+       mask for ID parameter.
+       * ioparm.def: Fix order of parameters for pending, round, and sign.
+       NOTE: These must line up with the definitions in libgfortran/io/io.h. or
+       things don't work.
+
+2008-04-06  Paul Thomas  <pault@gcc.gnu.org>
+
+       PR fortran/35780
+       * expr.c (scalarize_intrinsic_call): Identify which argument is
+       an array and use that as the template.
+       (check_init_expr): Remove tests that first argument is an array
+       in the call to scalarize_intrinsic_call.
+
+2008-04-06  Tobias Schlüter  <tobi@gcc.gnu.org>
+
+       PR fortran/35832
+       * io.c (io_tag): Add field 'value'.  Split 'spec' field in
+       existing io_tags.
+       (match_etag, match_vtag, match_ltag): Split parsing in two steps
+       to give better error messages.
+
 2008-04-06  Tobias Burnus  <burnus@net-b.de>
 
        * io.c (check_io_constraints): Add constrains. ID= requires
 
 2008-04-01  George Helffrich <george@gcc.gnu.org>
 
+       PR fortran/35154, fortran/23057
        * trans-common.c (create_common):  Add decl to function
        chain to preserve identifier scope in debug output.
 
        gfc_conv_allocated, gfc_conv_associated, gfc_conv_intrinsic_trim,
        gfc_conv_intrinsic_repeat): Likewise.
 
-2008-02-23  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
+2008-02-23  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
 
        PR target/25477
        * trans-expr.c (gfc_conv_power_op): Use BUILT_IN_CPOW{F,,L}.