Commit Graph

1174 Commits

Author SHA1 Message Date
Paul Thomas
54129a64cd re PR fortran/25818 ([4.1 only] Problem with handling optional and entry master arguments)
2006-12-22  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/25818
	* trans-array.c (gfc_trans_g77_array): If the variable is
	optional or not always present, make the statement conditional
	on presence of the argument.
	* gfortran.h : Add symbol_attribute not_always_present.
	* resolve.c (check_argument_lists): New function to check if
	arguments are not present in all entries.

	PR fortran/30084
	* module.c (mio_component_ref): Move treatment of unique name
	variables, during output, to fix_mio_expr.
	(fix_mio_expr): New function that fixes defective expressions
	before they are written to the module file.
	(mio_expr): Call the new function.
	(resolve_entries): Call check_argument_lists.

2006-12-22  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/25818
	* gfortran.dg/entry_array_specs_2.f: New test.

	PR fortran/30084
	* gfortran.dg/nested_modules_6.f90: New test.

From-SVN: r120155
2006-12-22 20:49:00 +00:00
Roger Sayle
fcac922973 trans-array.c (gfc_trans_create_temp_array): When the size is known at compile-time, avoid an unnecessary conditional assignment.
* trans-array.c (gfc_trans_create_temp_array): When the size is known
	at compile-time, avoid an unnecessary conditional assignment.
	(gfc_array_init_size): Likewise.

From-SVN: r120141
2006-12-22 03:56:43 +00:00
Kazu Hirata
4c256e3482 * interface.c: Fix a comment typo.
From-SVN: r120135
2006-12-22 01:09:02 +00:00
Paul Thomas
681150cdaa re PR fortran/30273 ([4.1 only] gfc_todo: Not Implemented: Unable to determine rank of expression)
2006-12-21  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/30273
	* dependency.c (gfc_check_dependency): There is no dependency
	with EXPR_NULL so always return 0.

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

	PR fortran/30273
	* gfortran.dg/dependency_19.f90: New test.

From-SVN: r120117
2006-12-21 19:56:34 +00:00
Paul Thomas
5dba0fb845 re PR fortran/30202 ([4.1 only] ICE in trans-array.c)
2006-12-21  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/30202
	* trans-array.c (gfc_conv_function_call): Use parmse.expr for
	the nullifying of intent(out) arguments rather than the backend
	declaration.

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

	PR fortran/30202
	* gfortran.dg/alloc_comp_basics_3.f90: New test.

From-SVN: r120109
2006-12-21 13:59:57 +00:00
Tobias Schlüter
da4c6ed815 re PR fortran/25392 (ICEs with -ff2c)
PR fortran/25392
fortran/
* trans-stmt.c (gfc_trans_return): Fix comment formatting.
* trans-types.c (gfc_sym_type): Don't return early for functions.
Remove special handling for -ff2c.
(gfc_get_function_type): Add special handling for -ff2c.
* trans-decl.c (gfc_create_function_decl): Fix comment formatting.
(gfc_get_fake_result_decl): Make sure we get the right type for
functions.
(gfc_generate_function_code): Convert type of result variable to
type of function.
testsuite/
* gfortran.dg/f2c_8.f90: New test.

From-SVN: r120099
2006-12-21 04:04:43 +01:00
Paul Thomas
6a14cf131e re PR fortran/30190 ([4.1 only] Bounds check generates wrong code for associated(p1(i)%p2,p1(i)%p2))
2006-12-20  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/30190
	* trans-array.c (gfc_conv_array_ref): Remove gfc_evaluate_now
	from the -fbounds-check branch.

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

	PR fortran/30190
	* gfortran.dg/bounds_check_5.f90: New test.

From-SVN: r120084
2006-12-20 21:10:51 +00:00
Roger Sayle
6822a10d9d trans-expr.c (is_zero_initializer_p): Determine whether a given constant expression is a zero initializer.
* trans-expr.c (is_zero_initializer_p): Determine whether a given
	constant expression is a zero initializer.
	(gfc_trans_zero_assign): New function to attempt to optimize
	"a(:) = 0.0" as a call to __builtin_memset (a, 0, sizeof(a));
	(gfc_trans_assignment): Special case array assignments to a
	zero initializer constant, using gfc_trans_zero_assign.

	* gfortran.dg/array_memset_1.f90: New test case.

