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.
Uros Bizjak [Sat, 15 Mar 2008 11:17:05 +0000 (12:17 +0100)]
mmx.md ("sse2_umulv1siv2di3"): Rename from "sse2_umulsidi3".
* config/i386/mmx.md ("sse2_umulv1siv2di3"): Rename from
"sse2_umulsidi3". Use V1DI mode for operand 0.
("mmx_psadbw"): Use V1DI mode for operand 0.
* config/i386/i386-modes.def (V1SI): New vector mode.
* config/i386/i386.c (struct builtin_description)
[IX86_BUILTIN_PMULUDQ]: Use CODE_FOR_sse2_umulv1siv1di3.
(v1di_ftype_v8qi_v8qi): Rename from di_ftype_v8qi_v8qi.
(v1di_ftype_v2si_v2si): Rename from di_ftype_v2si_v2si.
(ix86_init_mmx_sse_builtins) [__builtin_ia32_psadbw]: Use
v1di_ftype_v8qi_v8qi type.
[__builtin_ia32_pmuludq]: Use v1di_ftype_v2si_v2si type.
Ralf Wildenhues [Sat, 15 Mar 2008 10:22:36 +0000 (10:22 +0000)]
gcc/ada/
* gnat_rm.texi (Implementation Defined Characteristics)
(Wide_Text_IO, Wide_Wide_Text_IO): Add @var annotations where
appropriate.
* gnat_ugn.texi (Wide Character Encodings, Switches for gnatbind)
(Switches for gnatchop, Installing a library): Likewise.
Richard Guenther [Fri, 14 Mar 2008 17:05:48 +0000 (17:05 +0000)]
re PR tree-optimization/34172 (Missed store ccp optimization)
2008-03-14 Richard Guenther <rguenther@suse.de>
PR tree-optimization/34172
* tree-flow.h (refs_may_alias_p): Declare.
(get_single_def_stmt): Likewise.
(get_single_def_stmt_from_phi): Likewise.
(get_single_def_stmt_with_phi): Likewise.
* tree-dfa.c (refs_may_alias_p): New function.
(get_single_def_stmt): Likewise.
(get_single_def_stmt_from_phi): Likewise.
(get_single_def_stmt_with_phi): Likewise.
* tree-ssa-sccvn.c (get_def_ref_stmt_vuses): New function.
(vn_reference_lookup_1): New helper function.
(vn_reference_lookup): Walk the virtual use-def chain to
continue searching for a match if the def does not alias the
reference we are looking for.
Richard Guenther [Fri, 14 Mar 2008 14:52:07 +0000 (14:52 +0000)]
re PR tree-optimization/34043 (Missed optimization causing extra loads and stores when using x86_64 builtin function together with aggregate types.)
2008-03-14 Richard Guenther <rguenther@suse.de>
PR tree-optimization/34043
PR tree-optimization/33989
* tree-ssa-pre.c (execute_pre): Allow SCCVN to do insertion
when doing FRE.
(bitmap_find_leader): Use extra argument to verify dominance
relationship inside a basic-block.
(can_PRE_operation): Add VIEW_CONVERT_EXPR.
(find_leader_in_sets): Adjust.
(create_component_ref_by_pieces): Take extra argument for
dominance check, handle lookup failures.
(find_or_generate_expression): Likewise.
(create_expression_by_pieces): Likewise.
(insert_into_preds_of_block): Adjust.
(create_value_expr_from): If asked for, verify all operands
are in the blocks AVAIL_OUT set.
(make_values_for_stmt): Check for SSA_NAMEs that are life
over an abnormal edge.
(compute_avail): Remove such check.
(do_SCCVN_insertion): New function.
(eliminate): If we do not find a leader suitable for replacement
insert a replacement expression from SCCVN if available.
* tree-ssa-sccvn.h (run_scc_vn): Update prototype.
(struct vn_ssa_aux): Add needs_insertion flag.
* tree-ssa-sccvn.c (may_insert): New global flag.
(copy_reference_ops_from_ref): Value-number union member access
based on its size, not type and member if insertion is allowed.
(visit_reference_op_load): For a weak match from union type
punning lookup a view-converted value and insert a SSA_NAME
for that value if that is not found.
(visit_use): Make dumps shorter. Do not disallow value numbering
SSA_NAMEs that are life over an abnormal edge to constants.
(free_scc_vn): Release inserted SSA_NAMEs.
(run_scc_vn): New flag to specify whether insertion is allowed.
Process SSA_NAMEs in forward order.
* tree-ssa-loop-im.c (for_each_index): Handle invariant
ADDR_EXPRs inside VIEW_CONVERT_EXPR.
* fold-const.c (fold_unary): Fold VIEW_CONVERT_EXPRs from/to
pointer type to/from integral types that do not change the
precision to regular conversions.
Jerry DeLisle [Fri, 14 Mar 2008 14:17:41 +0000 (14:17 +0000)]
re PR testsuite/35406 (gfortran.dg/ldist-1.f90 and gcc.dg/tree-ssa/ldist-4.c don't work)
PR testsuite/35406
* gcc.dg/tree-ssa/ldist-4.c: Update expected scan match
count from 0 to 1 for lp64 targets.
* gfortran.dg/ldist-1.f90: Update test to check
for 5 loops distributed instead of 4 for lp64 targets.
Uros Bizjak [Thu, 13 Mar 2008 09:49:43 +0000 (10:49 +0100)]
re PR c++/35553 (-fkeep-inline-functions and -O errors out in SSE headers)
PR target/35553
* config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
__SSE_USE_INLINED_FUNC__ when using -flag-keep-inline-functions
together with optimization.
* config/i386/xmmintrin.h: Use __SSE_USE_INLINED_FUNC__ instead of
__OPTIMIZE__ to choose between inlined intrinsic SSE function having
immediate arguments and its equivalent macro definition.
* config/i386/bmintrin.h: Ditto.
* config/i386/smmintrin.h: Ditto.
* config/i386/tmmintrin.h: Ditto.
* config/i386/mmintrin-common.h: Ditto.
* config/i386/ammintrin.h: Ditto.
* config/i386/emmintrin.h: Ditto.
testsuite/ChangeLog:
PR target/35553
* g++.dg/other/i386-3.C: New test.
Danny Smith [Thu, 13 Mar 2008 07:06:30 +0000 (07:06 +0000)]
re PR target/35054 (No documentation of #pragma push_macro("macro_name"))
PR 35054
* doc/extend.texi (Structure-Packing Pragmas): Replace "Win32"
with the phrase "Microsoft Windows compilers".
(Push/Pop Macro Pragmas): New subsection. Document
#pragma push_macro and pragma pop_macro.