Steven Bosscher [Sun, 4 Jan 2009 00:15:08 +0000 (00:15 +0000)]
re PR middle-end/38584 (Inline heuristics run even at -O0)
PR middle-end/38584
* cfgexpand.c (estimate_stack_frame_size): Simplify the estimate:
Calculate the size of all stack vars assuming no packing of stack
vars will happen, replacing a quadratic algorithm with a linear one.
Paul Thomas [Sat, 3 Jan 2009 17:47:20 +0000 (17:47 +0000)]
re PR fortran/38594 (module function name mangled improperly if contained function of same name exists)
2009-01-03 Paul Thomas <pault@gcc.gnu.org>
PR fortran/38594
* resolve.c (resolve_call): When searching for proper host
association, use symtree rather than symbol. For everything
except generic subroutines, substitute the symtree in the call
rather than the symbol.
2009-01-03 Paul Thomas <pault@gcc.gnu.org>
PR fortran/38594
* gfortran.dg/host_assoc_call_3.f90: Make sure that the generic
interface still works, in addition to original tests.
* gfortran.dg/host_assoc_call_6.f90: New test.
Jakub Jelinek [Sat, 3 Jan 2009 00:54:40 +0000 (01:54 +0100)]
re PR c++/38705 (ICE: canonical types differ for identical types const int and const AlpsNodeIndex_t)
PR c++/38705
* builtins.c (fold_builtin_memory_op): Give up if either operand
is volatile. Set srctype or desttype to non-qualified version
of the other type.
PR rtl-optimization/35805
* df-problems.c (df_lr_finalize): Add recursive call to resolve lr
problem if fast dce is able to remove any instructions.
* dce.c (dce_process_block): Fix dump message.
Jakub Jelinek [Fri, 2 Jan 2009 14:38:05 +0000 (15:38 +0100)]
re PR middle-end/38690 (Missing parentheses for (a-1)/2 in final_cleanup)
PR middle-end/38690
* tree-flow.h (op_code_prio, op_prio): New prototypes.
* tree-pretty-print.c (op_code_prio): New function.
(op_prio): No longer static. Use op_code_prio.
* gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs):
Use op_prio and op_code_prio to determine if () should be
printed around operand(s) or not.
* gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs,
dump_gimple_call, dump_gimple_switch, dump_gimple_cond,
dump_gimple_label, dump_gimple_try, dump_symbols, dump_gimple_phi,
dump_gimple_mem_ops, dump_bb_header, dump_bb_end, pp_cfg_jump): Use
pp_character instead of pp_string for single letter printing.
Jakub Jelinek [Tue, 30 Dec 2008 23:34:28 +0000 (00:34 +0100)]
re PR middle-end/38505 (Revision 142061 caused ICE on __builtin_memcpy)
PR middle-end/38505
* tree-ssa-ccp.c (may_propagate_address_into_dereference): Return
false if ADDR's operand has incomplete type.
Revert:
2008-12-15 Jakub Jelinek <jakub@redhat.com>
PR middle-end/38505
* tree-ssa.c (useless_type_conversion_p_1): Return
false if inner_type is incomplete and outer_type is complete.
Richard Guenther [Tue, 30 Dec 2008 21:20:08 +0000 (21:20 +0000)]
re PR tree-optimization/38645 (ICE with volatile)
2008-12-30 Richard Guenther <rguenther@suse.de>
PR tree-optimization/38645
* tree-ssa-ccp.c (fold_gimple_assign): Use the correct pointer
type.
* tree-ssa-dom.c (cprop_operand): Simplify. Do not propagate
volatileness changing operands.
Dorit Nuzman [Tue, 30 Dec 2008 06:58:57 +0000 (06:58 +0000)]
re PR tree-optimization/38529 (ICE with nested loops)
PR tree-optimization/38529
* tree-vect-transform (vect_transform_stmt): Handle inner-loop stmts
whose DEF is used in the loop-nest that is being vectorized, but
outside the immediately enclosing loop.
Co-Authored-By: Ira Rosen <irar@il.ibm.com>
From-SVN: r142959
re PR fortran/31832 (FAIL: gfortran.dg/integer_exponentiation_2.f90 at -O1 and above)
PR fortran/31832
* acinclude.m4 (LIBGFOR_CHECK_FOR_BROKEN_POWF): New autoconf check for
broken powf.
* configure.ac (LIBGFOR_CHECK_FOR_BROKEN_POWF): Use it.
* intrinsics/c99_functions.c: Use internal powf implementation if
HAVE_BROKEN_POWF is defined.
* configure: Rebuilt.
* config.h.in: Rebuilt.
Jakub Jelinek [Mon, 29 Dec 2008 18:25:19 +0000 (19:25 +0100)]
re PR middle-end/36191 (can't use complex in a eh region if non-call-exceptions is enabled)
PR c++/36191
* tree-complex.c (expand_complex_libcall): Call
maybe_clean_or_replace_eh_stmt and gimple_purge_dead_eh_edges
instead of passing true as 3rd argument to gsi_replace.
* gcc.c-torture/execute/builtins/fprintf.x: Disable test for
freestanding targets.
* gcc.c-torture/execute/pr37573.x: Disable test for 16-bit targets.
* gcc.c-torture/execute/20081117-1.x: Disable test for 16-bit targets.
* gcc.c-torture/compile/limits-stringlit.c: Disable test for picochip.
* gcc.dg/array-quals-1.c: Disable test for picochip.
* lib/target-supports.exp: Add support for freestanding ports and
disable picochip for profiling tests.
Jakub Jelinek [Mon, 29 Dec 2008 08:32:21 +0000 (09:32 +0100)]
re PR driver/38381 (-b option seems to be broken)
PR driver/38381
* gcc.c (process_command): Accept also -b with configuration name
in the next argument.
* doc/invoke.texi (-b): Document that no hyphen is required if
configuration name is in the next argument after -b.
Jakub Jelinek [Mon, 22 Dec 2008 23:41:17 +0000 (00:41 +0100)]
re PR middle-end/31150 (Not promoting an whole array to be static const)
PR middle-end/31150
* dse.c (struct store_info): Add const_rhs field.
(clear_rhs_from_active_local_stores): Clear also const_rhs.
(record_store): Try also cselib_expand_value_rtx to get a constant.
(find_shift_sequence, get_stored_val): Use const_rhs instead of
rhs if worthwhile.
* cselib.c (cselib_record_sets): If !cselib_record_memory and
there is just one set from read-only MEM, look at REG_EQUAL or
REG_EQUIV note.
* dse.c (struct store_info): Add redundant_reason field.
(record_store): When storing the same constant as has been
stored by an earlier store, set redundant_reason field
to the earlier store's insn_info_t. Don't delete cannot_delete
insns.
(find_shift_sequence): Remove read_info argument, add read_mode
and require_cst arguments. Return early if require_cst and
constant wouldn't be returned.
(get_stored_val): New function.
(replace_read): Use it.
(scan_insn): Put even cannot_delete insns with exactly 1 store
into active_local_stores.
(dse_step1): Don't delete cannot_delete insns. Remove redundant
constant stores if contains_cselib_groups and earlier store storing
the same value hasn't been eliminated.
(dse_step6): Renamed to dse_step7. New function.
(dse_step7): Renamed from dse_step6.
(rest_of_handle_dse): Call dse_step6 and dse_step7 at the end.
* cselib.c (cselib_expand_value_rtx): Don't wrap CONST_INTs
into CONST unless really necessary. Handle SUBREG, unary,
ternary, bitfield and compares specially, to be able to simplify
operations on constants.
(expand_loc): Try to optimize LO_SUM.
* dse.c (get_call_args): New function.
(scan_insn): Don't handle BUILT_IN_BZERO. For memset, attempt
to get call arguments and if successful and both len and val are
constants, handle the call as (mem:BLK) (const_int) store.
* dse.c (struct store_info): Add is_large bool field, change
positions_needed into a union of a bitmask and bitmap + count.
(free_store_info): Free bitmap if is_large.
(set_usage_bits): Don't look at stores where
offset + width >= MAX_OFFSET.
(set_position_unneeded, set_all_positions_unneeded,
any_positions_needed_p, all_positions_needed_p): New static inline
functions.
(record_store): Handle BLKmode stores of CONST_INT, if
MEM_SIZE is set on the MEM. Use the new positions_needed
accessor inlines.
(replace_read): Handle reads from BLKmode CONST_INT stores.
(check_mem_read_rtx): Use all_positions_needed_p function.
(dse_step1): Free large positions_needed bitmaps and clear is_large.
* dse.c (struct store_info): Change begin and end types to
HOST_WIDE_INT.
* dse.c (record_store): Fix check for unused store.
* expr.c (block_clear_fn): No longer static.
* expr.h (block_clear_fn): Declare.
* dse.c (scan_insn): Memset and bzero can just read their
arguments.
Jakub Jelinek [Mon, 22 Dec 2008 23:34:07 +0000 (00:34 +0100)]
re PR target/38488 (x86_64 generates much larger and slightly slower code for memset)
* config/i386/i386.c (expand_setmem_via_rep_stos): Add ORIG_VALUE
argument. If ORIG_VALUE is const0_rtx and COUNT is constant,
set MEM_SIZE on DESTMEM.
(ix86_expand_setmem): Adjust callers.
PR target/38488
* expr.h (get_mem_align_offset): New prototype.
* emit-rtl.c (get_mem_align_offset): New function.
* config/i386/i386.c (expand_movmem_via_rep_mov): Set MEM_SIZE correctly.
(expand_constant_movmem_prologue, expand_constant_setmem_prologue):
New functions.
(ix86_expand_movmem): Optimize if COUNT_EXP
is constant, desired_align > align and dst & (desired_align - 1)
is computable at compile time.
(ix86_expand_setmem): Likewise.
* builtins.c (get_memory_rtx): Try to derive MEM_ATTRS from not yet
resolved SAVE_EXPR or POINTER_PLUS_EXPR.
* gcc.target/mips/atomic-memory-2.c: Use dg-options instead of
dg-mips-options. Use isa>=2 instead of -mips32.
* gcc.target/mips/branch-cost-1.c: Use dg-options instead of
dg-mips-options. Use isa>=4 instead of -mips64.
* gcc.target/mips/branch-cost-2.c: Likewise.
* gcc.target/mips/cache-1.c: Use dg-options instead of
dg-mips-options. Add isa>=3 and NOMIPS16 attributes.
* gcc.target/mips/call-saved-1.c: Use dg-options instead of
dg-mips-options. Replace the mips16_attribute directives with
a (-mips16) dg-option. Use isa_rev=0 instead of -mips2.
* gcc.target/mips/call-saved-2.c: Likewise.
* gcc.target/mips/call-saved-3.c: Likewise.
* gcc.target/mips/clear-cache-1.c: Use dg-options instead of
dg-mips-options. Use isa_rev>=2 instead of -mips32r2.
* gcc.target/mips/ext_ins.c: Likewise.
* gcc.target/mips/code-readable-1.c: Use dg-options instead of
dg-mips-options. Replace the mips16_attribute directives with
a (-mips16) dg-option. Use addressing=absolute too.
* gcc.target/mips/code-readable-2.c: Likewise.
* gcc.target/mips/code-readable-3.c: Likewise.
* gcc.target/mips/dmult-1.c: Use dg-options instead of
dg-mips-options. Remove the mips16_attribute directives.
* gcc.target/mips/gcc-have-sync-compare-and-swap-4.c: Likewise.
* gcc.target/mips/dpaq_sa_l_w.c: Use dg-options instead of
dg-mips-options. Remove target restrictions from dg-do.
Use -mgp32 instead of -mips32r2.
* gcc.target/mips/dpsq_sa_l_w.c: Likewise.
* gcc.target/mips/dsp-ctrl.c: Use dg-options instead of
dg-mips-options. Remove target restrictions from dg-do.
Remove the !__mips_dsp code and add -mdsp -mgp32 to dg-options
instead. Add NOMIPS16 attributes.
* gcc.target/mips/dspr2-MULT.c: Use dg-options instead of
dg-mips-options. Replace -march=mips32r2 with -mgp32.
* gcc.target/mips/dspr2-MULTU.c: Likewise.
* gcc.target/mips/ext-1.c: Use dg-options instead of
dg-mips-options. Use isa_rev>=2 instead of -mips64r2.
* gcc.target/mips/fixed-scalar-type.c: Use dg-options instead
of dg-mips-options. Remove target restrictions from dg-do.
Remove -march=mips32r2.
* gcc.target/mips/fixed-vector-type.c: Likewise.
* gcc.target/mips/mips32-dsp-run.c: Likewise.
* gcc.target/mips/mips32-dspr2.c: Likewise. Add NOMIPS16 attributes.
* gcc.target/mips/fpr-moves-7.c: Use dg-options instead of
dg-mips-options. Replace the mips16_attribute directives with
a (-mips16) dg-option. Remove -msoft-float.
* gcc.target/mips/fpr-moves-8.c: Likewise.
* gcc.target/mips/int-moves-1.c: Likewise.
* gcc.target/mips/int-moves-2.c: Likewise.
* gcc.target/mips/gcc-have-sync-compare-and-swap-1.c: Use dg-options
instead of dg-mips-options. Use isa>=2 instead of -mips2.
Add -mgp32.
* gcc.target/mips/gcc-have-sync-compare-and-swap-3.c: Likewise.
* gcc.target/mips/ins-1.c: Use dg-options instead of
dg-mips-options. Use "isa_rev>=2 -mgp32" instead of -march=mips32r2.
* gcc.target/mips/loongson-muldiv-1.c: Use dg-options instead of
dg-mips-options. Use isa=loongson instead of -march=loongson2e.
* gcc.target/mips/loongson-muldiv-2.c: Likewise.
* gcc.target/mips/loongson-simd.c: Remove mips_loongson
target requirement and use isa=loongson instead. Add -mhard-float,
-mno-mips16 and -flax-vector-conversions.
* gcc.target/mips/lazy-binding-1.c: Use dg-options instead of
dg-mips-options. Remove target restrictions from dg-do.
Add NOMIPS16 attributes.
* gcc.target/mips/long-calls-pg.c: Use dg-options instead of
dg-mips-options. Remove -march=mips32 and -fno-pic.
Add NOMIPS16 attributes.
* gcc.target/mips/madd-3.c: Use dg-options instead of
dg-mips-options. Use isa_rev>=1 instead of -mips32.
* gcc.target/mips/maddu-3.c: Likewise.
* gcc.target/mips/msub-3.c: Likewise.
* gcc.target/mips/msubu-3.c: Likewise.
* gcc.target/mips/madd-4.c: Use dg-options instead of
dg-mips-options. Remove -mips32r2.
* gcc.target/mips/maddu-4.c: Likewise.
* gcc.target/mips/msub-4.c: Likewise.
* gcc.target/mips/msubu-4.c: Likewise.
* gcc.target/mips/mips-ps-5.c: Use dg-options instead of
dg-mips-options. Remove -mips64.
* gcc.target/mips/mips-ps-type.c: Likewise.
* gcc.target/mips/mips-ps-7.c: Use dg-options instead of
dg-mips-options. Replace -mips32r2 with -mgp32.
* gcc.target/mips/mips-ps-type-2.c: Use dg-options instead of
dg-mips-options. Use "isa_rev>=2 -mgp32" instead of -mips32r2.
* gcc.target/mips/mips16-attributes.c: Use dg-options instead of
dg-mips-options. Replace the mips16_attribute directives with
a (-mips16) dg-option.
* gcc.target/mips/mips16-attributes-2.c: Likewise.
* gcc.target/mips/r10k-cache-barrier-14.c: Likewise.
* gcc.target/mips/scc-3.c: Likewise.
* gcc.target/mips/mips16e-extends.c: Use dg-options instead of
dg-mips-options. Replace the mips16_attribute directives with
a (-mips16) dg-option. Use isa_rev>=1 instead of -march=mips32.
Add -mlong32.
* gcc.target/mips/mips32-dsp.c: Use dg-options instead of
dg-mips-options. Replace -march=mips32 with -mgp32.
* gcc.target/mips/mips32-dsp-type.c: Use dg-options instead of
dg-mips-options. Remove -march=mips32.
* gcc.target/mips/mips32-dspr2-type.c: Use dg-options instead of
dg-mips-options. Remove -march=mips32r2.
* gcc.target/mips/mips32r2-mxhc1.c: Use dg-options instead of
dg-mips-options. Add NOMIPS16 attributes.
* gcc.target/mips/movcc-1.c: Use dg-options instead of
dg-mips-options. Use isa>=4 instead of -mips4.
* gcc.target/mips/movcc-2.c: Likewise.
* gcc.target/mips/movcc-3.c: Likewise.
* gcc.target/mips/octeon-bbit-1.c: Use dg-options instead of
dg-mips-options. Declare foo as a NOMIPS16 function.
Use foo instead of g.
* gcc.target/mips/near-far-1.c: Use dg-options instead of
dg-mips-options. Replace the nonpic directives with an
addressing=absolute option.
* gcc.target/mips/near-far-2.c: Likewise.
* gcc.target/mips/near-far-3.c: Likewise.
* gcc.target/mips/near-far-4.c: Likewise.
* gcc.target/mips/nmadd-1.c: Use dg-options instead of
dg-mips-options. Use isa=4 instead of -mips4.
* gcc.target/mips/nmadd-2.c: Likewise.
* gcc.target/mips/nmadd-3.c: Likewise.
* gcc.target/mips/rsqrt-1.c: Likewise.
* gcc.target/mips/rsqrt-2.c: Likewise.
* gcc.target/mips/rsqrt-3.c: Likewise.
* gcc.target/mips/save-restore-1.c: Use dg-options instead of
dg-mips-options. Replace the mips16_attribute directives with
a (-mips16) dg-option. Use isa_rev>=1 instead of -mips32r2.
* gcc.target/mips/save-restore-2.c: Likewise.
* gcc.target/mips/save-restore-3.c: Likewise.
* gcc.target/mips/save-restore-4.c: Likewise.
* gcc.target/mips/save-restore-5.c: Likewise.
* gcc.target/mips/scc-1.c: Use dg-options instead of
dg-mips-options. Replace the mips16_attribute directives with
a (-mips16) dg-option. Use isa_rev>=1 instead of -mips32.
* gcc.target/mips/timode-2.c: Remove target restrictions from dg-do.
Use -mgp64.
mips-dsp.md (mips_lbux): Turn into a define_expand, changing operand 1 to a pmode_register_operand.
gcc/
* config/mips/mips-dsp.md (mips_lbux): Turn into a define_expand,
changing operand 1 to a pmode_register_operand.
(mips_lhx, mips_lwx): Likewise.
(mips_lbux_<mode>, mips_lhx_<mode>, mips_lwx_<mode>): New patterns.
* config/mips/mips.c (mips_prepare_builtin_arg): Get the mode of
the value from the argument expression.
Jerry DeLisle [Sun, 21 Dec 2008 21:23:52 +0000 (21:23 +0000)]
re PR fortran/38398 (g0.w edit descriptor: Update for F2008 Tokyo meeting changes)
2008-12-21 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libfortran/38398
* io/io.h (st_parameter_dt): Add new bit to keep track of when to
suppress blanks for g0 formatting.
* io/transfer.c (formatted_transfer_scalar): Always call write_real_g0
for g0 formatting.
* io.c (write.c): Do not use ES formatting and use new bit to suppress
blanks.
* io/write_float.def (output_float): Adjust the location of setting the
width so that it can be adjusted when suppressing blanks. Set number of
blanks to zero when dtp->u.p.g0_no_blanks is set. Do some minor code
clean-up and add some white space for readability.
Arjen Markus [Sun, 21 Dec 2008 18:45:17 +0000 (19:45 +0100)]
re PR fortran/37605 (Remarks on user manual for Gfortran)
2008-12-21 Arjen Markus <arjen.markus@wldelft.nl>
Daniel Kraft <d@domob.eu>
PR fortran/37605
* gfortran.texi: Fixed some typos and some minor style improvements.
* intrinsic.texi: Some clarifications and typo-fixes.
* invoke.texi: Better documenation of the behaviour of the
-fdefault-*-8 options and some other fixes.
Co-Authored-By: Daniel Kraft <d@domob.eu>
From-SVN: r142866
Paolo Carlini [Sun, 21 Dec 2008 15:56:22 +0000 (15:56 +0000)]
re PR libstdc++/38596 (tr1_impl/functional incompatible with -fno-rtti)
2008-12-21 Paolo Carlini <paolo.carlini@oracle.com>
PR libstdc++/38596
* include/tr1_impl/function (function<>::target,
function<>::target_type): Provide only when __GXX_RTTI is defined.
(_Function_base::_M_manager, _Ref_manager<>::_M_manager,
_Function_handler<void(_ArgTypes...), _Member _Class::*>::_M_manager):
Adjust.
Jan Hubicka [Sun, 21 Dec 2008 13:28:26 +0000 (14:28 +0100)]
i376.md (UNSPEC_MS_TO_SYSV_CALL): New constant.
* i376.md (UNSPEC_MS_TO_SYSV_CALL): New constant.
(call_1_rex64_ms_sysv, call_value_0_rex64_ms_sysv,
call_value_1_rex64_ms_sysv): New patterns.
* i386.c (function_arg_ms_64): Pass magical value of -2 as callarg.
(ix86_expand_call): Emit extra clobbers for ms->sysv ABI calls.
Co-Authored-By: Kai Tietz <kai.tietz@onevision.com>
From-SVN: r142859