Commit Graph

70828 Commits

Author SHA1 Message Date
Tom Tromey 3ec980b182 This commit was generated by cvs2svn to compensate for changes in r104181,
which included commits to RCS files with non-trunk default branches.

From-SVN: r104182
2005-09-12 17:04:02 +00:00
Tom Tromey 303ae446cf Initial revision
From-SVN: r104179
2005-09-12 17:03:48 +00:00
Josh Conner c4bea017ed pr middle-end/23237
pr middle-end/23237
    * gcc.c-torture/compile/pr23237.c: New test.

From-SVN: r104177
2005-09-12 15:50:08 +00:00
Josh Conner d840283a80 pr middle-end/23237
pr middle-end/23237
    * ipa-reference.c (static_execute): Don't mark variables in
    named sections TREE_READONLY.

From-SVN: r104176
2005-09-12 15:46:35 +00:00
Alan Modra 309ebcd0c3 rs6000.c (get_next_active_insn): Simplify test for stack_tie.
* config/rs6000/rs6000.c (get_next_active_insn): Simplify test for
	stack_tie.

From-SVN: r104173
2005-09-12 23:44:21 +09:30
Andrew Pinski 8d09949866 tree-ssa-dse.c (dse_optimize_stmt): Fix up all of V_MAY_DEF and V_MUST_DEF instead of just the first_use_p.
2005-09-12  Andrew Pinski  <pinskia@physics.uc.edu>

        * tree-ssa-dse.c (dse_optimize_stmt): Fix up all of V_MAY_DEF and
        V_MUST_DEF instead of just the first_use_p.
        Don't mark the virtual variables for renaming on the statement which
        is being removed.
        (pass_dse): Remove TODO_update_ssa.

From-SVN: r104172
2005-09-12 06:56:07 -07:00
J"orn Rennecke f439f9a536 re PR middle-end/23290 (Layout changed for structure with single complex field)
PR middle-end/23290
	* stor-layout.c (compute_record_mode): For records with a single
	field, actually check the field's mode size against the type size.

From-SVN: r104171
2005-09-12 14:49:56 +01:00
J"orn Rennecke cd41bae5fd sh.h (HARD_REGNO_MODE_OK): Allow V4SFmode in general purpose registers for TARGET_SHMEDIA.
* sh.h (HARD_REGNO_MODE_OK): Allow V4SFmode in general purpose
	registers for TARGET_SHMEDIA.
	(enum reg_class, REG_CLASS_NAMES, REG_CLASS_CONTENTS): Rename
	GENERAL_FP_REGS to GENERAL_DF_REGS.  Add GENERAL_FP_REGS as union
	of GENERAL_REGS and FP_REGS.

From-SVN: r104170
2005-09-12 14:24:11 +01:00
Bernd Schmidt b99791d10e * config/bfin/bfin.c (legimitize_pic_address): Use gen_const_mem.
From-SVN: r104168
2005-09-12 10:47:01 +00:00
Paolo Carlini 2bcec7298e re PR libstdc++/23767 (std::vector iterator implementation wrong)
2005-09-12  Paolo Carlini  <pcarlini@suse.de>

	PR libstdc++/23767
	* include/bits/stl_iterator.h (__normal_iterator::
	__normal_iterator<>(const __normal_iterator<_Iter, _Container>&)):
	Enable only when _Iter is equal to _Container::pointer.
	* testsuite/21_strings/basic_string/types/23767.cc: New.
	* testsuite/23_containers/vector/types/23767.cc: Likewise.
	* testsuite/ext/vstring/types/23767.cc: Likewise.

