2007-04-12 Tobias Burnus <burnus@net-b.de>
PR fortran/31562
* gfortran.dg/value_4.c: Use GNU extensions for complex
instead of a struct.
From-SVN: r123780
2007-04-13 Richard Guenther <rguenther@suse.de>
PR tree-optimization/21258
* tree-vrp.c (compare_case_labels): New helper.
(find_switch_asserts): New function.
(find_assert_locations): Call it for SWITCH_EXPRs.
* gcc.dg/tree-ssa/vrp34.c: New testcase.
From-SVN: r123778
* config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
* config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
check is now implied in X87_FLOAT_MODE_P.
(*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
(*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
(fix_trunc<mode>_i386_fisttp): Ditto.
(fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
(*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
(fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
(fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
(*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
(*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
(unnamed_splitters): Ditto.
* config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
for X87_FLOAT_MODE_P mode. Override FIRST_FLOAT_REG with
FIRST_SSE_REG for local functions when SSE math is enabled or
for functions with sseregparm attribute.
(standard_80387_constant_p): Return -1 if mode is not
X87_FLOAT_MODE_P.
(ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
(ix86_expand_compare): Ditto.
(ix86_expand_carry_flag_compare): Ditto.
(ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
DECIMAL_FLOAT_MODE_P.
(ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
of SCALAR_FLOAT_MODE_P.
(ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
[MINUS]: ... here. Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
checks before FLOAT_MODE_P.
[MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
before FLOAT_MODE_P.
[DIV]: Ditto.
[NEG]: Ditto.
[ABS]: Ditto.
[SQRT]: Ditto.
[FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
From-SVN: r123777
2007-04-12 Paolo Bonzini <bonzini@gnu.org>
Charles Wilson <libtool@cwilson.fastmail.fm>
* Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
(libgcc.mvars): Don't depend on them.
* configure.ac (as, collect-ld, nm): Create from exec-tool.in.
* exec-tool.in: New.
Co-Authored-By: Charles Wilson <libtool@cwilson.fastmail.fm>
From-SVN: r123775
fortran/31471
fortran/
* decl.c (gfc_match_end): Also check for construct name in END
FORALL and END WERE statements.
* match.c (match_case_eos): Use uppercase for statement name in
error message.
(match_elsewhere): Construct name may appear iff construct has a
name.
testsuite/
* gfortran.dg/block_name_1.f90: New.
* gfortran.dg/block_name_2.f90: New.
From-SVN: r123758
gcc/
* Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
* genemit.c (main): Emit #include "integrate.h".
* config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
(LOADGP_RTP): New mips_loadgp_style.
* config/mips/mips.h: Include config/vxworks-dummy.h.
(TARGET_RTP_PIC): New macro.
(TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
(TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
(ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
for TARGET_RTP_PIC.
* config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define. Pass down
-mvxworks-pic when using -mrtp and a PIC option.
* config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
for RTP PIC.
(mips_symbolic_constant_p, mips_symbolic_address_p)
(mips_symbol_insns): Handle SYMBOL_HALF.
(override_options): Warn about -G and -mrtp being used together.
Initialize mips_lo_relocs[SYMBOL_HALF].
(mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
(mips_emit_loadgp): Handle LOADGP_RTP.
(mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
* config/mips/mips.md (loadgp_rtp): New insn and splitter.
(tablejump): Handle function-relative case table entries if
TARGET_RTP_PIC.
* config/mips/predicates.md (symbol_ref_operand): New predicate.
From-SVN: r123757
gcc/
* config/mips/mips-protos.h: In comments, refer to loadgp_absolute
rather than loadgp_noshared.
* config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
instead of gen_loadgp_noshared. Use gen_loadgp_newabi instead of
gen_loadgp.
* config/mips/mips.md (loadgp): Rename to...
(loadgp_newabi): ...this.
(loadgp_noshared): Rename to...
(loadgp_absolute): ...this.
From-SVN: r123755
gcc/
* config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
(SYMBOL_GOT_PAGE_OFST): ...this.
(SYMBOL_GOT_GLOBAL): Rename to...
(SYMBOL_GOT_DISP): ...this.
(SYMBOL_GOTOFF_GLOBAL): Rename to...
(SYMBOL_GOTOFF_DISP): ...this. Update comments accordingly.
* config/mips/mips.c (mips_global_symbol_p): New function.
(mips_symbol_binds_local_p): Likewise.
(mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST. Use mips_global_symbol_p
and mips_symbol_binds_local_p.
(mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
(override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
SYMBOL_GOTOFF_DISP.
(mips_ok_for_lazy_binding_p): New function.
(mips_load_call_address, mips_expand_call): Use it.
(mips_dangerous_for_la25_p): Likewise.
* config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
(*got_disp<mode>): Use got_disp_operand instead of
global_got_operand. Use SYMBOL_GOTOFF_DISP instead of
SYMBOL_GOTOFF_GLOBAL.
(*got_page<mode>): Use got_page_ofst_operand instead of
local_got_operand.
* config/mips/predicates.md (const_call_insn_operand): Use
SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
(global_got_operand): Rename to...
(got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
SYMBOL_GOT_GLOBAL.
(local_got_operand): Rename to...
(got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
of SYMBOL_GOT_LOCAL.
From-SVN: r123752
* config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
Use a more efficient implementation.
* config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
inline sequences when not optimizing for size.
From-SVN: r123748
2007-02-11 Jie Zhang <jie.zhang@analog.com>
* config/bfin/bfin.opt (msim): New option.
(mcpu=): New option.
* config/bfin/bfin-protos.h (enum bfin_cpu): New.
(bfin_cpu_t): Typedef of enum bfin_cpu.
(bfin_cpu_type): New declaration.
* config/bfin/elf.h (STARTFILE_SPEC): Add support for
-msim and -mcpu= options.
(LIB_SPEC): Likewise.
* config/bfin/bfin.c (bfin_cpu_type): Define.
(bfin_handle_option): Handle -mcpu= option.
* config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
(TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
__ADSPBF533__ or __ADSPBF537__ according to the cpu type.
From-SVN: r123747
libgfortran:
2007-04-11 Kai Tietz <kai.tietz@onevision.com>
* configure: Regenerate.
libdecnumber:
2007-04-11 Kai Tietz <kai.tietz@onevision.com>
* configure: Regenerate.
config:
2007-04-11 Kai Tietz <kai.tietz@onevision.com>
* stdint.m4: Make template compatible with older cygwin
types.h, wrapping each type in a __XXX_t_defined #ifdef.
From-SVN: r123746
* doc/md.texi (Blackfin family constraints): Document PA and PB.
* config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
(MACFLAGS_MATCH_P): New macro.
* config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
(bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
* config/bfin/bfin.md (MACFLAG_IS_M): New constant. Renumber some of
the other MACFLAG constants.
(sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
(flag_machi): Tighten constraints. Renumber some of the operands.
(flag_machi_acconly): Tighten constraints. Correct operand numbers in
output template.
(flag_machi_parts_acconly): New pattern.
(flag_macinithi): Tighten constraints. Allow any accumulator to be
used.
(flag_macinit1hi): Tighten constraints.
(flag_mul_macv2hi_parts_acconly): New pattern.
From-SVN: r123745
gcc/
* config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
(arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
(powerpc-wrs-vxworksae): Use ${tm_file}.
(i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
after elfos.h. Remove i386/sysv4.h and add i386/vx-common.h.
* config/i386/vx-common.h: New file.
From-SVN: r123744
2007-04-12 Douglas Gregor <doug.gregor@gmail.com>
PR c++/31078
PR c++/31103
* c-common.c (c_build_qualified_type): Set canonical type
appropriately.
2007-04-12 Douglas Gregor <doug.gregor@gmail.com>
PR c++/31078
* g++.dg/other/pr31078.C: New.
From-SVN: r123740
2007-04-12 Richard Guenther <rguenther@suse.de>
* tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
lower bound and element size if lower bound is not zero
or either of the ARRAY_REF operands is set.
From-SVN: r123738
2007-04-12 Richard Guenther <rguenther@suse.de>
PR tree-optimization/24689
PR tree-optimization/31307
* fold-const.c (operand_equal_p): Compare INTEGER_CST array
indices by value.
* gimplify.c (canonicalize_addr_expr): To be consistent with
gimplify_compound_lval only set operands two and three of
ARRAY_REFs if they are not gimple_min_invariant. This makes
it never at this place.
* tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
* g++.dg/tree-ssa/pr31307.C: New testcase.
* gcc.dg/tree-ssa/pr24689.c: Likewise.
From-SVN: r123736
2007-04-12 Tobias Burnus <burnus@net-b.de>
PR fortran/31472
* decl.c (match_attr_spec): Allow PRIVATE/PUBLIC
attribute in type definitions.
(gfc_match_private): Allow PRIVATE statement only
in specification part of modules.
(gfc_match_public): Ditto for PUBLIC.
(gfc_match_derived_decl): Allow PRIVATE/PUBLIC attribute only in
specificification part of modules.
2007-04-12 Tobias Burnus <burnus@net-b.de>
PR fortran/31472
* gfortran.dg/access_spec_1.f90: New test.
* gfortran.dg/access_spec_2.f90: New test.
* gfortran.dg/non_module_public.f90: Match new error message.
From-SVN: r123735
2007-04-11 Paolo Carlini <pcarlini@suse.de>
* config/locale/gnu/c_locale.h: Do not include <langinfo.h>
and <iconv.h>.
* config/locale/gnu/c++locale_internal.h: Include <langinfo.h>.
From-SVN: r123726
2007-04-11 Paul Thomas <pault@gcc.gnu.org>
PR testsuite/31538
* gfortran.dg/result_in_spec_1.f90: Increase dimension from 2
to 4 at line 38 to fix bounds problem.
From-SVN: r123725
* reload.c (find_reloads_toplev, find_reloads_address,
find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
not a pointer equality test, to decide if we need to call
push_reg_equiv_alt_mem.
From-SVN: r123724
PR 30735
PR 31090
* doc/invoke.texi: Document --params max-aliased-vops and
avg-aliased-vops.
* tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
debug_memory_partitions): Move to tree-flow.h
* params.h (AVG_ALIASED_VOPS): Define.
* tree-ssa-alias.c (struct mp_info_def): Remove. Update all
users.
(mp_info_t): Likewise.
(get_mem_sym_stats_for): New.
(set_memory_partition): Move from tree-flow-inline.h.
(mark_non_addressable): Only clear the set of symbols for the
partition if it exists.
(dump_memory_partitions): Move from tree-ssa-operands.c
(debug_memory_partitions): Likewise.
(need_to_partition_p): New.
(dump_mem_ref_stats): New.
(debug_mem_ref_stats): New.
(dump_mem_sym_stats): New.
(debug_mem_sym_stats): New.
(update_mem_sym_stats_from_stmt): New.
(compare_mp_info_entries): New.
(mp_info_cmp): Call it.
(sort_mp_info): Change argument to a list of mem_sym_stats_t
objects.
(get_mpt_for): Move from tree-ssa-operands.c.
(find_partition_for): New.
(create_partition_for): Remove.
(estimate_vop_reduction): New.
(update_reference_counts): New.
(build_mp_info): New.
(compute_memory_partitions): Refactor.
Document new heuristic.
Call build_mp_info, update_reference_counts,
find_partition_for and estimate_vop_reduction.
(compute_may_aliases): Populate virtual operands before
calling debugging dumps.
(delete_mem_sym_stats): New.
(delete_mem_ref_stats): New.
(init_mem_ref_stats): New.
(init_alias_info): Call it.
(maybe_create_global_var): Remove alias_info argument.
Get number of call sites and number of pure/const call sites
from gimple_mem_ref_stats().
(dump_alias_info): Call dump_memory_partitions first.
(dump_points_to_info_for): Show how many times a pointer has
been dereferenced.
* opts.c (decode_options): For -O2 set --param
max-aliased-vops to 500.
For -O3 set --param max-aliased-vops to 1000 and --param
avg-aliased-vops to 3.
* fortran/options.c (gfc_init_options): Remove assignment to
MAX_ALIASED_VOPS.
* tree-flow-inline.h (gimple_mem_ref_stats): New.
* tree-dfa.c (dump_variable): Dump memory reference
statistics.
Dump NO_ALIAS* settings.
(referenced_var_lookup): Tidy.
(mem_sym_stats): New.
* tree-ssa-copy.c (may_propagate_copy): Return true if DEST
and ORIG are different SSA names for a memory partition.
* tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
* tree-flow.h (struct mem_sym_stats_d): Define.
(mem_sym_stats_t): Define.
(struct mem_ref_stats_d): Define.
(struct gimple_df): Add field mem_ref_stats.
(enum noalias_state): Define.
(struct var_ann_d): Add bitfield noalias_state.
(mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
debug_mem_ref_stats, debug_memory_partitions,
debug_mem_sym_stats): Declare.
* tree-ssa-structalias.c (update_alias_info): Update call
sites, pure/const call sites and asm sites in structure
returned by gimple_mem_ref_stats.
Remove local variable IS_POTENTIAL_DEREF.
Increase NUM_DEREFS if the memory expression is a potential
dereference.
Call update_mem_sym_stats_from_stmt.
If the memory references memory, call
update_mem_sym_stats_from_stmt for all the direct memory
symbol references found.
(intra_create_variable_infos): Set noalias_state field for
pointer arguments according to the value of
flag_argument_noalias.
* tree-ssa-structalias.h (struct alias_info): Remove fields
num_calls_found and num_pure_const_calls_found.
(update_mem_sym_stats_from_stmt): Declare.
* params.def (PARAM_MAX_ALIASED_VOPS): Change description.
Set default value to 100.
(PARAM_AVG_ALIASED_VOPS): Define.
From-SVN: r123719