gcc/gcc/fortran
Richard Kenner 44de5aeb00 alias.c (adjust_offset_for_component_ref): Use component_ref_field_offset.
* alias.c (adjust_offset_for_component_ref): Use
	component_ref_field_offset.
	* c-decl.c (build_array_declarator): Add news args for ARRAY_REF.
	* c-gimplify.c (gimplify_expr_stmt): Use alloc_stmt_list.
	(gimplify_decl_stmt): Call gimplify_type_sizes for type.
	For decl, call gimplify_one_sizepos and use statement list.
	(gimplify_compound_literal_expr): New arg PRE_P.
	Add statement to PRE_P list and return DECL.
	(c_gimplify_expr, case COMPOUND_LITERAL_EXPR): Add arg to
	gimplify_compound_literal_expr.
	* c-tree.h (getdecls): Deleted.
	* c-typeck.c (build_component_ref): Add operand for COMPONENT_REF.
	(build_array_ref): Add two operands for ARRAY_REF.
	(build_unary_op): Set TREE_INVARIANT and TREE_CONSTANT for
	COMPOUND_LITERAL_EXPR.
	* coverage.c (tree_coverage_counter_ref): Add new operands
	for ARRAY_REF.
	* emit-rtl.c (component_ref_for_mem_expr): Add new operand
	for COMPONENT_REF.
	(set_mem_attributes_minus_bitpos): Use array_ref_low_bound
	and array_ref_element_size.
	(widen_memory_access):Use component_ref_field_offset.
	* explow.c (update_nonlocal_goto_save_area): Add two operands
	for ARRAY_REF.
	* expr.c (array_ref_element_size, array_ref_low_bound): New functions.
	(component_ref_field_offset): Likewise.
	(get_inner_reference): Use them.
	(expand_expr_real_1, case ARRAY_REF): Use array_ref_low_bound.
	* fold-const.c (fold, case EQ_EXPR): Properly handle DECL_SIZE.
	(fold_read_from_constant_string): Use array_ref_low_bound.
	Verify that result is a character type.
	(build_fold_indirect_ref): Add two operands for ARRAY_REF.
	* function.c (expand_function_start): Likewise.
	* gimple-low.c (expand_var_p): Delete duplicated line.
	* gimplify.c: Add static decls for local functions.
	(cgraph.h): Now included.
	(create_tmp_var): Remove check for ARRAY_TYPE.
	(copy_if_shared_r): Look at bounds and sizes of types.
	(build_and_jump): Return alloc_stmt_list instead of build_empty_stmt.
	(gimplify_exit_expr, shortcut_cond_expr): Likewise.
	(gimplify_save_expr, gimple_push_cleanup): Likewise.
	(gimplify_init_constructor): Likewise.
	WANT_VALUE now bool.
	If empty list with no result wanted, return GS_UNHANDLED.
	Add additional operands for ARRAY_REF and COMPONENT_REF.
	(canonicalize_component_ref): Convert to &array[L].
	(gimplify_array_ref_to_plus): Use array_ref_element_size and
	array_ref_lower_bound.
	(build_addr_expr_with_type, build_addr_expr): New functions.
	(gimplify_compound_lval): WANT_LVALUE now bool.
	Major rework to allow handle_component_p and initialize and
	gimplify new operands for ARRAY_REF, ARRAY_RANGE_REF, and
	COMPONENT_REF.
	(gimplify_array_ref): Deleted.
	(gimplify_self_mod_expr): WANT_VALUE now bool.
	(gimplify_modify_expr): Gimplify to_p and from_p later.
	Factor out code into gimplify_modify_expr_rhs and call twice.
	Move variable-size code earlier and handle PLACEHOLDER_EXPR.
	(gimplify_modify_expr_rhs, gimplify_variable_sized_compare): New fns.
	(gimplify_addr_expr, case VIEW_CONVERT_EXPR): New case.
	(gimplify_expr, case ARRAY_REF): Delete special case.
	Instead handle like COMPONENT_REF; also do ARRAY_RANGE_REF,
	IMAGPART, and REALPART the same way.
	(gimplify_expr, case VIEW_CONVERT_EXPR): New case.
	(gimplify_expr): Call gimplify_variable_sized_compare if applicable.
	Call alloc_stmt_list instead of build_empty_stmt.
	Deal with _REF that's volatile.
	(gimplify_type_sizes, gimplify_one_sizepos): New functions.
	(unshare_body, unvisit_body): New functions.
	(gimplify_body): Call them.
	* stmt.c (expand_stack_alloc): Don't expand TYPE_MAX_VALUE.
	* stor-layout.c (get_pending_sizes): Don't change SAVE_EXPR_CONTEXT.
	* tree-alias-common.c (get_alias_var): Also skip ARRAY_RANGE_REF.
	* tree-cfg.c (tree_node_can_be_shared): Treat ARRAY_RANGE_REF
	like ARRAY_REF.
	(verify_expr, case ADDR_EXPR): Use handled_component_p.
	* tree-dfa.c (get_virtual_var): Likewise.
	* tree-dump.c (dequeue_and_dump, case COMPONENT_REF, ARRAY_REF):
	New cases to dump new operands; likewise for ARRAY_RANGE_REF.
	* tree-eh.c (tree_could_trap, case ARRAY_RANGE_REF): Like ARRAY_REF.
	* tree-gimple.c (is_gimple_addr_expr_arg): Add ARRAY_RANGE_REF
	and INDIRECT_REF.
	(get_base_address): Use handled_component_p.
	* tree-gimple.h (gimplify_type_sizes, gimplify_one_sizepos): New.
	* tree-line.c (walk_tree): Walk more things for types and decls.
	* tree-mudflap.c (mf_build_check_statement_for): Add new operands
	for ARRAY_REF and COMPONENT_REF.
	(mx_xform_derefs_1): Clean up usage of decl sizes.
	* tree-nested.c (build_addr): Use handled_component_p.
	(walk_stmts, case CATCH_EXPR): Add missing "break".
	(get_static_chain, get_frame_field): Add new operand for COMPONENT_REF.
	(finalize_nesting_tree_1): Likewise.
	(convert_nonlocal_reference, case ARRAY_RANGE_REF): Like ARRAY_REF
	and process additional operands.
	(convert_local_reference): Likewise.
	* tree-outof-ssa.c (discover_nonconstant_array_refs_r): Treat
	ARRAY_RANGE_REF similarly to ARRAY_REF.
	* tree-pretty-print.c (dump_generic_node, case QUAL_UNION_TYPE): Handle
	like RECORD_TYPE.
	(dump_generic_node, case COMPONENT_REF): Print offset operand.
	(dump_generic_node, case ARRAY_RANGE_REF): Treat like ARRAY_REF
	and print lower bound and element size for both.
	(op_prio, case ARRAY_RANGE_REF): Like ARRAY_REF.
	* tree-sra.c (csc_build_component_ref): Add new operand.
	(scalarize_call_expr): Use get_base_address.
	* tree-ssa-ccp.c (widen_bitfield): Clean up size handling.
	(maybe_fold_offset_to_array_ref): Rework to handle input having an
	ARRAY_REF, refine handling of lower bound, and add new operands
	for ARRAY_REF.
	(maybe_fold_to_component_ref): Add new operand for COMPONENT_REF.
	(maybe_fold_stmt_indirect): Only fold *&B to B if types match.
	(maybe_fold_stmt_addition): Only handle constant lower bound.
	* tree-ssa-operands.c (get_expr_operands): Minor rearrangements.
	Treat ARRAY_REF and ARRAY_RANGE_REF the same; look at extra operands.
	Look at new offset operand of COMPONENT_REF.
	* tree-ssa.c (set_is_used): Use handled_component_p.
	* tree.c (substitute_in_expr, case COMPONENT_REF): Add new operand.
	(stabilize_reference, case COMPONENT_REF): Likewise.
	(stabilize_reference, case ARRAY_RANGE_REF, ARRAY_REF): Similarly.
	(recompute_tree_invariant_for_addr_expr): Completely rework to
	be more precise.  Also set TREE_SIDE_EFFECTS.
	(build1_stat, case ARRAY_EXPR): Don't handle TREE_SIDE_EFFECTS here.
	(build2_stat, build3_stat, build4_stat): For references,
	propagate TREE_THIS_VOLATILE.
	(get_unwidened): Add new operand for COMPONENT_REF.
	(get_narrower): Likewise; use host_integerp for DECL_SIZE.
	* tree.def (COMPONENT_REF): Add new operand.
	(ARRAY_REF, ARRAY_RANGE_REF): Add two new operands.
	* tree.h (array_ref_element_size, array_ref_low_bound): New decls.
	(component_ref_field_offset): Likewise.
	* config/alpha/alpha.c (alpha_va_start): Add new op for COMPONENT_REF.
	(alpha_gimplify_va_arg): Likewise.
	* config/i386/i386.c (ix86_va_start, ix86_gimplify_va_arg): Likewise.
	* config/i860/i860.c (i860_va_start, i860_va_arg): Likewise.
	* config/iq2000/iq2000.c (iq2000_va_arg): Likewise.
	* config/mips/mips.c (mips_va_start, mips_va_arg): Likewise.
	* config/rs6000/rs6000.c (rs6000_va_start, rs6000_gimplify_va_arg):
	Likewise.
	* config/s390/s390.c (s390_va_start, s390_gimplify_va_arg): Likewise.
	* config/sh/sh.c (sh_va_start, sh_va_arg): Likewise.
	* config/stormy16/stormy16.c (xstormy1_expand_builin_va_start):
	Likewise.
	(xstormy16_expand_builtin_va_arg): Likewise.
	* config/xtensa/xtensa.c (xtensa_va_start, xtensa_va_arg): Likewise.

	* cp/call.c (build_vfield_ref): Add new operand for COMPONENT_REF.
	(build_new_method_call): Likewise.
	* cp/decl.c (local_variable_p_walkfn): Don't walk into types.
	* cp/decl2.c (grok_array_decl): Add new operands for ARRAY_REF.
	(build_anon_union_vars): Add new operand for COMPONENT_REF.
	* cp/init.c (buld_new): Add new operand for ARRAY_REF.
	* cp/method.c (do_build_copy_constructor): New op for COMPONENT_REF.
	(do_build_assign_ref): Likewise.
	* cp/parser.c (cp_parser_direct_new_declarator): Add new operands
	for ARRAY_REF.
	(cp_parser_direct_declarator): Likewise.
	* cp/pt.c (tsubst): Likewise.
	(tsubst_copy, tsubst_copy_and_build): Likewise; also add new operand
 	for COMPONENT_REF.
	* cp/semantics.c (finish_non_static_data_member): Add new operand
	for COMPONENT_REF.
	* cp/typeck.c (build_class_member_access_expr): Likewise.
	(build_class_member_access_expr, finish_class_member_access_expr):
	Likewise.
	(build_ptrmemfunc_access_expr): Likewise.
	(build_array_ref): Add new operands for ARRAY_REF.
	* cp/typeck2.c (split_nonconstant_init_1): Likewise; COMPONENT_REF too.
	* cp/tree.c (count_trees_r, no_linkage_helper): Don't walk in types.

	* fortran/f95-lang.c (LANG_HOOKS_GIMPLE_BEFORE_INLINING): Deleted.
	* fortran/trans-array.c (gfc_conv_descriptor_data): Add operand
	for COMPONENT_REF.
	(gfc_conv_descriptor_offset, gfc_conv_descriptor_dtype): Likewise.
	(gfc_conv_descriptor_dimension, gfc_conv_descriptor_stride): Likewise.
	(gfc_conv_descriptor_lbound, gfc_conv_descriptor_ubound): Likewise.
	* fortran/trans-common.c (create_common): Likewise.
	* fortran/trans-expr.c (gfc_conv_component_ref): Likewise.
	* fortran/trans-io.c (set_parameter_value): Likewise.
	(set_parameter_ref, set_string, set_flag, io_result): Likewise.
	(transfer_expr): Likewise.
	* fortran/trans-decl.c (gfc_trans_auto_character_variable):
	Set up to get DECL_SIZE and DECL_SIZE_UNIT gimplified.
	(gfc_simplify_function): New function.
	(gfc_generate_function-code): Properly handle nested functions.
	* fortran/trans.c (gfc_build_array_ref): Add two new operands
	for ARRAY_REF.

	* java/class.c (build_class_ref): Add new operand for COMPONENT_REF.
	(build_static_field_ref): Likewise and add new operands for ARRAY_REF.
	* java/constants.c (build_ref_from_constant_pool): Likewise.
	* java/expr.c (build_java_array_length_access): Likewise.
	(build_get_class, build_field_ref, build_known_method_ref): Likewise.
	(invoke_build_dtable, build_invokevirtual): Likewise.
	(build_invokeinterface, java_expand_expr): Likewise.
	(emit_init_test_initialization): Likewise.
	* java/java-gimplify.c (java_gimplify_new_array_init): Likewise.
	* java/parse.y (make_qualifed_name, build_array_ref): Likewise.

	* objc/ojbc-act.c (generate_static_references): Add additional
	operands to ARRAY_REF.
	(generate_strings, build_method_prototype_list_template): Likewise.
	(generate_protocol_list): Likewise.