From-SVN: r104167
2005-09-12 09:42:34 +00:00
Richard Henderson 7928df2e04 * objcp-lang.c (objcxx_init_ts): Remove ALIAS_DECL.
From-SVN: r104165
2005-09-12 00:38:33 -07:00
Benjamin Kosnik 2f9f6cef1c [multiple changes]
2005-09-11  Benjamin Kosnik  <bkoz@redhat.com>

	PR libstdc++/19265
	PR libstdc++/22309
	* include/ext/mt_allocator.h
	(__gnu_cxx::__create_handler): Remove.
	(__pool<true>::_M_destroy_thread_key): Compatibility only.
	(__pool<true>::_M_initialize(__destroy): Same.
	(__pool<true>::_M_initialize): New.
	(__pool<true>::_M_initialize_once): Nothing fancy.
	(__pool<true>::_M_once): Remove.
	(__common_pool): New.
	(__common_pool_base): New.
	(__per_type_pool): New.
	(__per_type_pool_base): New.
	* src/mt_allocator.cc: Same.
	* config/linker-map.gnu (__pool<true>::_M_initialize()): Add.

2005-09-11  Jakub Jelinek  <jakub@redhat.com>

	PR libstdc++/19265
	PR libstdc++/22309
	* src/mt_allocator.cc (__gnu_internal::freelist_mutex): Make static.
	(__gnu_internal::__freelist): New type.
	(__gnu_internal::freelist): New variable.
	(__gnu_internal::_M_destroy_thread_key): New function.
	(__gnu_cxx::__pool<true>::_M_destroy): Don't delete
	_M_thread_freelist_initial.
	(__gnu_cxx::__pool<true>::_M_initialize): Make argument nameless.
	Don't use _M_thread_freelist and _M_thread_freelist_initial
	__pool<true> fields, instead use __gnu_internal::freelist fields, call
	gthread_key_create just once.  Use
	__gnu_internal::_M_destroy_thread_key as key destructor.
	(__gnu_cxx::__pool<true>::_M_get_thread_id): Store size_t id
	rather than _Thread_record* in the thread specific value.  Don't
	use _M_thread_freelist __pool<true> field, instead use
	__gnu_internal::freelist fields.
	(__gnu_cxx::__pool<true>::_M_destroy_thread_key): Do nothing.

2005-09-11  Benjamin Kosnik  <bkoz@redhat.com>
            Jakub Jelinek  <jakub@redhat.com>

	PR libstdc++/19265
	PR libstdc++/22309
	* testsuite/testsuite_shared.cc: New.
	* testsuite/lib/dg-options.exp (dg-require-sharedlib): New.
	* testsuite/lib/libstdc++.exp (libstdc++_init): Look for shared
	library, and set v3-sharedlib based on this.
	(check_v3_target_sharedlib): New.
	(proc v3-build_support): Build shared objects.
	* testsuite/ext/mt_allocator/22309_thread.cc: New, use above.

From-SVN: r104161
2005-09-12 04:49:11 +00:00
Richard Henderson 56b4ea3de8 decl2.c (build_anon_union_vars): Copy attributes from the base addr.
* decl2.c (build_anon_union_vars): Copy attributes from the base addr.
        * pt.c (tsubst_decl): Substitute in DECL_VALUE_EXPR.

        * g++.dg/other/error8.C: Update expected diagnostic text.

From-SVN: r104160
2005-09-11 21:04:03 -07:00
Alan Modra f489aff87a rs6000.c (get_next_active_insn): Rewrite using CALL_P...
* config/rs6000/rs6000.c (get_next_active_insn): Rewrite using
	CALL_P, JUMP_P and NONJUMP_INSN_P, so that barriers and labels
	are omitted.  Exclude stack_tie insn too.

From-SVN: r104159
2005-09-12 13:21:13 +09:30
GCC Administrator e7126cc571 Daily bump.
[[Split portion of a mixed commit.]]

From-SVN: r104147.2
2005-09-12 00:16:16 +00:00
David Edelsohn 8308679fb3 re PR rtl-optimization/23098 (store of 0.0 to float)
PR rtl-optimization/23098
        * config/rs6000/predicates.md (easy_fp_constant): SFmode constant
        0.0f is easy.
        * config/rs6000/rs6000.md (movdf splitter): Use
        const_double_operand predicate for TARGET_POWERPC64.
        * config/rs6000/rs6000.c (rs6000_legitimize_reload_address): Expand
        SYMBOL_REF method to ABI_V4.

        * config/rs6000/altivec.md (build_vector_mask_for_load): Use
        replace_equiv_address.
        * config/rs6000/rs6000.c (rs6000_emit_eh_reg_restore): Mark MEM as
        rs6000_sr_alias_set and MEM_NOTRAP.
        (rs6000_aix_emit_builtin_unwind_init): Use gen_frame_mem().

From-SVN: r104145
2005-09-11 19:22:10 -04:00
Eric Botcazou 4c223d6a38 tree.c (contains_placeholder_p): Properly handle CALL_EXPR again.
* tree.c (contains_placeholder_p) <tcc_expression>: Properly
	handle CALL_EXPR again.

From-SVN: r104144
2005-09-11 21:17:51 +00:00
Francois-Xavier Coudert 91002f1b09 re PR libfortran/19872 ([4.0 only] closed and re-opened file not overwriten)
PR libfortran/19872
	* gfortran.dg/overwrite_1.f: New test.

From-SVN: r104143
2005-09-11 19:39:35 +00:00
Francois-Xavier Coudert b65b81f935 re PR libfortran/20179 (cannot mix C and Fortran I/O)
PR libfortran/20179
	* io/unix.c (is_preconnected): Add function to test if a stream
	corresponds to a preconnected unit.
	* io/io.h: Add prototype for is_preconnected.
	* io/transfer.c (data_transfer_init): Do not truncate
	preconnected units.

From-SVN: r104141
2005-09-11 13:34:57 +00:00
Paolo Carlini e182017e46 re PR libstdc++/23781 (Implicit conversion from NULL to list<T>::iterator)
2005-09-11  Paolo Carlini  <pcarlini@suse.de>

	PR libstdc++/23781
	* include/bits/stl_list.h (_List_iterator<>::
	_List_iterator(_List_node_base*), _List_const_iterator<>::
	_List_const_iterator(const _List_node_base*)): Make explicit.
	(list<>::begin(), list<>::end(), list<>::pop_back()): Adjust
	consistently.
	* include/bits/list.tcc (list<>::insert, list<>::erase): Adjust
	consistently.
	* include/bits/stl_tree.h (_Rb_tree_iterator<>::
	_Rb_tree_iterator(_Link_type), _Rb_tree_const_iterator<>::
	_Rb_tree_const_iterator(_Link_type)): Make explicit.
	(_Rb_tree<>::begin(), _Rb_tree<>::end()): Adjust consistently.
	* include/ext/slist (_Slist_iterator<>::_Slist_iterator(_Node*)):
	Make explicit.
	(slist<>::erase(iterator), slist<>::erase(iterator, iterator)):
	Adjust consistently.
	* include/tr1/hashtable (hashtable_iterator<>::
	hashtable_iterator(hash_node<>**)): Make explicit.
	* testsuite/23_containers/list/23781.cc: New.
	* testsuite/23_containers/map/23781.cc: Likewise.
	* testsuite/23_containers/multimap/23781.cc: Likewise.
	* testsuite/23_containers/multiset/23781.cc: Likewise.
	* testsuite/23_containers/set/23781.cc: Likewise.
	* testsuite/ext/slist/23781.cc: Likewise.
	* testsuite/tr1/6_containers/unordered/23781.cc: Likewise.
	* testsuite/23_containers/map/operators/1_neg.cc: Adjust dg-error
	line numbers.
	* testsuite/23_containers/set/operators/1_neg.cc: Likewise.

	* include/tr1/array (array<>::begin(), array<>::end()): Adjust
	stylistically for consistency with the other containers.

From-SVN: r104139
2005-09-11 09:48:41 +00:00
Richard Earnshaw 2347f5c931 * arm/predicates.md (alignable_memory_operand): Delete.
From-SVN: r104138
2005-09-11 07:38:02 +00:00
GCC Administrator c6fbca4549 Daily bump.
[[Split portion of a mixed commit.]]

From-SVN: r104133.2
2005-09-11 00:16:12 +00:00
Richard Henderson 4e0e2698b0 re PR debug/23806 (-gstabs with VLAs does not work)
PR debug/23806
        * dbxout.c (dbxout_expand_expr): New.
        (dbxout_symbol): Use it.

From-SVN: r104129
2005-09-10 14:10:42 -07:00
Janne Blomqvist ca0d06ac97 unix.c: Remove mmap code.
2005-09-10  Janne Blomqvist  <jblomqvi@cc.hut.fi>

	* io/unix.c: Remove mmap code.

From-SVN: r104127
2005-09-10 18:31:28 +02:00
Joseph Myers 225d3396bf c99_classification_macros_c.cc: XFAIL on *-*-linux*, not *-*-linux-gnu.
* testsuite/26_numerics/cmath/c99_classification_macros_c.cc:
	XFAIL on *-*-linux*, not *-*-linux-gnu.

From-SVN: r104125
2005-09-10 17:12:53 +01:00
Richard Earnshaw 31fa16b689 arm.c (arm_gen_rotated_half_load): Delete.
* arm.c (arm_gen_rotated_half_load): Delete.
	(vfp_emit_fstmx, arm_set_return_address): Use gen_frame_mem.
	(emit_multi_reg_push, emit_sfm, arm_expand_prologue)
	(thumb_set_return_address): Likewise.
	(thumb_load_double_from_address): Use adjust_address.
	* arm.md (splits calling arm_gen_rotated_half_load): Delete.
	(extendhsisi2_mem, movhi_bytes): Use change_address.
	(movhi): Use widen_memory_access.
	(reload_out_df): Use replace_equiv_address.
	* arm-protos.h (arm_gen_rotated_half_load): Delete prototype.

From-SVN: r104124
2005-09-10 08:28:32 +00:00
Josh Conner 072dd139ad pr23180-1.C: Removed.
* g++.dg/init/pr23180-1.C: Removed.
        * g++.dg/init/pr23180-2.C: Removed.

From-SVN: r104122
2005-09-10 00:45:21 +00:00
GCC Administrator 6816bd8aff Daily bump.
[[Split portion of a mixed commit.]]

From-SVN: r104119.2
2005-09-10 00:16:33 +00:00
David Daney 15336b9e67 20010124-1.c: Removed and split into two new files which are ...
2005-09-09  David Daney <ddaney@avtrex.com>

	* gcc.c-torture/execute/20010124-1.c:  Removed and split into two new
	files which are ...
	* gcc.c-torture/execute/builtins/20010124-1: ... here and ...
	* gcc.c-torture/execute/builtins/20010124-1-lib.c: ... here.

From-SVN: r104116
2005-09-09 23:32:57 +00:00
Gabriel Dos Reis a30efae8b9 parser.c (cp_parser_translation_unit): Simplify.
* parser.c (cp_parser_translation_unit): Simplify.  The while-block
        was actually executed at most once.

From-SVN: r104115
2005-09-09 23:07:55 +00:00
Francois-Xavier Coudert 4f886942ff * gfortran.dg/iostat_2.f90: New test.
From-SVN: r104110
2005-09-09 22:01:19 +00:00
Francois-Xavier Coudert e0fd73d434 re PR libfortran/23784 (close doesn't reset ioparm on error exit)
PR libfortran/23784
	* io/close.c (st_close): Call library_end even in case of error.

From-SVN: r104108
2005-09-09 21:51:33 +00:00
Richard Henderson 9bfa80fb88 dbxout.c: Include expr.h.
* dbxout.c: Include expr.h.
        (dbxout_global_decl): Don't suppress for DECL_RTL unset.
        (dbxout_symbol): Handle DECL_VALUE_EXPR.
        * Makefile.in (dbxout.o): Add EXPR_H.
cp/
        * cp-tree.def (ALIAS_DECL): Remove.
        * cp-lang.c (cp_init_ts): Remove support for it.
        * error.c (dump_decl): Likewise.
        * name-lookup.c (pushdecl): Likewise.
        * semantics.c (finish_id_expression): Likewise.
        * decl2.c (build_anon_union_vars): Use a VAR_DECL with
        DECL_VALUE_EXPR instead.

From-SVN: r104106
2005-09-09 14:00:49 -07:00
Thomas Koenig e27edcd452 2005-09-09 Thomas Koenig <Thomas.Koenig@online.de>
gfortran.texi:  Document IOSTAT= specifier.

From-SVN: r104104
2005-09-09 19:20:52 +00:00
Mark Mitchell 1ef0df4745 re PR c++/22252 (pragma interface/implementation still break synthesized methods)
PR c++/22252
	* decl.c (start_preparsed_function): Do not pay attention to
	#pragma interface for implicitly-defined methods.
	* decl2.c (cp_finish_file): Do not complain about uses of inline
	functions that have bodies, even if we decided not to emit the
	body in this translation unit.
	* semantics.c (note_decl_for_pch): Do not mess with linkage.
	(expand_or_defer_fn): Make inline, non-template functions COMDAT
	at this point.

	PR c++/22252
	* g++.dg/ext/interface1.C: New test.
	* g++.dg/ext/interface1.h: Likewise.
	* g++.dg/ext/interface1a.cc: Likewise.

From-SVN: r104103
2005-09-09 18:56:16 +00:00
Thomas Koenig 7aba8abebf gfortran.h: Add iomsg to gfc_open, gfc_close, gfc_filepos, gfc_inquire and gfc_dt.
2005-09-09  Thomas Koenig  <Thomas.Koenig@online.de>

	* gfortran.h:  Add iomsg to gfc_open, gfc_close, gfc_filepos,
	gfc_inquire and gfc_dt.
	* dump-parse-tree.c (gfc_show_code_node):  Add iomsg
	for open, close, file positioning, inquire and namelist.
	* io.c (io_tag):  Add tag_iomsg.
	(resolve_tag): Add standards warning for iomsg.
	(match_open_element):  Add iomsg.
	(gfc_free_open):  Add iomsg.
	(gfc_resolve_open):  Add iomsg.
	(gfc_free_close):  Add iomsg.
	(match_close_element):  Add iomsg.
	(gfc_resolve_close):  Add iomsg.
	(gfc_free_filepos):  Add iomsg.
	(match_file_element):  Add iomsg.
	(gfc_resolve_filepos):  Add iostat and iomsg.
	(match-dt_element):  Add iomsg.
	(gfc_free_dt):  Add iomsg.
	(gfc_resolve_dt):  Add iomsg.
	(gfc_free_inquire):  Add iomsg.
	(match_inquire_element):  Add iomsg.
	(gfc_resolve_inquire):  Add iomsg.
	* trans_io.c:  Add ioparm_iomsg and ioparm_iomsg_len.
	(gfc_build_io_library_fndecls):  Add iomsg as last field.
	(gfc_trans_open):  Add iomsg.
	(gfc_trans_close):  Add iomsg.
	(build_fileos):  Call set_string for iomsg.
	(gfc_trans_inquire):  Add iomsg.
	(build_dt):  Add iomsg.

2005-09-09  Thomas Koenig  <Thomas.Koenig@online.de>

	* io/io.h:  Add iomsg as last field of st_parameter.
	* runtime/error.c (generate_error):  If iomsg is present, copy
	the message there.

2005-09-09  Thomas Koenig  <Thomas.Koenig@online.de>

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

From-SVN: r104102
2005-09-09 18:21:45 +00:00
Zdenek Dvorak 2360a4c1a6 re PR tree-optimization/23509 (ICE with ivopts)
PR tree-optimization/23509
	* tree-cfg.c (replace_uses_by): Use replace_exp.
	* tree-ssa-loop-ivopts.c (get_ref_tag): Assert that dereferenced
	pointers have name_mem_tag or type_mem_tag set.

From-SVN: r104099
2005-09-09 16:17:25 +00:00
Andrew Haley 8f09608343 re PR libgcj/23182 (instanceof sometimes fails if compiled with -findirect-dispatch)
2005-09-09  Andrew Haley  <aph@redhat.com>

        PR libgcj/23182
        * expr.c (pop_type_0): If the expected type is object or ptr
        (i.e. void*), return the type of the object we just popped from
        the stack.

From-SVN: r104098
2005-09-09 16:04:11 +00:00
Josh Conner 70e9e3d60c Fix for 23180 also fixes 21135 - added to change description.
From-SVN: r104097
2005-09-09 15:59:29 +00:00
Andrew Haley 13d7d8745b URLClassLoader.java (addURLImpl): Synchronize on the loader.
2005-09-08  Andrew Haley  <aph@redhat.com>

	* java/net/URLClassLoader.java (addURLImpl): Synchronize on the
	loader.
	(toString): Likewise.

From-SVN: r104095
2005-09-09 13:06:24 +00:00
Andrew Haley ddef717308 re PR libgcj/22084 (Divide_1 test case hangs)
2005-09-08  Andrew Haley  <aph@redhat.com>

	PR java/22084
	* include/i386-signal.h (HANDLE_DIVIDE_OVERFLOW): Bump IP by 1 if
	R/M field in instruction is 100.

From-SVN: r104094
2005-09-09 13:05:20 +00:00
Sebastian Pop 7ce7896c39 tree-chrec.c (evolution_function_is_invariant_rec_p): Use CHREC_LEFT and CHREC_RIGHT for accessing chrec components instead of...
* tree-chrec.c (evolution_function_is_invariant_rec_p): Use
	CHREC_LEFT and CHREC_RIGHT for accessing chrec components instead
	of wrongly accessing operands.

From-SVN: r104093
2005-09-09 11:31:16 +00:00
Sebastian Pop 18aed06a02 Makefile.in (tree-chrec.o): Depends on SCEV_H.
* Makefile.in (tree-chrec.o): Depends on SCEV_H.
	* tree-chrec.c: Include tree-scalar-evolution.h.
	(chrec_convert): Instantiate the base and step before calling
	scev_probably_wraps_p that would fail on parametric evolutions.
	Collect all the fails into a single section failed_to_convert,
	print a diagnostic, and return chrec_dont_know instead of calling
	fold_convert.
	* tree-scalar-evolution.c (loop_closed_phi_def): New.
	(instantiate_parameters_1): Avoid instantiation of loop closed ssa
	phi nodes.
	(scev_const_prop): Don't replace the definition of a loop closed ssa
	phi node by itself, or by another loop closed ssa phi node.
	* tree-ssa-loop-niter.c (scev_probably_wraps_p, convert_step): Check
	that base and step are defined.

From-SVN: r104092
2005-09-09 10:56:41 +00:00
Benjamin Kosnik 35885ceb44 debug.cc (iterator_base_mutex): Make static for internal linkage.
2005-09-09  Benjamin Kosnik  <bkoz@redhat.com>
            Jakub Jelinek  <jakub@redhat.com>

	* src/debug.cc (iterator_base_mutex): Make static for internal
	linkage.
	* src/locale_init.cc (locale_mutex): Same.
	* src/mt_allocator.cc (freelist_mutex): Same.
	* src/pool_allocator.cc (palloc_init_mutex): Same.

Co-Authored-By: Jakub Jelinek <jakub@redhat.com>

From-SVN: r104090
2005-09-09 10:14:55 +00:00
Richard Guenther 3dac16bde8 re PR c++/23624 (ICE: internal compiler error: in invert_truthvalue, at fold-const.c:2697)
2005-09-09  Richard Guenther  <rguenther@suse.de>

	PR c++/23624
	* fold-const.c (fold_ternary): Check truth_value_p before
	calling invert_truthvalue.

	* g++.dg/tree-ssa/pr23624.C: New testcase.

From-SVN: r104083
2005-09-09 09:00:42 +00:00
Nick Clifton dcfae47c5e Makefile.in (LIBGCC_DEPS): Add libgcc2.h.
* Makefile.in (LIBGCC_DEPS): Add libgcc2.h.
* libgcc2.c (__clz_tab[], __popcount_tab[]): Set the fixed dimension of
  these arrays.
* libgcc2.h (__clz_tab[], __popcount_tab[]): Add exports of these arrays.
* longlong.h: Only provide a prototype for the __clz_tab[] array if this
  header has not been included from libgcc2.h.
* config/stormy16/stormy16-lib2.c: Include libgcc2.h rather than defining
  own types.
  Provide prototypes for exported functions.
  Use the __clz_tab[] and __popcount_tab[] arrays provided by libgcc2.c.

From-SVN: r104081
2005-09-09 08:39:18 +00:00
Richard Sandiford a174b2f8ec * match.h (gfc_match_equiv_variable): Declare.
From-SVN: r104080
2005-09-09 06:45:15 +00:00
Richard Sandiford 9b79bf1360 Fix filenames in last entry.
From-SVN: r104078
2005-09-09 06:35:55 +00:00
Richard Sandiford 7a70c12d9b re PR fortran/19239 ([4.0 only] gfortran ICE on vector subscript expressions)
PR fortran/19239
	* Makefile.in (fortran/trans-expr.o): Depend on dependency.h.
	* dependency.h (gfc_ref_needs_temporary_p): Declare.
	* dependency.c (gfc_ref_needs_temporary_p): New function.
	(gfc_check_fncall_dependency): Use it instead of inlined check.
	By so doing, take advantage of the fact that character substrings
	within an array reference also need a temporary.
	* trans.h (GFC_SS_VECTOR): Adjust comment.
	* trans-array.c (gfc_free_ss): Remove GFC_SS_VECTOR case.
	(gfc_set_vector_loop_bounds): New function.
	(gfc_add_loop_ss_code): Call it after evaluating the subscripts of
	a GFC_SS_SECTION.  Deal with the GFC_SS_VECTOR case by evaluating
	the vector expression and caching its descriptor for use within
	the loop.
	(gfc_conv_array_index_ref, gfc_conv_vector_array_index): Delete.
	(gfc_conv_array_index_offset): Handle scalar, vector and range
	dimensions as separate cases of a switch statement.  In the vector
	case, use the loop variable to calculate a vector index and use the
	referenced element as the dimension's index.  Perform bounds checking
	on this final index.
	(gfc_conv_section_upper_bound): Return null for vector indexes.
	(gfc_conv_section_startstride): Give vector indexes a start value
	of 0 and a stride of 1.
	(gfc_conv_ss_startstride): Adjust for new GFC_SS_VECTOR representation.
	(gfc_conv_expr_descriptor): Expand comments.  Generalize the
	handling of the !want_pointer && !direct_byref case.  Use
	gfc_ref_needs_temporary_p to decide whether the variable case
	needs a temporary.
	(gfc_walk_variable_expr): Handle DIMEN_VECTOR by creating a
	GFC_SS_VECTOR index.
	* trans-expr.c: Include dependency.h.
	(gfc_trans_arrayfunc_assign): Fail if the target needs a temporary.

2005-09-09  Richard Sandiford  <richard@codesourcery.com>

	PR fortran/21104
	* trans.h (gfc_interface_sym_mapping, gfc_interface_mapping): Moved
	from trans-expr.c.
	(gfc_init_interface_mapping, gfc_free_interface_mapping)
	(gfc_add_interface_mapping, gfc_finish_interface_mapping)
	(gfc_apply_interface_mapping): Declare.
	* trans-array.h (gfc_set_loop_bounds_from_array_spec): Declare.
	(gfc_trans_allocate_temp_array): Add pre and post block arguments.
	* trans-array.c (gfc_set_loop_bounds_from_array_spec): New function.
	(gfc_trans_allocate_array_storage): Replace loop argument with
	separate pre and post blocks.
	(gfc_trans_allocate_temp_array): Add pre and post block arguments.
	Update call to gfc_trans_allocate_array_storage.
	(gfc_trans_array_constructor, gfc_conv_loop_setup): Adjust for new
	interface to gfc_trans_allocate_temp_array.
	* trans-expr.c (gfc_interface_sym_mapping, gfc_interface_mapping):
	Moved to trans.h.
	(gfc_init_interface_mapping, gfc_free_interface_mapping)
	(gfc_add_interface_mapping, gfc_finish_interface_mapping)
	(gfc_apply_interface_mapping): Make extern.
	(gfc_conv_function_call): Build an interface mapping for array
	return values too.  Call gfc_set_loop_bounds_from_array_spec.
	Adjust call to gfc_trans_allocate_temp_array so that code is
	added to SE rather than LOOP.

From-SVN: r104077
2005-09-09 06:34:08 +00:00
Richard Sandiford 62ab4a5499 re PR fortran/21104 (Segmentation fault on correct code)
PR fortran/21104
	* trans.h (gfc_interface_sym_mapping, gfc_interface_mapping): Moved
	from trans-expr.c.
	(gfc_init_interface_mapping, gfc_free_interface_mapping)
	(gfc_add_interface_mapping, gfc_finish_interface_mapping)
	(gfc_apply_interface_mapping): Declare.
	* trans-array.h (gfc_set_loop_bounds_from_array_spec): Declare.
	(gfc_trans_allocate_temp_array): Add pre and post block arguments.
	* trans-array.c (gfc_set_loop_bounds_from_array_spec): New function.
	(gfc_trans_allocate_array_storage): Replace loop argument with
	separate pre and post blocks.
	(gfc_trans_allocate_temp_array): Add pre and post block arguments.
	Update call to gfc_trans_allocate_array_storage.
	(gfc_trans_array_constructor, gfc_conv_loop_setup): Adjust for new
	interface to gfc_trans_allocate_temp_array.
	* trans-expr.c (gfc_interface_sym_mapping, gfc_interface_mapping):
	Moved to trans.h.
	(gfc_init_interface_mapping, gfc_free_interface_mapping)
	(gfc_add_interface_mapping, gfc_finish_interface_mapping)
	(gfc_apply_interface_mapping): Make extern.
	(gfc_conv_function_call): Build an interface mapping for array
	return values too.  Call gfc_set_loop_bounds_from_array_spec.
	Adjust call to gfc_trans_allocate_temp_array so that code is
	added to SE rather than LOOP.

From-SVN: r104075
2005-09-09 06:22:28 +00:00