From-SVN: r120078
2006-12-20 17:23:43 +00:00
Paul Thomas
71f77fd790 re PR fortran/29992 ([4.1 only] INTERFACE equivalent to MODULE PROCEDURE?!)
2006-12-20  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/29992
	* interface.c (check_sym_interfaces): Module procedures in a
	generic must be use associated or contained in the module.
	* decl.c (gfc_match_modproc): Set attribute mod_proc.
	* gfortran.h (symbol_attribute): Add mod_proc atribute.

	PR fortran/30081
	* resolve.c (resolve_generic_f, resolve_generic_s): Use
	gfc_intrinsic_name to find out if the function is intrinsic
	because it does not have to be a generic intrinsic to be
	overloaded.

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

	PR fortran/29992
	* gfortran.dg/generic_9.f90: New test.

	PR fortran/30081
	* gfortran.dg/generic_10.f90: New test.

From-SVN: r120072
2006-12-20 13:48:06 +00:00
Tobias Burnus
23572654a2 re PR fortran/30238 (associated(null-pointer, null-pointer) returns .true.)
fortran/
2006-12-19  Tobias Burnus  <burnus@net-b.de>

	PR fortran/39238
	* trans-intrinsic.c: Check for associated(NULL,NULL).

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

	PR fortran/39238
	* gfortran.dg/associated_1.f90: Add test for associated(NULL,NULL).

From-SVN: r120056
2006-12-19 20:41:35 +01:00
Paul Thomas
26f2ca2b6f re PR fortran/30236 ([4.1 only]alternate-return subroutine in generic interface causes ice/segfault)
2006-12-19  Paul Thomas <pault@gcc.gnu.org>

	PR fortran/30236
	* interface.c (compare_interfaces): Handle NULL symbols.
	(count_types_test): Count NULL symbols, which correspond to
	alternate returns.

	(check_interface1): Change final argument from int to bool
	in the function and all references.

2006-12-19  Paul Thomas <pault@gcc.gnu.org>

	PR fortran/30236
	* gfortran.dg/altreturn_3.f90: New test.

	* gfortran.dg/char_result_12.f90: Fix comment typos.

From-SVN: r120052
2006-12-19 17:02:20 +00:00
Roger Sayle
ecc54e6eab trans-array.c (gfc_conv_array_index_offset): Avoid multiplying index by one, or adding zero to it.
* trans-array.c (gfc_conv_array_index_offset): Avoid multiplying
	index by one, or adding zero to it.

From-SVN: r120011
2006-12-18 19:34:23 +00:00
Roger Sayle
fcd443200b re PR fortran/30207 (ICE in gfc_dep_resolver with where (a < 0) a(:) = 1)
2006-12-17  Roger Sayle  <roger@eyesopen.com>
	    Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/30207
	* dependency.c (gfc_full_array_ref_p): New function to test whether
	the given array ref specifies the entire array.
	(gfc_dep_resolver): Use gfc_full_array_ref_p to analyze AR_FULL
	array refs against AR_SECTION array refs, and vice versa.
	* dependency.h (gfc_full_array_ref_p): Prototype here.
	* trans-array.c (gfc_conv_expr_descriptor): Use gfc_full_array_ref_p.

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

From-SVN: r119990
2006-12-17 18:28:07 +00:00
Brooks Moses
c8cf50e4c1 gfortran.texi: Added TeX support for document parts...
* gfortran.texi: Added TeX support for document parts;
rearranged existing text into "About GNU Fortran",
"Invoking GNU Fortran", and "Language Reference" parts.

