re PR rtl-optimization/33927 (replace_read in dse.c could handle cases where GET_MODE_CLASS (read_mode) != GET_MODE_CLASS (store_mode) (and the size is the same))
gcc/
PR rtl-optimization/33927
* Makefile.in (dse.o): Depend on $(TM_P_H).
* expr.h (extract_low_bits): Declare.
* expmed.c (extract_low_bits): New function.
* rtlhooks.c (gen_lowpart_general): Generalize SUBREG handling.
* dse.c: Include tm_p.h.
(find_shift_sequence): Remove the read_reg argument and return the
read value. Emit the instructions instead of returning them.
Iterate on new_mode rather than calculating it each time.
Check MODES_TIEABLE_P. Use simplify_gen_subreg to convert the
source to NEW_MODE and extract_low_bits to convert the shifted
value to READ_MODE.
(replace_read): Allow the load and store to have different mode
classes. Use extract_low_bits when SHIFT == 0. Create the shift
or extraction instructions before trying the replacement. Update
dump-file code accordingly, avoiding use of REGNO (store_info->rhs).
gcc/testsuite/
* gcc.target/mips/dse-1.c: Add checks for zeros.
Andrew Pinski [Fri, 21 Mar 2008 22:18:23 +0000 (15:18 -0700)]
re PR target/27946 (double to long long and back to double stores to the stack)
2008-03-21 Andrew Pinski <andrew_pinski@playstation.sony.com>
PR target/27946
* config/rs6000/rs6000.md (floatdidf2): Discouraging fprs and
encouraging but not allowing gprs for input;
change the input constraint to !f#r.
(fix_truncdfdi2): Discouraging fprs and encouraging but not allowing
gprs for output;
change the output constraint to !f#r.
2008-03-21 Andrew Pinski <andrew_pinski@playstation.sony.com>
PR target/27946
* gcc.target/powerpc/ppc64-double-1.c: New testcase.
Andrew Pinski [Fri, 21 Mar 2008 22:16:49 +0000 (22:16 +0000)]
re PR target/27946 (double to long long and back to double stores to the stack)
2008-03-21 Andrew Pinski <andrew_pinski@playstation.sony.com>
PR target/27947
* config/rs6000/rs6000.md (floatdidf2): Discouraging fprs and
encouraging but not allowing gprs for input;
change the input constraint to !f#r.
(fix_truncdfdi2): Discouraging fprs and encouraging but not allowing
gprs for output;
change the output constraint to !f#r.
2008-03-21 Andrew Pinski <andrew_pinski@playstation.sony.com>
PR target/27947
* gcc.target/powerpc/ppc64-double-1.c: New testcase.
Uros Bizjak [Fri, 21 Mar 2008 20:43:12 +0000 (21:43 +0100)]
re PR target/13958 (Conversion from unsigned to double is painfully slow on P4)
PR target/13958
* config/i386/i386.md ("*floatunssi<mode2>_1"): New pattern with
corresponding post-reload splitters.
("floatunssi<mode>2"): Expand to unsigned_float x87 insn pattern
when x87 FP math is selected.
* config/i386/i386-protos.h (ix86_expand_convert_uns_sixf_sse):
New function prototype.
* config/i386/i386.c (ix86_expand_convert_uns_sixf_sse): New
unreachable function to ease macroization of insn patterns.
Olivier Hainque [Fri, 21 Mar 2008 11:43:54 +0000 (11:43 +0000)]
trans.c (addressable_p): Accept COND_EXPR when both arms are addressable.
2008-03-21 Olivier Hainque <hainque@adacore.com>
Ed Schonberg <schonberg@adacore.com>
* trans.c (addressable_p): Accept COND_EXPR when both arms
are addressable.
(gnat_gimplify_expr): Let the gimplifier handle &COND_EXPR.
(call_to_gnu): Do not use name reference in the error message
for a misaligned by_reference_parameter. The actual may be a
general expression.
Kaz Kojima [Thu, 20 Mar 2008 23:25:41 +0000 (23:25 +0000)]
linux-atomic.asm (ATOMIC_TEST_AND_SET): Take unsigned extension into account.
* config/sh/linux-atomic.asm (ATOMIC_TEST_AND_SET): Take
unsigned extension into account.
(ATOMIC_COMPARE_AND_SWAP): Likewise.
(ATOMIC_FETCH_AND_OP, ATOMIC_FETCH_AND_COMBOP): Likewise.
Do computations on a scratch register.
Richard Guenther [Thu, 20 Mar 2008 22:06:40 +0000 (22:06 +0000)]
tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove special casing of constant qualifiers.
2008-03-20 Richard Guenther <rguenther@suse.de>
* tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
special casing of constant qualifiers.
* tree-ssa.c (useless_type_conversion_p_1): Instead do not
care about them in general.
* tree-ssa-ccp.c (ccp_fold): Addresses are constant or not
regardless of their type.
(fold_stmt_r): Forcefully fold *& if we end up with that.
Victor Kaplansky [Thu, 20 Mar 2008 19:43:56 +0000 (19:43 +0000)]
re PR testsuite/34168 (runtime tests in gfortran.dg/vect fail for unsupported [non-SSE2] targets)
PR testsuite/34168
* lib/target-supports.exp (check_sse2_hw_available): New procedure.
* gcc.dg/vect/vect.exp: Set dg-do-what-default to "compile"
if SSE2 hardware is not available.
* g++.dg/vect/vect.exp: Update target-dependent overrides to match
gcc.dg/vect/vect.exp.
* gfortran.dg/vect/vect.exp: Ditto.
(check_effective_target_lp64_or_vect_no_align): Remove procedure.
Andreas Schwab [Thu, 20 Mar 2008 13:31:25 +0000 (13:31 +0000)]
re PR testsuite/35647 (FAIL: gcc.dg/cpp/cmdlne-d(I|M)-M.c scan-file (^|\\n)cmdlne-d(I|M)-M[^\\n]*:[^\\n]*cmdlne-d(I|M)-M.c)
PR testsuite/35647
* gcc.dg/cpp/cmdlne-dI-M.c: Match optional continuation.
* gcc.dg/cpp/cmdlne-dM-M.c: Likewise.
* gcc.dg/cpp/cmdlne-dN-M.c: Match correct file name and optional
continuation and remove xfail.
Kai Tietz [Thu, 20 Mar 2008 08:24:42 +0000 (08:24 +0000)]
ms format support for mingw.
for gcc:
* c-format.c (replace_format_name_to_system_name): New.
(cmp_attribs): New.
(convert_format_name_to_system_name): New.
(decode_format_attr): Add use of convert_format_name_to_system_name.
(format_types_orig): Add gnu_ prefix to names.
(check_format_info_main): Special treating of \0 escaped names for
supporting multi-character format specifiers as I32, I64.
(TARGET_OVERRIDES_FORMAT_ATTRIBUTES): Use of user defined attributes.
(gnu_target_overrides_format_attributes): New.
* c-format.h: Add structure target_ovr_attr to hold
system specific formatter names.
* config.gcc: Add for x86&x86_64 cygwin and mingw32 targets the
msformat-c.o file to c_target_objs and cxx_target_objs.
* config/i386/mingw32.h (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): New.
(TARGET_OVERRIDES_FORMAT_ATTRIBUTES_COUNT): New.
(TARGET_N_FORMAT_TYPES): New.
* config/i386/msformat-c.c: New.
* config/i386/t-cygming: Add build rule for msformat-c.o.
* doc/extend.texi: Add new format names gnu_* and ms_* and
further details.
* doc/tm.texi: (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): New.
Ira Rosen [Thu, 20 Mar 2008 07:05:53 +0000 (07:05 +0000)]
invoke.texi (-O3): Add -ftree-vectorize to the list of optimizations turned on under -O3.
* doc/invoke.texi (-O3): Add -ftree-vectorize to the list of
optimizations turned on under -O3.
(ftree-vectorize): Add that the flag is turned on with -O3.
Jerry DeLisle [Thu, 20 Mar 2008 02:05:05 +0000 (02:05 +0000)]
re PR fortran/35627 (namelist read error)
2008-03-19 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libfortran/35627
* io/list_read.c (free_line): Clear the line buffer enable flag and
reset the index into line_buffer, aka item_count.
(next_char): Cleanup whitespace.
(read_logical): Use unget_char to assure that the first character of the
bad logical is saved in case it is part of an object name. Remove the
clearing of index and flag that is now in free_line.
(read_real): Likewise.
Thomas Koenig [Wed, 19 Mar 2008 15:42:55 +0000 (15:42 +0000)]
re PR libfortran/32972 (performance of pack/unpack)
2008-03-19 Thomas Koenig <tkoenig@gcc.gnu.org>
PR libfortran/32972
* Makefile.am (in_pack_c): Add in_pack_i1.c, in_pack_i2.c,
in_pack_r4.c, in_pack_r8.c, in_pack_r10.c and in_pack_r16.c.
(in_unpack_c): Add in_unpack_i1.c, in_unpack_i2.c,
in_unpack_r4.c, in_unpack_r8.c, in_unpack_r10.c and
in_unpack_r16.c.
* Makefile.in: Regenerate.
* libgfortran.h: Add prototypes for internal_pack_1,
internal_pack_2, internal_pack_16, internal_pack_r4,
internal_pack_r8, internal_pack_r10, internal_pack_r16,
internal_pack_c10 and internal_pack_c16. Add prototypes for
internal_unpack_1, internal_unpack_2, internal_unpack_16,
internal_unpack_r4, internal_unpack_r8, internal_unpack_r10,
internal_unpack_r16, internal_unpack_c10 and
internal_unpack_c16.
* runtime/in_pack_generic.c (internal_pack): Use sizeof instead
of hardwired sizes.
Add calls to internal_pack_1, internal_pack_2,
internal_pack_16, internal_pack_r4, internal_pack_r8,
internal_pack_r10, internal_pack_r16, internal_pack_c10 and
internal_pack_c16.
* runtime/in_unpack_generic.c (internal_unpack): Use sizeof
instead of hardwired sizes.
Add calls to internal_unpack_1, internal_unpack_2,
internal_unpack_16, internal_unpack_r4, internal_unpack_r8,
internal_unpack_r10, internal_unpack_r16, internal_unpack_c10
and internal_unpack_c16.
* generated/in_pack_r4.c: New file.
* generated/in_pack_i2.c: New file.
* generated/in_unpack_i1.c: New file.
* generated/in_pack_r10.c: New file.
* generated/in_unpack_r4.c: New file.
* generated/in_unpack_i2.c: New file.
* generated/in_unpack_r16.c: New file.
* generated/in_pack_r8.c: New file.
* generated/in_unpack_r10.c: New file.
* generated/in_unpack_r8.c: New file.
* generated/in_pack_r16.c: New file.
* generated/in_pack_i1.c: New file.
2008-03-19 Thomas Koenig <tkoenig@gcc.gnu.org>
PR libfortran/32972
* gfortran.dg/internal_pack_1.f90: New test case.
* gfortran.dg/internal_pack_2.f90: New test case.
* gfortran.dg/internal_pack_3.f90: New test case.
Uros Bizjak [Wed, 19 Mar 2008 14:50:15 +0000 (15:50 +0100)]
re PR target/35496 (test failures between revs. 132950 and 132974)
PR target/35496
* stor-layout.c (update_alignment_for_field): Set minimum alignment
of the underlying type of a MS bitfield layout to the natural
alignment of the type.
Richard Guenther [Wed, 19 Mar 2008 10:44:52 +0000 (10:44 +0000)]
re PR tree-optimization/35609 ("is used uninitialized in this function" should be may warning)
2008-03-19 Richard Guenther <rguenther@suse.de>
PR middle-end/35609
* tree-ssa.c (always_executed): New global flag.
(warn_uninitialized_var): If !always_executed warn with "maybe"
instead of "is".
(execute_early_warn_uninitialized): Compute post-dominators.
Initialize always_executed before processing each basic block.
* gcc.dg/testsuite/uninit-15.c: New testcase.
* gcc.dg/testsuite/uninit-16.c: Likewise.
Mikulas Patocka [Tue, 18 Mar 2008 20:00:12 +0000 (21:00 +0100)]
re PR target/35504 (incorrect code generated on i386 for C++ multiple inheritance, large return structures and regparm or fastcall calling conventions)
PR target/35504
* config/i386/i386.c (x86_this_parameter): Calculate correct location
of "this" pointer when "regparm = N" or "fastcall" is in effect.
testsuite/ChangeLog
PR target/35504
* g++.dg/other/pr35504.C: New test.
Paolo Bonzini [Tue, 18 Mar 2008 17:11:30 +0000 (17:11 +0000)]
expr.c (store_expr): Assume lang_hooks.reduce_bit_field_operations is true.
2008-03-18 Paolo Bonzini <bonzini@gnu.org>
* expr.c (store_expr): Assume lang_hooks.reduce_bit_field_operations
is true.
(expand_expr_real_1) <REDUCE_BIT_FIELD>: Don't look at ignore.
(expand_expr_real_1): Assume lang_hooks.reduce_bit_field_operations
is true. Add "&& !ignore" condition to reduce_bit_field. Modify
target after ignore has been set, and move there also the commputation
of subtarget and original_target.
* langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Delete.
(LANG_HOOKS_INITIALIZER): Remove it.
* langhooks.h (struct lang_hooks): Remove reduce_bit_field_operations.
Richard Guenther [Tue, 18 Mar 2008 16:10:24 +0000 (16:10 +0000)]
tree-ssa-sccvn.c (visit_reference_op_load): If the lookup found an expression with constants, note that in the VN for the lhs.
2008-03-18 Richard Guenther <rguenther@suse.de>
* tree-ssa-sccvn.c (visit_reference_op_load): If the lookup
found an expression with constants, note that in the VN for the lhs.
* tree-ssa-pre.c (eliminate): Visit COND_EXPR statements and
fold them to constants if possible. Run cleanup_cfg if done so.
(execute_pre): Return todo.
(do_pre): Likewise.
(execute_fre): Likewise.
* tree-ssa-forwprop.c (can_propagate_from): Allow propagation
of constants.
(get_prop_source_stmt): Look through pointer conversions.
* gcc.dg/tree-ssa/forwprop-4.c: New testcase.
* gcc.dg/tree-ssa/ssa-fre-16.c: Likewise.
* tree-gimple.h (is_gimple_invariant_address): Declare.
(is_gimple_constant): Likewise.
* tree-gimple.c (is_gimple_constant): New function.
(is_gimple_invariant_address): Likewise.
(is_gimple_min_invariant): Implement in terms of is_gimple_constant
and is_gimple_invariant_address.
* tree-ssa-loop-niter.c (expand_simple_operations): Revert
previous change.
* tree-data-ref.c (get_references_in_stmt): A SSA_NAME is not
an addressable base.
Jakub Jelinek [Tue, 18 Mar 2008 09:54:21 +0000 (10:54 +0100)]
re PR libgomp/35625 (schedule(guided) loops forever if ((end - start) % incr) != 0)
PR libgomp/35625
* iter.c (gomp_iter_guided_next_locked): If q > n, set end to ws->end.
(gomp_iter_guided_next): Likewise.
* testsuite/libgomp.c/pr35625.c: New test.
Richard Guenther [Mon, 17 Mar 2008 14:34:21 +0000 (14:34 +0000)]
re PR tree-optimization/19637 (Missed VRP and FRE opportunities in the presence of casts)
2008-03-17 Richard Guenther <rguenther@suse.de>
PR tree-optimization/19637
* fold-const.c (fold_unary): Remove restrictions of removing
intermediate pointer-conversions (P2)(P1)P0.
* tree-ssa-ccp.c (maybe_fold_stmt_addition): Recover from
conversion to void pointer.
(get_maxval_strlen): Handle addresses of the form &(*p)[0].
2008-03-16 Pedro Lamarão <pedro.lamarao@gmail.com>
* include/std/date_time: New file.
* src/date_time.cc: New file.
* config/abi/pre/gnu.ver: Added <date_time> symbols in version
GLIBCXX_3.4.11 and changed two patterns in version GLIBCXX_3.4
that matched new symbols.
* include/Makefile.am: Add date_time in std headers.
* src/Makefile.am: Add date_time.cc to source files.
* include/Makefile.in: Regenerate.
* src/Makefile.in: Likewise.
2008-03-16 Pedro Lamarão <pedro.lamarao@gmail.com>
2008-03-16 Pedro Lamarão <pedro.lamarao@gmail.com>
* include/std/date_time: New file.
* src/date_time.cc: New file.
* config/abi/pre/gnu.ver: Added <date_time> symbols in version
GLIBCXX_3.4.11 and changed two patterns in version GLIBCXX_3.4
that matched new symbols.
* include/Makefile.am: Add date_time in std headers.
* src/Makefile.am: Add date_time.cc to source files.
* include/Makefile.in: Regenerate.
* src/Makefile.in: Likewise.
2008-03-16 Pedro Lamarão <pedro.lamarao@gmail.com>
2008-03-16 Pedro Lamarão <pedro.lamarao@gmail.com>
* include/std/date_time: New file.
* src/date_time.cc: New file.
* config/abi/pre/gnu.ver: Added <date_time> symbols in version
GLIBCXX_3.4.11 and changed two patterns in version GLIBCXX_3.4
that matched new symbols.
* include/Makefile.am: Add date_time in std headers.
* src/Makefile.am: Add date_time.cc to source files.
* include/Makefile.in: Regenerate.
* src/Makefile.in: Likewise.
2008-03-16 Pedro Lamarão <pedro.lamarao@gmail.com>
* Makefile.am (install-data-local): Rewrite to be more efficient,
using awk, and `install' with multiple files at once. Do not gather
more than 50 files in one go to avoid hitting command line limits.
(install_data_local_split): New variable.
* aclocal.m4: Regenerate.
* configure: Likewise.
* Makefile.in: Likewise.
* gcj/Makefile.in: Likewise.
* include/Makefile.in: Likewise.
* testsuite/Makefile.in: Likewise.
* Makefile.am (write_entries_to_file_split): New variable.
(write_entries_to_file): Write out that many entries at once,
for speed.
* Makefile.in: Regenerate.
Richard Guenther [Sat, 15 Mar 2008 18:22:26 +0000 (18:22 +0000)]
tree-ssa-ccp.c (ccp_fold): Also read from constant values and fold constant aggregate refs.
2008-03-15 Richard Guenther <rguenther@suse.de>
* tree-ssa-ccp.c (ccp_fold): Also read from constant values
and fold constant aggregate refs.
(fold_const_aggregate_ref): Handle string constants
and constructors in ARRAY_REFs. Handle INDIRECT_REF.
(evaluate_stmt): Simplify now that ccp_fold folds constant
aggregate refs.
* tree-ssa-ccp.c (get_symbol_constant_value): Export.
(fold_const_aggregate_ref): Likewise.
(get_value): Return NULL if we don't have any values.
(ccp_finalize): Set const_val to NULL after freeing it.
* tree-flow.h (get_symbol_constant_value): Declare.
(fold_const_aggregate_ref): Likewise.
* tree-ssa-sccvn.c (try_to_simplify): Use them.
Richard Guenther [Sat, 15 Mar 2008 14:27:55 +0000 (14:27 +0000)]
re PR middle-end/35593 (spurious warning "array subscript is below array bounds" with void* function argument plus -O2)
2008-03-15 Richard Guenther <rguenther@suse.de>
PR middle-end/35593
* tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make sure
to not produce negative array indices if not allowed. Add
parameter to indicate that.
(maybe_fold_offset_to_component_ref): Allow negative array
indices only for the first member of a structure.
(maybe_fold_offset_to_reference): Allow negative array indices.
(maybe_fold_stmt_addition): Likewise.
Bjoern Haase [Sat, 15 Mar 2008 12:23:45 +0000 (12:23 +0000)]
avr.c (avr_arch_types): Add avr6 entry.
* gcc/gcc/config/avr/avr.c (avr_arch_types): Add avr6 entry.
(avr_arch): Add ARCH_AVR6.
(avr_mcu_types): Add 'atmega2560' and 'atmega2561' entry.
(initial_elimination_offset): Initialize and use 'avr_pc_size'
instead of fixed value 2.
(print_operand_address): Use gs() asm specifier instead of pm().
(avr_assemble_integer): (Ditto.).
(avr_output_addr_vec_elt): (Ditto.).
(print_operand): Handle "!" code.
* gcc/gcc/config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Add
__AVR_3_BYTE_PC__, __AVR_2_BYTE_PC__ and __AVR_HAVE_JMP_CALL__.
(AVR_HAVE_EIJMP_EICALL): Define.
(AVR_3_BYTE_PC): Redefine.
(AVR_2_BYTE_PC): (Ditto.).
(PRINT_OPERAND_PUNCT_VALID_P): Add '!' code.
(LINK_SPEC): Add atmega2560 and atmega2561.
(CRT_BINUTILS_SPEC): Add atmega2560 (crtm2560.o) and atmega2561
(crtm2561.o).
* gcc/gcc/config/avr/avr.md (call_insn): Use eicall instead of icall
for 3 byte PC devices.
(call_value_insn): (Ditto.).
(*tablejump_enh): Use eijmp instead of ijmp for 3 byte PC devices.
(indirect_jump): Use only for for 2 byte PC devices.
(*tablejump): (Ditto.).
(*indirect_jump_avr6): Add insn.
(*tablejump_rjmp): Don't use for 3 byte PC devices.
* gcc/gcc/config/avr/libgcc.S (__prologue_saves__): Use eijmp
instead of ijmp for 3 byte PC devices.
(__tablejump2__): (Ditto.).
* gcc/gcc/config/avr/t-avr (MULITLIB_OPTIONS): Add avr6 architecture.
(MULITLIB_DIRNAMES): (Ditto.).
(MULTILIB_MATCHES): Add atmega2560 and atmega2561 to list.