Tobias Schlüter [Sat, 15 May 2004 17:31:32 +0000 (19:31 +0200)]
re PR fortran/13702 (When preprocessing Fortran files (.F, .F90 and .F95) cpp should emit line numbers.)
PR fortran/13702
(Port from g95)
* gfortran.h (gfc_linebuf): New typedef.
(linebuf): Remove.
(gfc_file): Revamped, use new gfc_linebuf.
(locus): Revamped, use new types.
(gfc_current_file): Remove.
(gfc_current_form, gfc_source_file): New global variables.
* match.c (gfc_match_space, gfc_match_strings): Use
gfc_current_form to find source form.
* module.c (gfc_dump_module): Use gfc_source_file when printing
module header.
* error.c (show_locus, show_loci) Use new data structures to print
locus.
* scanner.c (first_file, first_duplicated_file, gfc_current_file):
Remove.
(file_head, current_file, gfc_current_form, line_head, line_tail,
gfc_current_locus1, gfc_source_file): New global variables.
(gfc_scanner_init1): Set new global variables.
(gfc_scanner_done1): Free new data structures.
(gfc_current_locus): Return pointer to gfc_current_locus1.
(gfc_set_locus): Set gfc_current_locus1.
(gfc_at_eof): Set new variables.
(gfc_at_bol, gfc_at_eol, gfc_advance_line, gfc_next_char): Adapt
to new locus structure.
(gfc_check_include): Remove.
(skip_free_comments, skip_fixed_comments): Use gfc_current_locus1.
(gfc_skip_comments): Use gfc_current_form, find locus with
gfc_current_locus1.
(gfc_next_char): Use gfc_current_form.
(gfc_peek_char, gfc_gobble_whitespace): Use gfc_current_locus1.
(load_line): Use gfc_current_form. Recognize ^Z as EOF. Fix
comment formatting.
(get_file): New function.
(preprocessor_line, include_line): New functions.
(load_file): Move down, rewrite to match new data structures.
(gfc_new_file): Rewrite to match new data structures.
* parse.c (next_statement): Remove code which is now useless. Use
gfc_source_form and gfc_source_file where appropriate.
* trans-decl.c (gfc_get_label_decl): adapt to new data structures
when determining locus of frontend code.
* trans-io.c (set_error_locus): Same.
* trans.c (gfc_get_backend_locus, gfc_set_backend_locus): Likewise.
* lang-specs.h (@f77-cpp-input, @f95-cpp-input): Remove '-P' from
preprocessor flags.
(all): Add missing initializers.
Alan Modra [Sat, 15 May 2004 12:39:34 +0000 (12:39 +0000)]
rs6000.c (rs6000_va_arg <ABI_V4>): Don't use UNITS_PER_WORD to calculate gpr size.
* config/rs6000/rs6000.c (rs6000_va_arg <ABI_V4>): Don't use
UNITS_PER_WORD to calculate gpr size. Re-instate code to set reg
count to 8 to handle n_reg > 2.
* basic-block.h (life_analysis, delete_noop_moves):
Update prototypes.
* bt-load.c (branch_target_load_optimize): Don't take the
insns stream as an argument. Update the life_analysis calls.
* combine.c (combine_instructions): Update delete_noop_moves
calls.
* flow.c (notice_stack_pointer_modification): Don't take the
insns stream as an argument. Work on the flow graph.
(life_analysis): Likewise.
(delete_noop_moves): Likewise.
* passes.c (rest_of_handle_stack_regs): Update reg_to_stack call.
(rest_of_handle_life): Update life_analysis call.
(rest_of_compilation): Likewise, and also update
branch_target_load_optimize call.
* ra.c (reg_alloc): Update life_analysis call.
* reg-stack.c (reg_to_stack): Likewise. Also, don't take
the insns stream as an argument.
* regrename.c (copyprop_hardreg_forward): Update delete_noop_moves
call.
* rtl.c (branch_target_load_optimize, reg_to_stack): Update
prototypes.
* value-profile.c (branch_prob): Update life_analysis call.
* web.c (web_main): Work on the CFG, not on the insns stream.
Jeff Law [Sat, 15 May 2004 06:21:34 +0000 (00:21 -0600)]
tree-ssa-dom.c (redirect_edges_and_update_ssa_graph): Don't even bother marking bypassed virtuals for out-of-ssa.
* tree-ssa-dom.c (redirect_edges_and_update_ssa_graph): Don't even
bother marking bypassed virtuals for out-of-ssa. Instead merge
bypassed virtuals into vars_to_rename just before into-ssa pass.
Geoffrey Keating [Fri, 14 May 2004 22:33:28 +0000 (22:33 +0000)]
name-lookup.c (struct scope_binding): New.
* name-lookup.c (struct scope_binding): New.
(EMPTY_SCOPE_BINDING): New.
(lookup_using_namespace): Take a scope_binding instead of a
cxx_binding.
(qualified_lookup_using_namespace): Likewise.
(cxx_binding_clear): Delete.
(do_nonmember_using_decl): Use a scope_binding instead of a
cxx_binding.
(lookup_tag): Don't call select_decl.
(ambiguous_decl): Don't return anything (and change callers to match).
Take a scope_binding as the second parameter.
(lookup_namespace_name): Use a scope_binding instead of a
cxx_binding.
(unqualified_namespace_lookup): Likewise.
(lookup_qualified_name): Likewise.
(select_decl): Take a scope_binding instead of a cxx_binding.
Use macros rather than hand-coding tests for type-ness.
Steven Bosscher [Fri, 14 May 2004 18:29:09 +0000 (18:29 +0000)]
re PR rtl-optimization/14472 ([tree-ssa] [regression] no sib calling for enum to int functions)
PR opt/14472
* tree-tailcall.c (process_assignment): Use STRIP_NOPS to
ignore type conversions that do not inhibit tail calling.
(find_tail_calls): Likewise.
Jeff Law [Fri, 14 May 2004 17:51:05 +0000 (11:51 -0600)]
tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): Reorganize so that it picks up more opportunities to eliminate ABS expressions...
* tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): Reorganize
so that it picks up more opportunities to eliminate ABS expressions
or turn them into negations.
Andrew Pinski [Fri, 14 May 2004 15:27:37 +0000 (15:27 +0000)]
re PR tree-optimization/14466 (missed PHI optimization (different types))
2004-05-14 Andrew Pinski <pinskia@physics.uc.edu>
PR optimization/14466
* tree-complex.c (make_temp): Remove.
(gimplify_val): Replace make_temp with make_rename_temp
and add NULL as the second argument.
(expand_complex_div_wide): Likewise.
* tree-dfa.c (make_rename_temp): New function.
* tree-flow.h (make_rename_temp): Declare.
* tree-sra.c (make_temp): Remove.
(lookup_scalar): Replace make_temp with make_rename_temp.
(create_scalar_copies): Likewise.
* tree-ssa-phiopt.c (conditional_replacement): When we
get non gimple create a temporary variable to hold the
casted expression.
2004-05-14 Andrew Pinski <pinskia@physics.uc.edu>
PR optimization/14466
* gcc.dg/tree-ssa/20040514-1.c: New test.
* lib-writ.adb, lib-load.adb, lib.ads, lib.adb: Remove Dependent_Unit
flag processing. This was suppressing required dependencies in
No_Run_Time mode and is not needed since the binder does not generate
references for things in libgnat anyway.
* sem_ch3.adb (Access_Type_Declaration): Reorganize code to avoid GCC
warning.
2004-05-14 Thomas Quinot <quinot@act-europe.fr>
* gnat_ugn.texi: Document AIX-specific issue with initialization of
resolver library.
* exp_ch4.adb (Insert_Dereference_Action): Do not generate dereference
action for the case of an actual parameter in an init proc call.
2004-05-14 Ed Schonberg <schonberg@gnat.com>
* sem_ch4.adb (Analyze_Selected_Component): If prefix is a protected
subtype, check visible entities in base type.
* exp_ch7.adb (Clean_Simple_Protected_Objects): Do not generate cleanup
actions if the object is a renaming.
* sem_ch12.adb (Same_Instantiated_Entity): Predicate for
Check_Formal_Package_Instance, to determine more precisely when the
formal and the actual denote the same entity.
2004-05-14 Javier Miranda <miranda@gnat.com>
* par-ch10.adb (P_Context_Clause): Complete documentation on AI-262
* sem_ch10.adb (Analyze_With_Clause): After analyzed, the entity
corresponding to a private_with must be removed from visibility; it
will be made visible later, just before we analyze the private part of
the package.
(Check_Private_Child_Unit): Allow private_with clauses in public
siblings.
(Install_Siblings): Make visible the private entities of private-withed
siblings.
(Install_Withed_Unit): Do not install the private withed unit if we
are compiling a package declaration and the Private_With_OK flag was
not set by the caller. These declarations will be installed later,
just before we analyze the private part of the package.
* sem_ch3.adb (Analyze_Object_Declaration): In case of errors detected
during the evaluation of the expression that initializes the object,
decorate it with the expected type to avoid cascade errors.
Code cleanup.
* sem_ch6.adb (Analyze_Subprogram_Body): If we are compiling a library
subprogram we have to install the private_with clauses after its
specification has been analyzed (as documented in AI-262.TXT).
* sem_ch8.adb (Has_Private_With): New function. Determines if the
current compilation unit has a private with on a given entity.
(Find_Direct_Name): Detect the Beaujolais problem described in
AI-262.TXT
* sem_utils.ads, sem_util.adb (Is_Ancestor_Package): New function. It
provides the functionality of the function Is_Ancestor that was
previously available in sem_ch10. It has been renamed to avoid
overloading.
Tobias Schlüter [Fri, 14 May 2004 13:51:27 +0000 (15:51 +0200)]
re PR fortran/15205 (NEAREST intrinsic returns wrong value in DOUBLE PRECISION)
PR fortran/15205
* iresolve.c (gfc_resolve_nearest): Add new function.
* intrinsic.h: ... declare it here.
* intrinsic.c (add_functions): ... add it as resolving function
for NEAREST.
Bud Davis [Fri, 14 May 2004 12:21:22 +0000 (12:21 +0000)]
re PR libfortran/15149 (problem computing Pi)
PR fortran/15149
* gfortran.fortran-torture/execute/random_init.f90: New test.
* libgfortan.h,intrinsics/random.c: Made random_seed visible.
* runtime/main.c(init): Call random_seed as part of MAIN init.
* tree-ssa-live.c (calculate_live_on_entry): Ignore virtual
variables. Simplify slightly by using USE_OP/DEF_OP instead
of USE_OP_PTR/DEF_OP_PTR and dereferencing the result.
Zack Weinberg [Fri, 14 May 2004 02:33:00 +0000 (02:33 +0000)]
tree.def (documentation): Remove mention of class 'b'.
* tree.def (documentation): Remove mention of class 'b'.
(BLOCK): Now in class 'x'.
* c-common.c (verify_tree): Remove case 'b'.
* c-typeck.c (same_translation_unit_p): Change 'b' to 'x'.
* calls.c (calls_function_1): Control cannot get past the switch
when exp is a BLOCK.
* print-tree.c (print_node): Move code for class 'b' to the class
'c'/'x' switch, as case BLOCK.
* tree.c (tree_size, make_node_stat, tree_node_structure): Likewise.
(unsafe_for_reeval, substitute_placeholder_in_expr)
(stabilize_reference_1): Remove case 'b'.
* tree-browser.c (browse_tree): Change all tests for TREE_CODE_CLASS
of something being 'b' to tests for TREE_CODE of something being
BLOCK.
* tree-ssa-operands.c (get_expr_operands): Likewise.
ada:
* trans.c (gnat_stabilize_reference_1): Remove case 'b'.
Jeff Law [Thu, 13 May 2004 22:46:19 +0000 (16:46 -0600)]
tree-into-ssa.c (compute_global_livein): Use EXECUTE_IF_SET_IN_BITMAP rather than iterating through the blocks testing...
* tree-into-ssa.c (compute_global_livein): Use EXECUTE_IF_SET_IN_BITMAP
rather than iterating through the blocks testing each bit in
livein to initialize the worklist.
(mark_def_sites): Remove useless checks of KILLS for virtual
operands.
Jeff Law [Thu, 13 May 2004 20:55:06 +0000 (14:55 -0600)]
tree-ssa-forwprop.c (record_single_argument_cond_exprs): Accept new parameters for the statement and variable worklist as well as a...
* tree-ssa-forwprop.c (record_single_argument_cond_exprs): Accept
new parameters for the statement and variable worklist as well
as a bitmap of interesting SSA_NAMEs. Walk over the statement
worklist recording interesting variables in the variable worklist
and bitmap. Handle casts between integral and boolean types.
(substitute_single_use_vars): Accept new parameters for the statement
and variable worklist. When a substitution is made add a new
entry to the statement worklist. Handle casts between integral
and boolean types.
(tree_ssa_forward_propagate_single_use_vars): Rework to pass
worklists to children. Iterate until the statement worklist
is empty.
* gcc.dg/tree-ssa/20040513-1.c: New test.
* gcc.dg/tree-ssa/20040513-2.c: New test.
Paolo Bonzini [Wed, 12 May 2004 08:32:00 +0000 (08:32 +0000)]
Replace several arrays with a struct of arrays.
2004-05-12 Paolo Bonzini <bonzini@gnu.org>
Replace several arrays with a struct of arrays.
* combine.c (struct reg_stat): New.
(init_reg_last_arrays): Renamed to...
(init_reg_last): ...this. Callers adjusted.
(reg_stat): New.
(combine_instructions): Allocate it and use it.
(reg_last_death, reg_last_set, reg_last_set_value,
reg_last_set_label, reg_last_set_table_tick,
reg_last_set_invalid, reg_nonzero_bits, reg_sign_bit_copies,
reg_last_set_mode, reg_last_set_nonzero_bits,
reg_last_set_sign_bit_copies): Replace throughout
with items of reg_stat.