From-SVN: r83474
2004-06-21 23:07:05 -04:00
..
.cvsignore
CONTRIB
ChangeLog alias.c (adjust_offset_for_component_ref): Use component_ref_field_offset. 2004-06-21 23:07:05 -04:00
Make-lang.in Make-lang.in (F95_OBJS, [...]): Alpabetize. 2004-06-12 19:48:41 +00:00
NEWS
README
TODO
arith.c arith.c (gfc_range_check): correct complex underflow. 2004-06-20 20:34:25 +02:00
arith.h
array.c array.c (gfc_insert_constructor): Avoid redundant call to mpz_comp. 2004-06-21 19:16:25 +02:00
bbt.c
check.c re PR fortran/14928 (minloc intrinsic does not understand mask) 2004-06-14 17:56:50 +02:00
config-lang.in
convert.c
data.c Make-lang.in (F95_OBJS, [...]): Alpabetize. 2004-06-12 19:48:41 +00:00
decl.c re PR fortran/14957 (testsuite issues) 2004-06-12 17:02:01 +02:00
dependency.c
dependency.h
dump-parse-tree.c
error.c gfortran.h (gfc_current_locus, [...]): Remove. 2004-05-27 14:35:12 +02:00
expr.c gfortran.h (gfc_current_locus, [...]): Remove. 2004-05-27 14:35:12 +02:00
f95-lang.c alias.c (adjust_offset_for_component_ref): Use component_ref_field_offset. 2004-06-21 23:07:05 -04:00
gfortran.h re PR fortran/14928 (minloc intrinsic does not understand mask) 2004-06-14 17:56:50 +02:00
gfortran.texi re PR fortran/15478 (gfortran manual problems) 2004-06-05 16:41:42 +02:00
gfortranspec.c
interface.c gfortran.h (gfc_actual_arglist): New field missing_arg_type. 2004-06-04 00:35:41 +02:00
intrinsic.c re PR fortran/14928 (minloc intrinsic does not understand mask) 2004-06-14 17:56:50 +02:00
intrinsic.h re PR fortran/14928 (minloc intrinsic does not understand mask) 2004-06-14 17:56:50 +02:00
invoke.texi
io.c re PR fortran/15750 (IOLENGTH form of INQUIRE statement not implemented) 2004-06-22 00:43:55 +00:00
iresolve.c check.c (gfc_check_second_sub, [...]): New functions. 2004-06-12 17:34:47 +00:00
lang-specs.h
lang.opt
match.c re PR fortran/15962 (constant expression not recognized as such) 2004-06-15 23:50:50 +02:00
match.h
matchexp.c gfortran.h (gfc_current_locus, [...]): Remove. 2004-05-27 14:35:12 +02:00
mathbuiltins.def
misc.c
module.c re PR fortran/13372 (ICE in trans-types.c (gfc_typenode_for_spec), see #13201) 2004-06-09 14:55:50 +02:00
options.c
parse.c gfortran.h (gfc_current_locus, [...]): Remove. 2004-05-27 14:35:12 +02:00
parse.h
primary.c gfortran.h (gfc_current_locus, [...]): Remove. 2004-05-27 14:35:12 +02:00
resolve.c re PR fortran/15750 (IOLENGTH form of INQUIRE statement not implemented) 2004-06-22 00:43:55 +00:00
scanner.c re PR fortran/15511 (Warning about truncated lines does not follow the standard gcc error message format) 2004-06-22 00:22:32 +02:00
simplify.c * simplify.c (gfc_simplify_log): Remove useless line of code. 2004-05-29 11:33:30 +00:00
st.c gfortran.h (gfc_current_locus, [...]): Remove. 2004-05-27 14:35:12 +02:00
symbol.c gfortran.h (gfc_current_locus, [...]): Remove. 2004-05-27 14:35:12 +02:00
trans-array.c alias.c (adjust_offset_for_component_ref): Use component_ref_field_offset. 2004-06-21 23:07:05 -04:00
trans-array.h
trans-common.c alias.c (adjust_offset_for_component_ref): Use component_ref_field_offset. 2004-06-21 23:07:05 -04:00
trans-const.c re PR fortran/14067 (no warning when character data statement overflows declared size) 2004-05-30 18:33:28 +02:00
trans-const.h
trans-decl.c alias.c (adjust_offset_for_component_ref): Use component_ref_field_offset. 2004-06-21 23:07:05 -04:00
trans-expr.c alias.c (adjust_offset_for_component_ref): Use component_ref_field_offset. 2004-06-21 23:07:05 -04:00
trans-intrinsic.c Fix ChangeLog, fix parentheses from previous patch to trans-intrinsic.c 2004-06-14 21:25:33 +02:00
trans-io.c alias.c (adjust_offset_for_component_ref): Use component_ref_field_offset. 2004-06-21 23:07:05 -04:00
trans-stmt.c re PR fortran/15620 (Statement functions and optimization cause IC) 2004-05-30 14:37:25 +00:00
trans-stmt.h
trans-types.c * trans-types.c: Fix spelling & layout in comments. 2004-05-31 21:31:12 +02:00
trans-types.h
trans.c alias.c (adjust_offset_for_component_ref): Use component_ref_field_offset. 2004-06-21 23:07:05 -04:00
trans.h tree-alias-common.h (struct tree_alias_ops): Change ip and ip_partial to unsigned int. 2004-06-21 13:37:46 +01:00

README

The goal of the gcc-g95 project is to create a Free (as
in speech) Fortran 95 compiler. The code has been donated
to the Free Software Foundation for inclusion in GCC, thE
GNU Compiler Collection.

WARNING:

G95 is still under development.  Perusing the g77 source, we estimate
that about 200,000 lines of code will be necessary to fully implement
g95.  Currently, G95 is about 70,000 lines long, making it about
version 0.3.

The current g95 can generate code for most legal Fortran 77 programs,
and we're getting close to being able to compile most Fortran 95
programs as well.  The generated code may still be quite poor, however.
Part of this is a back-end issue, since we're using the Work-In-Progress
tree-ssa infrastructure.