From-SVN: r119981
2006-12-16 18:41:48 -08:00
Jerry DeLisle
9341698a40 re PR libfortran/30200 ([4.1 only] write(*,myfmt="(1X,a,'xyz')") "A" prints Az' instead of Axyz)
2006-12-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/30200
	* trans-io.c (build_dt): Move post block for format_expr to end.

From-SVN: r119940
2006-12-15 19:48:08 +00:00
Richard Guenther
a5320d391d Make-lang.in (fortran/options.o): Add $(PARAMS_H) dependency.
2006-12-14  Richard Guenther  <rguenther@suse.de>
	    Diego Novillo  <dnovillo@redhat.com>

	* Make-lang.in (fortran/options.o): Add $(PARAMS_H) dependency.
	* options.c (params.h): Include.
	(gfc_post_options): Set MAX_ALIASED_VOPS to 50.



Co-Authored-By: Diego Novillo <dnovillo@redhat.com>

From-SVN: r119866
2006-12-14 14:39:44 -05:00
Richard Guenther
54200abb68 re PR fortran/30115 (allocate() interface pessimizes aliasing)
2006-12-13  Richard Guenther  <rguenther@suse.de>

	PR fortran/30115
	* runtime/memory.c (allocate_size): Change interface to
	void *()(size_t, GFC_INTEGER_4 *).
	(allocate): Likewise.
	(allocate64): Likewise.
	(allocate_array): Change interface to
	void *()(void *, size_t, GFC_INTEGER_4 *).
	(allocate64_array): Likewise.
	(deallocate): Change interface to
	void ()(void *, GFC_INTEGER_4 *).

	* trans-array.c (gfc_array_allocate): Adjust for changed
	library interface.
	(gfc_array_deallocate): Likewise.
	(gfc_trans_dealloc_allocated): Likewise.
	* trans-stmt.c (gfc_trans_allocate): Likewise.
	(gfc_trans_deallocate): Likewise.
	* trans-decl.c (gfc_build_builtin_function_decls): Adjust
	function declarations to match the library changes.  Mark
	allocation functions with DECL_IS_MALLOC.

From-SVN: r119822
2006-12-13 09:57:56 +00:00
Tobias Schlüter
ad7082e3d9 trans-expr.c (gfc_conv_substring): Check for empty substring.
fortran/
* trans-expr.c (gfc_conv_substring): Check for empty substring.
testsuite/
* lib/fortran-torture.exp: Update copyright years.  Remove
obsolete comment.  Test -ftree-vectorize where it makes sense.
* lib/gfortran-dg.exp: Update copyright years.  Use settings
from fortran-torture.exp.
* gfortran.dg/char_transpose_1.f90,
gfortran.dg/char_spread_1.f90, gfortran.dg/g77/dnrm2.f,
gfortran.dg/dependent_decls_1.f90: Fixout-of-bound errors.
* gfortran.dg/enum_10.f90, gfortran.dg/mixed_io_1.f90:  Add
'-w' to dg-options.

From-SVN: r119797
2006-12-12 21:59:21 +01:00
Jan Hubicka
8a4a83ed92 Move all varpool routines out of cgraph/cgraphunit to varpool.c
Move all varpool routines out of cgraph/cgraphunit to varpool.c
	* cgraph.c: Update comments.
	(cgraph_varpool_hash,
	cgraph_varpool_nodes, cgraph_varpool_last_needed_node
	cgraph_varpool_node_name, cgraph_varpool_node,
	cgraph_varpol_mode_for_asm, cgraph_varpool_mark_needed_node,
	cgraph_variable_initializer_availability): Move to
	varpool.c and drop cgraph_ prefixes.
	(cgraph_varpool_enqueue_needed_node, cgraph_varpool_reset_queue,
	cgraph_varpool_first_unanalyzed_node, cgraph_varpool_finalize_decl):
	move to varpool.c; drop cgraph_ prefix; make static.
	(dump_cgraph_varpool_node): Move to varpool.c under name
	dump_varpool_node.
	(dump_varpool, hash_varpool_node, eq_varpool_node,
	decide_is_variable_needed): Move to varpool.c
	(decl_assembler_name_equal): Move to tree.c.
	(availability_names): Rename to ...
	(cgraph_availability_names): ... this one.
	(dump_cgraph_node): Update.
	* cgraph.h: Reorder declarations now in varpool.c
	(cgraph_vailablity_names): Declare.
	(struct cgraph_varpool_node): Rename to ...
	(struct varpool_node): ... this one.
	(cgraph_varpool_first_unanalyzed_node, cgraph_varpool_nodes_queue,
	cgraph_varpool_first_unanalyzed_node, cgraph_varpool_node,
	cgraph_varpool_node_for_asm, cgraph_varpool_mark_needed_node,
	cgraph_varpool_finalize_decl, cgraph_varpool_enqueue_needed_node,
	cgraph_varpool_reset_queue, cgraph_varpool_assemble_pending_decls,
	cgraph_variable_initializer_availability): Rename to ...
	(varpool_first_unanalyzed_node, varpool_nodes_queue,
	varpool_first_unanalyzed_node, varpool_node,
	varpool_node_for_asm, varpool_mark_needed_node,
	varpool_finalize_decl, varpool_enqueue_needed_node,
	varpool_assemble_pending_decls, variable_initializer_availability):
	Rename to ...
	* tree.c (decl_assembler_name_equal): Move here from cgraph.c.
	* tree.h (decl_assembler_name_equal): Declare.
	* omp-low.c (lower_omp_critical): Update.
	* ipa-reference (analyze_variable, static_execute): Likewise.
	* toplev.c (wrapup_global_declaration_2, compile_file): Update.
	* cgraphunit.c: Update comments.
	(cgraph_varpool_assembled_nodes_queue): Move to varpool.c under name
	varpool_assembled_nodes_queue.
	(cgraph_varpool_analyze_pending_decls): Move to varpool.c under name
	varpool_analyze_pending_decls.
	(cgraph_varpool_remove_unreferenced_decls): Move to varpool.c under name
	varpool_remove_unreferenced_decls.
	(record_reference): Update.
	(cgraph_create_edges): Update.
	(record_referneces_in_initializer): New function.
	(cgraph_varpool_assemble_decl): Move to varpool.c under name
	varpool_assemble_decl; make global.
	(cgraph_varpool_assemble_pending_decls): Move to varpool.c under name
	varpool_assemble_pending_decls.
	(process_function_and_variable_attributes, cgraph_finalize_compilation_unit,
	struct cgraph_order_sort, cgraph_output_in_order,
	cgraph_function_and_variable_invisibility, cgraph_optimize,
	cgraph_increase_alignment): Update.
	* dwarf2out.c (decls_for_scope): Likewise.
	* ipa-type-escape.c (analyze_variable, type_escape_execute): Likewise.
	* except.c (output_ttype): Likewise.
	* varasm.c (mark_decl_referenced): Likewise.
	(find_decl_and_mark_referenced, assemble_alias): update.
	* Makefile.in: Add varpool.c, gt-varpool.c and remove gt-cgraphunit.c
	* passes.c (rest_of_decl_compilation): Update.

	* cp/decl2.c (var_finalized_p): Update for renamed varpool functions.
	* fortran/f59-lang.c (gfc_expand_function): Update for renamed varpool functions.

From-SVN: r119731
2006-12-11 08:07:52 +00:00
Tobias Burnus
669353d549 gfortran.texi: Update Fortran 2003 section.
2006-12-10  Tobias Burnus  <burnus@net-b.de>

	* gfortran.texi: Update Fortran 2003 section.

From-SVN: r119710
2006-12-10 22:22:49 +01:00
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
Paul Thomas
993ef28f82 re PR other/29975 ([meta-bugs] ICEs with CP2K)
2006-12-09  Paul Thomas <pault@gcc.gnu.org>

	PR fortran/29975
	PR fortran/30068
	PR fortran/30096
	* interface.c (compare_type_rank_if): Reject invalid generic
	interfaces.
	(check_interface1): Give a warning for nonreferred to ambiguous
	interfaces.
	(check_sym_interfaces): Check whether an ambiguous interface is
	referred to.  Do not check host associated interfaces since these
	cannot be ambiguous with the local versions.
	(check_uop_interface, gfc_check_interfaces): Update call to
	check_interface1.
	* symbol.c (gfc_get_sym_tree, gfc_get_sym_tree): Allow adding
	unambiguous procedures to generic interfaces.
	* gfortran.h (symbol_attribute): Added use_only and
	ambiguous_interfaces.
	* module.c (load_need): Set the use_only flag, if needed.
	* resolve.c (resolve_fl_procedure): Warn for nonreferred
	interfaces.
	* expr.c (find_array_section): Fix initializer array contructor.


2006-12-09  Paul Thomas <pault@gcc.gnu.org>
	    Tobias Burnus <burnus@gcc.gnu.org>

	PR fortran/29975
	PR fortran/30068
	* gfortran.dg/interface_4.f90: Test adding procedure to generic
	interface.
	* gfortran.dg/interface_5.f90: Test warning for not-referenced-to
	ambiguous interfaces.
	* gfortran.dg/interface_6.f90: Test invalid, ambiguous interface.
	* gfortran.dg/interface_7.f90: Test invalid, ambiguous interface.
	* gfortran.dg/interface_8.f90: Test warning for not-referenced-to
	ambiguous interfaces.
	* gfortran.dg/interface_1.f90: Change dg-error into a dg-warning.
	* gfortran.dg/array_initializer_2.f90: Add initializer array
	constructor test.

	PR fortran/30096
	* gfortran.dg/interface_9.f90: Test that host interfaces are
	not checked for ambiguity with the local version.

Co-Authored-By: Tobias Burnus <burnus@gcc.gnu.org>

From-SVN: r119697
2006-12-09 21:13:29 +00:00
Paul Thomas
1027275d2e re PR fortran/29464 ([4.1 only] problem with duplicate USE, ONLY of procedure in INTERFACE)
2006-11-25  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/29464
	* module.c (load_generic_interfaces): Add symbols for all the
	local names of an interface.  Share the interface amongst the
	symbols.
	* gfortran.h : Add generic_copy to symbol_attribute.
	* symbol.c (free_symbol): Only free interface if generic_copy
	is not set.

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

	PR fortran/29464
	* gfortran.dg/module_interface_2.f90: New test.

From-SVN: r119696
2006-12-09 20:52:27 +00:00
Paul Thomas
4d4074e415 re PR fortran/29941 ([4.1 only] gfortran reports error with len of assumed size character array)
2006-12-09  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/29941
	* resolve.c (resolve_function): Add LEN to the functions not
	checked for assumed size actual args.


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

	PR fortran/29941
	* gfortran.dg/assumed_len.f90: New test.

From-SVN: r119695
2006-12-09 20:41:51 +00:00
Tobias Burnus
c3240b8d52 re PR fortran/27546 (IMPORT is broken)
fortran/
2006-12-08  Tobias Burnus  <burnus@net-b.de>

    PR fortran/27546
    * trans-decl.f90 (gfc_create_module_variable): Allow imported symbols
      in interface bodys in modules.

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

    PR fortran/27546
    * gfortran.dg/import4.f90: New test for IMPORT in modules.

From-SVN: r119651
2006-12-08 10:45:44 +01:00
Tobias Burnus
70e7f689c3 re PR fortran/29711 ([4.2 only] error_print does not support %N$X)
2006-12-06  Tobias Burnus  <burnus@net-b.de>

       PR fortran/29711
       * error.c (error_print): Fix handling of printf-style position specifiers
         of the form "%3$d"

From-SVN: r119609
2006-12-07 10:15:41 +01:00
Paul Thomas
8424e0d8b1 re PR fortran/30003 ([4.1 only] Expressions with side effects in array references)
2006-12-05  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/30003
	* trans-array.c (gfc_trans_create_temp_array): Set the section
	ends to zero.
	(gfc_conv_array_transpose): Likewise.
	(gfc_conv_section_startstride): Declare an expression for end,
	set it from a the array reference and evaluate it for the info
	structure. Zero the ends in the ss structure and set end, used
	in the bounds check, from the info structure.
	trans.h: Add and end array to the gfc_ss_info structure.

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

	PR fortran/30003
	* gfortran.dg/allocatable_function_1.f90: Increase the number
	of expected calls of free to 10; the lhs section reference is
	now evaluated so there is another call to bar.  Change the
	comment appropriately.
	* gfortran.dg/array_section_1.f90: New test.

From-SVN: r119556
2006-12-05 19:45:25 +00:00
Paul Thomas
bab651ad74 re PR fortran/29912 ([4.1 only] Gfortran: string array functions behaving incorrectly...)
2006-12-05  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/29912
	* trans-expr.c (gfc_trans_arrayfunc_assign): Return NULL if the
	lhs and rhs character lengths are not constant and equal for
	character array valued functions.

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

	PR fortran/29912
	* gfortran.dg/char_result_12.f90: New test.

From-SVN: r119554
2006-12-05 19:32:59 +00:00
Aldy Hernandez
d5733d10bd Revert accidental change.
From-SVN: r119547
2006-12-05 17:53:35 +00:00
Aldy Hernandez
07beea0df3 Merge gimple-tuples-branch into mainline.
From-SVN: r119546
2006-12-05 17:26:05 +00:00
Tobias Burnus
a74897c141 re PR fortran/29962 (Initialization expressions)
fortran/
2006-12-04  Tobias Burnus  <burnus@net-b.de>

	PR fortran/29962
	* expr.c (check_intrinsic_op): Allow noninteger exponents for F2003.
   
     
testsuite/
2006-12-04  Tobias Burnus  <burnus@net-b.de>

	PR fortran/29962
	* initialization_4.f90: Test noninteger exponents (-std=f95).
	* initialization_5.f90: New test for noninteger exponents with -std=f2003

From-SVN: r119505
2006-12-04 21:02:43 +01:00
Paul Thomas
dd5ecf4155 [multiple changes]
2006-12-04  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/29821
	* resolve.c (resolve_operator): Only return result of
	gfc_simplify_expr if expression is constant.


2006-12-04  Paul  Thomas <pault@gcc.gnu.org>

	PR fortran/29821
	* gfortran.dg/parameter_array_section_1.f90: New test.

From-SVN: r119504
2006-12-04 19:30:33 +00:00
Paul Thomas
98bbe5ee70 re PR fortran/29916 ([4.1 only] Dimension of a function result as host association does not work)
fortran/
2006-12-04  Paul Thomas  <pault@gcc.gnu.org>

    PR fortran/29916
    * resolve.c (resolve_symbol): Allow host-associated variables
      in the specification expression of an array-valued function.
    * expr.c (check_restricted): Accept host-associated dummy
      array indices.

testsuite/
2006-12-04  Paul Thomas  <pault@gcc.gnu.org>

    PR fortran/29916
    * gfortran.dg/host_dummy_index_1.f90: Added additional test.

From-SVN: r119489
2006-12-04 12:16:12 +01:00
Paul Thomas
06469efd1a re PR fortran/29642 (Fortran 2003: VALUE Attribute (call by value not call by reference for actual arguments))
2006-12-03  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/29642
	* trans-expr.c (gfc_conv_variable): A character expression with
	the VALUE attribute needs an address expression; otherwise all
	other expressions with this attribute must not be dereferenced.
	(gfc_conv_function_call): Pass expressions with the VALUE
	attribute by value, using gfc_conv_expr.
	* symbol.c (check_conflict): Add strings for INTENT OUT, INOUT
	and VALUE.  Apply all the constraints associated with the VALUE
	attribute.
	(gfc_add_value): New function.
	(gfc_copy_attr): Call it for VALUE attribute.
	* decl.c (match_attr_spec): Include the VALUE attribute.
	(gfc_match_value): New function.
	* dump-parse-tree.c (gfc_show_attr): Include VALUE.
	* gfortran.h : Add value to the symbol_attribute structure and
	add a prototype for gfc_add_value
	* module.c (mio_internal_string): Include AB_VALUE in enum.
	(attr_bits): Provide the VALUE string for it.
	(mio_symbol_attribute): Read or apply the VLUE attribute.
	* trans-types.c (gfc_sym_type): Variables with the VLAUE
	attribute are not passed by reference!
	* resolve.c (was_declared): Add value to those that return 1.
	(resolve_symbol): Value attribute requires dummy attribute.
	* match.h : Add prototype for gfc_match_public.
	* parse.c (decode_statement): Try to match a VALUE statement.


2006-12-03  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/29642
	* gfortran.dg/value_1.f90 : New test.
	* gfortran.dg/value_2.f90 : New test.
	* gfortran.dg/value_3.f90 : New test.
	* gfortran.dg/value_4.f90 : New test.
	* gfortran.dg/value_4.c : Called from value_4.f90.

From-SVN: r119461
2006-12-03 07:18:22 +00:00
Thomas Koenig
07b3bbf200 re PR libfortran/29568 (implement unformatted files with subrecords (Intel style))
2006-12-01  Thomas Koenig  <Thomas.Koenig@online.de>

	PR libfortran/29568
	* gfortran.dg/convert_implied_open.f90:  Change to
	new default record length.
	* gfortran.dg/unf_short_record_1.f90:  Adapt to
	new error message.
	* gfortran.dg/unformatted_subrecords_1.f90:  New test.

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

	PR libfortran/29568
	* gfortran.h (gfc_option_t):  Add max_subrecord_length.
	(top level): Define MAX_SUBRECORD_LENGTH.
	* lang.opt:  Add option -fmax-subrecord-length=.
	* trans-decl.c:  Add new function set_max_subrecord_length.
	(gfc_generate_function_code): If we are within the main
	program and max_subrecord_length has been set, call
	set_max_subrecord_length.
	* options.c (gfc_init_options):  Add defaults for
	max_subrecord_lenght, convert and record_marker.
	(gfc_handle_option):  Add handling for
	-fmax_subrecord_length.
	* invoke.texi:  Document the new default for
	-frecord-marker=<n>.

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

	PR libfortran/29568
	* libgfortran/libgfortran.h (compile_options_t):  Add
	record_marker. (top level):  Define GFC_MAX_SUBRECORD_LENGTH.
	* runtime/compile_options.c (set_record_marker):  Change
	default to four-byte record marker.
	(set_max_subrecord_length):  New function.
	* runtime/error.c (translate_error):  Change error message
	for short record on unformatted read.
	* io/io.h (gfc_unit):  Add recl_subrecord, bytes_left_subrecord
	and continued.
	* io/file_pos.c (unformatted_backspace):  Change default of record
	marker size to four bytes.  Loop over subrecords.
	* io/open.c:  Default recl is max_offset.  If
	compile_options.max_subrecord_length has been set, set set
	u->recl_subrecord to its value, to the maximum value otherwise.
	* io/transfer.c (top level):  Add prototypes for us_read, us_write,
	next_record_r_unf and next_record_w_unf.
	(read_block_direct):  Separate codepaths for unformatted direct
	and unformatted sequential.  If a recl has been set by the
	user, use the number of bytes left for the record if it is smaller
	than the read request.  Loop over subrecords.  Set an error if the
	user has set a recl and the read was short.
	(write_buf):  Separate codepaths for unformatted direct and
	unformatted sequential. If a recl has been set by the
	user, use the number of bytes left for the record if it is smaller
	than the read request.  Loop over subrecords.  Set an error if the
	user has set a recl and the read was short.
	(us_read):  Add parameter continued (to indicate that bytes_left
	should not be intialized).  Change default of record marker size
	to four bytes. Use subrecord.  If the subrecord length is smaller than
	zero, this indicates a continuation.
	(us_write):  Add parameter continued (to indicate that the continued
	flag should be set).  Use subrecord.
	(pre_position):  Use 0 for continued on us_write and us_read calls.
	(skip_record):  New function.
	(next_record_r_unf):  New function.
	(next_record_r):  Use next_record_r_unf.
	(write_us_marker):  Default size for record markers is four bytes.
	(next_record_w_unf):  New function.
	(next_record_w):  Use next_record_w_unf.

From-SVN: r119412
2006-12-01 21:04:38 +00:00
Paul Thomas
7523cace86 re PR fortran/29976 (ICE on optional arg)
2006-11-28  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/29976
	* trans-expr.c (gfc_conv_missing_dummy): Remove build_int_const
	and replace with cast to type of se->expr of integer_zero_node.

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

	PR fortran/29976
	* gfortran.dg/missing_optional_dummy_3.f90

From-SVN: r119273
2006-11-28 05:39:42 +00:00
Paul Thomas
911a40abe0 re PR fortran/20880 (USE association of procedure's own interface)
2006-11-28  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/20880
	* resolve.c (resolve_fl_procedure): Error if procedure is
	ambiguous modified to require attr.referenced.

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

	PR fortran/20880
	* gfortran.dg/interface_3.f90: Modify errors.

From-SVN: r119272
2006-11-28 05:36:07 +00:00
Francois-Xavier Coudert
d19c0f4fa6 re PR fortran/29892 (substring out of bounds: Missing variable name for variables with parameter attribute)
PR fortran/29892
	* trans-intrinsic.c (gfc_conv_intrinsic_bound): Use a locus in
	the call to gfc_trans_runtime_check.
	* trans-array.c (gfc_trans_array_bound_check): Try harder to find
	the variable or function name for the runtime error message.
	(gfc_trans_dummy_array_bias): Use a locus in the call to
	gfc_trans_runtime_check

From-SVN: r119223
2006-11-26 12:25:50 +00:00
Andrew Pinski
67fdae36e9 trans-decl.c (gfc_build_intrinsic_function_decls): Mark the pow functions as constant functions.
2006-11-26  Andrew Pinski  <pinskia@gmail.com>

        * trans-decl.c (gfc_build_intrinsic_function_decls): Mark the
        pow functions as constant functions.

From-SVN: r119219
2006-11-26 00:09:05 -08:00
Andrew Pinski
fade9a8e43 re PR fortran/29982 ([4.1 only] ICE in write() with gfortran 4.1.2 (and 4.2 and 4.3...))
2006-11-25  Andrew Pinski  <pinskia@gmail.com>

        PR fortran/29982
        * trans-expr.c (gfc_conv_expr_reference): Strip off NOP_EXPRs.

2006-11-25  Andrew Pinski  <pinskia@gmail.com>

        PR fortran/29982
        * gfortran.fortran-torture/compile/parameter_3.f90: New
        testcase.

From-SVN: r119218
2006-11-25 20:42:00 -08:00
Andrew Pinski
85d6cbd388 re PR fortran/29951 (incorrect conversion from string to integer by TRANSFER())
2006-11-25  Andrew Pinski  <pinskia@gmail.com>

        PR fortran/29951
        * trans-intrinsic.c (gfc_conv_intrinsic_transfer): Change to
        call memcpy instead of creating a VIEW_CONVERT_EXRP.

2006-11-25  Andrew Pinski  <pinskia@gmail.com>

        PR fortran/29951
        * gfortran.fortran-torture/execute/transfer2.f90: New test

From-SVN: r119211
2006-11-25 13:43:48 -08:00
Francois-Xavier Coudert
9406549c9f re PR fortran/29711 ([4.2 only] error_print does not support %N$X)
PR fortran/29711
	* error.c (error_print): Handle printf-style position specifiers,
	of the form "%3$d".

From-SVN: r119203
2006-11-25 16:57:25 +00:00
Paul Thomas
536afc35bc re PR fortran/20880 (USE association of procedure's own interface)
2006-11-24  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/20880
	* parse.c (parse_interface): Error if procedure name is that of
	encompassing scope.
	* resolve.c (resolve_fl_procedure): Error if procedure is
	ambiguous.

	PR fortran/29387
	* interface.c (compare_actual_formal): Add missing condition
	that 'where' be present for error that asserts that actual
	arguments be definable.

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

	PR fortran/20880
	* gfortran.dg/interface_3.f90: New test.

	PR fortran/29387
	* gfortran.dg/generic_8.f90: New test.

From-SVN: r119173
2006-11-24 22:22:40 +00:00
Francois-Xavier Coudert
e7c1c8d1a1 resolve.c (resolve_actual_arglist): Remove the special case for CHAR.
* resolve.c (resolve_actual_arglist): Remove the special case for
	CHAR.
	* intrinsic.c (add_functions): Remove the special case for CHAR.

	* gfortran.dg/specifics_1.f90: Remove check for CHAR.
	* gfortran.dg/specifics_2.f90: Remove check for CHAR.
	* gfortran.dg/specifics_3.f90: Remove.

From-SVN: r119170
2006-11-24 21:45:36 +00:00
Tobias Schlüter
cbad228156 re PR fortran/29441 ([4.1/4.2 only] non-constant parameter (constant) accepted)
fortran/
        PR fortran/29441
        * intrinsic.c (gfc_intrinsic_func_interface): Always check if
        intrinsic is allowed in initialization expression.
testsuite/
        PR fortran/29441
        * gfortran.dg/initialization_4.f90: New test.

From-SVN: r119101
2006-11-22 23:09:14 +01:00
Paul Thomas
92c59193a1 re PR fortran/25087 (Error for missing explicit interface needed.)
2006-11-22 Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/25087
	* resolve.c (resolve_fl_procedure): Add an error if an external
	automatic character length function does not have an explicit
	interface.

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

	PR fortran/25087
	* gfortran.dg/auto_char_len_4.f90: New test.

From-SVN: r119077
2006-11-22 00:05:10 +00:00
Paul Thomas
991f3b1289 re PR fortran/29652 (ambiguous interface declaration undetected)
2006-11-22 Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/29652
	* interface.c (check_interface1): Use a local value, instead of
	the dummy, as the inner iterator over interface symbols.

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

	PR fortran/29652
	* gfortran.dg/generic_7.f90: New test.
	* gfortran.dg/defined_operators_1.f90: Add new error.

From-SVN: r119076
2006-11-22 00:02:02 +00:00
Paul Thomas
da2a24c3f6 re PR fortran/29820 (ICE in fold_convert, at fold-const.c:2146)
2006-11-21 Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/29820
	* trans-array.c (gfc_get_derived_type): Once done, spread the
	backend_decl to all identical derived types in all sibling
	namespaces.

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

	PR fortran/29820
	* gfortran.dg/used_types_13.f90: New test.

From-SVN: r119073
2006-11-21 23:42:17 +00: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
Tobias Burnus
d7043acd94 symbol.c (check_conflict): Add conflict between VOLATILE attribute and program name.
fortran/
2006-11-20  Tobias Burnus  <burnus@net-b.de>

        * symbol.c (check_conflict): Add conflict between VOLATILE
          attribute and program name.

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

        * gfortran.dg/volatile3.f90: Add conflict test.

From-SVN: r119025
2006-11-20 21:04:24 +01:00