Eric Botcazou [Sun, 8 Feb 2009 23:10:00 +0000 (23:10 +0000)]
tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Make case self-contained.
* tree-ssa-loop-ivopts.c (may_be_nonaddressable_p) <VIEW_CONVERT_EXPR>:
Make case self-contained.
<ARRAY_REF>: Test TYPE_NONALIASED_COMPONENT flag.
ada/
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_String_Literal_Subtype>:
Set TYPE_NONALIASED_COMPONENT on the array type.
* include/std/thread (thread::id): Move definition inside thread.
Use native_handle_type. Remove this_thread::get_id friend.
Change __thread_data_ptr to __shared_base_ptr.
(thread::id::id(native_handle_type): Make public. Still explicit.
Use native_handle_type. Change _M_thread_id to _M_thread.
(thread::__thread_data_base): Rename to _Impl_base. Use id, change
_M_thread_handle to _M_id.
(thread::__thread_data): Rename to _Impl.
Fixup for renames.
(thread::_M_make_thread_data): Return derived type.
(thread::hardware_concurrency): Add definition for default case.
(thread::get_id): Now can define inline.
(thread): Change _M_thread_data to _M_data.
(this_thread::get_id): Now can define inline.
* src/thread.cc (__thread_proxy): Rename to
execute_native_thread_routine.
Fixup for other renames.
* testsuite/30_threads/thread/cons/assign_neg.cc: New.
* testsuite/30_threads/thread/cons/copy_neg.cc: New.
* testsuite/30_threads/thread/algorithm: Move to..
* testsuite/30_threads/thread/swap: ...this.
* testsuite/30_threads/thread/member/hardware_concurrency.cc: Add.
* testsuite/30_threads/thread/id/operators.cc: New.
Joseph Myers [Fri, 6 Feb 2009 20:12:10 +0000 (20:12 +0000)]
re PR c/36432 (“incompatible pointer type” with pointer to array as a struct member)
PR c/36432
* c-decl.c (grokdeclarator): Don't treat [] declarators in fields
as indicating flexible array members unless the field itself is
being declarared as the incomplete array.
testsuite:
* gcc.dg/c90-flex-array-2.c, gcc.dg/c99-flex-array-6.c: New tests.
Paolo Bonzini [Fri, 6 Feb 2009 07:33:05 +0000 (07:33 +0000)]
re PR target/35659 (Miscompiled code with -O2 (but not with -O2 -funroll-loops) on ia64)
2009-02-06 Paolo Bonzini <bonzini@gnu.org>
PR tree-optimization/35659
* tree-ssa-sccvn.c (vn_constant_eq, vn_reference_eq, vn_nary_op_eq
vn_phi_eq): Shortcut if hashcode does not match.
(vn_reference_op_compute_hash): Do not call iterative_hash_expr for
NULL operands.
* tree-ssa-pre.c (pre_expr_hash): Look at hashcode if available,
and avoid iterative_hash_expr.
(FOR_EACH_VALUE_ID_IN_SET): New.
(value_id_compare): Remove.
(sorted_array_from_bitmap_set): Use FOR_EACH_VALUE_ID_IN_SET to
sort expressions by value id.
* include/std/tuple (_Head_base<>::_Head_base(_UHead&&)): Formatting.
(_Head_base<>::__swap_impl): Rename to _M_swap_impl.
(_Tuple_impl<>::__swap_impl): Likewise and make protected to avoid
exposing it in public std::tuple interface.
Paolo Bonzini [Wed, 4 Feb 2009 20:54:36 +0000 (20:54 +0000)]
re PR rtl-optimization/37889 (SEGV, conditional execution proactively executed the false arm.)
2009-02-04 Paolo Bonzini <bonzini@gnu.org>
Hans-Peter Nilsson <hp@axis.com>
PR rtl-optimization/37889
* rtlanal.c (rtx_addr_can_trap_p_1): Add offset and size arguments.
Move offset handling from PLUS to before the switch. Use new
arguments when considering SYMBOL_REFs too.
(rtx_addr_can_trap_p): Pass dummy offset and size.
(enum may_trap_p_flags): Remove.
(may_trap_p_1): Pass size from MEM_SIZE.
Jakub Jelinek [Wed, 4 Feb 2009 16:50:22 +0000 (17:50 +0100)]
re PR c++/39095 (Mangling changes break ABI)
PR c++/39095
* operators.def: Use COMPONENT_REF code for ->/pt operator again,
remove ./dt operator.
* mangle.c (write_expression): Handle COMPONENT_REF after handling
ADDR_EXPR, for COMPONENT_REF without ARROW_EXPR inside of it
write_string ("dt") instead of using operators.def.
Joseph Myers [Wed, 4 Feb 2009 00:59:21 +0000 (00:59 +0000)]
re PR c/29129 ([DR#341] unnamed parameters using [*])
PR c/29129
* c-decl.c (grokdeclarator): Mark [*] arrays in field declarators
as having variable size. Do not give an error for unnamed
parameters with [*] declarators. Give a warning for type names
with [*] declarators and mark them as variable size.
* c-parser.c (c_parser_sizeof_expression): Do not give an error
for sizeof applied to [*] type names.
testsuite:
* c90-arraydecl-1.c: Do not expect error for [*] in abstract
declarator.
* vla-6.c: Likewise. Expect warning not error for [*] lexically
inside function prototype but not part of parameter declarator.
* vla-11.c: New test.
algorithmfwd.h: Add parallelism default for many declarations.
2009-02-03 Johannes Singler <singler@ira.uka.de>
* include/parallel/algorithmfwd.h:
Add parallelism default for many declarations.
* include/parallel/numericfwd.h: Likewise.
* include/parallel/iterator.h: Use iterator_traits as usual.
* include/parallel/par_loop.h:
Include equally_split.h.
(for_each_template_random_access_ed):
Avoid calling the Result default constructor.
* include/parallel/numeric: Replace
for_each_template_random_access by
for_each_template_random_access_ed in numeric functions.
Jakub Jelinek [Tue, 3 Feb 2009 17:26:28 +0000 (18:26 +0100)]
re PR inline-asm/39059 (ICE with fixed-point type in inline-asm)
PR inline-asm/39059
* c-parser.c (c_parser_postfix_expression): If fixed point is not
supported, don't accept FIXED_CSTs.
* c-decl.c (finish_declspecs): Error if fixed point is not supported
and _Sat is used without _Fract/_Accum. Set specs->type to
integer_type_node for cts_fract/cts_accum if fixed point is not
supported.
gcc/
* config/mips/mips.h (FILE_HAS_64BIT_SYMBOLS): New macro.
(ABI_HAS_64BIT_SYMBOLS): Use it.
(DWARF2_ADDR_SIZE): Use it instead of ABI_HAS_64BIT_SYMBOLS.
Jakub Jelinek [Mon, 2 Feb 2009 13:23:43 +0000 (14:23 +0100)]
re PR inline-asm/39058 (ICE with double in inline-asm)
PR inline-asm/39058
* recog.h (asm_operand_ok): Add constraints argument.
* recog.c (asm_operand_ok): Likewise. If it is set, for digits
recurse on matching constraint.
(check_asm_operands): Pass constraints as 3rd argument to
asm_operand_ok. Don't look up matching constraint here.
* stmt.c (expand_asm_operands): Pass NULL as 3rd argument
to asm_operand_ok.
Dave Korn [Sat, 31 Jan 2009 18:52:00 +0000 (18:52 +0000)]
re PR target/38904 (Shared libgcc DLL violates Cygwin platform conventions.)
PR target/38904
* mkmap-flat.awk (END): Use pe_dll command-line arg to pass
LIBRARY name in, instead of hard-coding it.
* config.gcc (i[34567]86-*-pe | i[34567]86-*-cygwin*): Add an
extra target make frag to tmake_files according to EH model.
(i[34567]86-*-mingw* | x86_64-*-mingw*): Likewise.
* config/i386/t-dw2-eh, config/i386/t-sjlj-eh: Add new target
frags that define makefile variable EH_MODEL appropriately.
* config/i386/cygming.h (DWARF2_UNWIND_INFO): Add comment.
* config/i386/cygwin.h (LIBGCC_EH_EXTN): Define to nothing or
to "-sjlj" according to type of EH configured.
(LIBGCC_SONAME): Concatenate it to shared library base name.
* config/i386/mingw32.h (LIBGCC_EH_EXTN): Define to "_dw2" or
to "_sjlj" according to type of EH configured.
(LIBGCC_SONAME): Concatenate it to shared library base name.
* config/i386/t-cygming (SHLIB_SONAME): Use EH_MODEL.
(SHLIB_LINK): Add missing semicolon to if-else construct.
(SHLIB_MKMAP_OPTS): Pass library name to mkmap-flat.awk as
string value of "pe_dll" command-line option.
* config/i386/t-cygwin (SHLIB_EH_EXTENSION): New helper.
(SHLIB_SONAME): Use it when overriding t-cygming default.
(SHLIB_IMPLIB): Override t-cygming default.
(SHLIB_MKMAP_OPTS): Pass library name to mkmap-flat.awk as
string value of "pe_dll" command-line option.
Ian Lance Taylor [Sat, 31 Jan 2009 17:09:24 +0000 (17:09 +0000)]
acinclude.m4 (LIBCOMP_CHECK_LINKER_FEATURES): Set libgomp_ld_is_gold.
* acinclude.m4 (LIBCOMP_CHECK_LINKER_FEATURES): Set
libgomp_ld_is_gold. Get gold version number.
(LIBGOMP_ENABLE_SYMVERS): Gold always support symbol versioning.
* configure: Rebuild.
picochip.c (flag_conserve_stack): set PARAM_LARGE_STACK_FRAME and PARAM_STACK_FRAME_GROWTH to zero under...
* config/picochip/picochip.c (flag_conserve_stack): set
PARAM_LARGE_STACK_FRAME and PARAM_STACK_FRAME_GROWTH to zero under
fconserve-stack. Reduce call-overhead used by inliner.
Kai Tietz [Fri, 30 Jan 2009 08:45:35 +0000 (08:45 +0000)]
i386.c (ix86_can_use_return_insn_p): Check for nsseregs.
2009-01-30 Kai Tietz <kai.tietz@onevision.com>
PR/39002
* config/i386/i386.c (ix86_can_use_return_insn_p): Check for nsseregs.
(ix86_expand_epilogue): Take nsseregs in account to use proper restore
method.
Ulrich Drepper [Fri, 30 Jan 2009 00:08:29 +0000 (00:08 +0000)]
cstring (memchr, [...]): Provide inlines only if __CORRECT_ISO_CPP_STRING_H_PROTO is not defined.
* include/c_std/cstring (memchr, strchr, strpbrk, strrchr, strstr):
Provide inlines only if __CORRECT_ISO_CPP_STRING_H_PROTO is not
defined.
* include/c_std/cwchar (wcschr, wcspbrk, wcsrchr, wcsstr, wmemchr):
Provide inlines only if __CORRECT_ISO_CPP_WCHAR_H_PROTO is not
defined.
* include/c_global/cstring (memchr, strchr, strpbrk, strrchr, strstr):
Provide inlines only if __CORRECT_ISO_CPP_STRING_H_PROTO is not
defined.
* include/c_global/cwchar (wcschr, wcspbrk, wcsrchr, wcsstr, wmemchr):
Provide inlines only if __CORRECT_ISO_CPP_WCHAR_H_PROTO is not
defined.
* testsuite/21_strings/c_strings/char_t/2.cc (test02): If first
argument is const char *, assign result to const char * var, not
char *.
* testsuite/21_strings/c_strings/wchar_t/2.cc (test02): If first
argument is const wchar_t *, assign result to const wchar_t * var, not
wchar_t *.
Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
From-SVN: r143773
Jonathan Wakely [Thu, 29 Jan 2009 23:24:05 +0000 (23:24 +0000)]
thread: Remove unused headers.
2009-01-29 Jonathan Wakely <jwakely.gcc@gmail.com>
* include/std/thread: Remove unused headers.
(__thread_data_base): Remove unused mutex and base.
(thread::~thread): Only detach if joinable.
(thread::joinable): Test if thread data ptr is empty.
(thread::_M_thread_data_mutex): Remove.
(thread::_M_get_thread_data): Remove.
(thread::_M_make_thread_data): Remove overload, use make_shared.
(thread::id::id): Make constructor explicit.
* src/thread.cc (thread::join,thread::detach): Throw if not joinable.
(thread::_M_start_thread): Break shared_ptr cycle on error.
(__thread_proxy): Use shared_ptr swap instead of copy and reset.
* testsuite/30_threads/thread/member/4.cc: New.
* testsuite/30_threads/thread/member/5.cc: New.
Kazu Hirata [Thu, 29 Jan 2009 18:23:21 +0000 (18:23 +0000)]
re PR tree-optimization/39007 (-ftree-loop-distribution ICEs)
gcc/
PR tree-optimization/39007
* tree-loop-distribution.c (generate_builtin): Use
recompute_dominator to compute the immediate dominator of the
basic block just after the loop.
* doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
* doc/passes.texi: Remove entries about regclass, local-alloc, and
global. Modify entries about regmove and IRA.
* regmove.c: Modify file description.
(find_use_as_address, try_auto_increment): Define them only if
AUTO_INC_DEC is defined.
(replacement_quality, replace_in_call_usage, fixup_match_1,
stable_and_no_regs_but_for_p): Remove.
(reg_set_in_bb): Make it static.
(regmove_optimize): Remove flag_ira and code which worked for
!flag_ira.
* local-alloc.c: Remove the file.
* common.opt (fira): Remove.
* ira.c: Include except.h.
(eliminable_regset): Move from global.c.
(mark_elimination): Ditto. Remove flag_ira.
(reg_renumber, struct equivalence, reg_equiv, equiv_mem,
equiv_mem_modified, validate_equiv_mem_from_store,
validate_equiv_mem, equiv_init_varies_p, equiv_init_movable_p,
contains_replace_regs, memref_referenced_p, memref_used_between_p,
no_equiv, recorded_label_ref): Move from local-alloc.c.
(update_equiv_regs): Ditto. Make it static.
(print_insn_chain, print_insn_chains): Move it from global.c.
pseudo_for_reload_consideration_p): Ditto. Remove flag_ira.
(build_insn_chain): Ditto. Make it static.
(ra_init_live_subregs): Move from ra-conflict.c. Make it static.
Rename to init_live_subregs.
(gate_ira): Remove flag_ira.
* regclass.c: Rename reginfo.c. Change file description.
(FORBIDDEN_INC_DEC_CLASSES): Remove.
(reg_class_superclasses, forbidden_inc_dec_class, in_inc_dec):
Remove.
(init_reg_sets_1): Remove code for evaluation of
reg_class_superclasses and losing_caller_save_reg_set.
(init_regs): Remove init_reg_autoinc.
(struct costs, costs, init_cost, ok_for_index_p_nonstrict,
ok_for_base_p_nonstrict): Remove.
(regclass_init): Rename to reginfo_init. Don't initialize
init_cost.
(pass_regclass_init): Rename to pass_reginfo_init. Modify
corresponding entries.
(dump_regclass, record_operand_costs, scan_one_insn,
init_reg_autoinc, regclass, record_reg_classes, copy_cost,
record_address_regs, auto_inc_dec_reg_p): Remove.
(gt-regclass.h): Rename to gt-reginfo.h.
2009-01-29 Andrey Belevantsev <abel@ispras.ru>
Alexander Monakov <amonakov@ispras.ru>
PR middle-end/38857
* sel-sched.c (count_occurrences_1): Check that *cur_rtx is a hard
register.
(move_exprs_to_boundary): Change return type and pass through
should_move from move_op. Relax assert. Update usage ...
(schedule_expr_on_boundary): ... here. Use should_move instead of
cant_move.
(move_op_orig_expr_found): Indicate that insn was disconnected from
stream.
(code_motion_process_successors): Do not call after_merge_succs
callback if original expression was not found when traversing any of
the branches.
(code_motion_path_driver): Change return type. Update prototype.
(move_op): Update comment. Add a new parameter (should_move). Update
prototype. Set *should_move based on indication provided by
move_op_orig_expr_found.
2009-01-29 Steve Ellcey <sje@cup.hp.com>
PR middle-end/38857
* gcc.c-torture/compile/pr38857.c: New test.
Paul Thomas [Wed, 28 Jan 2009 21:48:53 +0000 (21:48 +0000)]
re PR fortran/38852 ([4.3] UBOUND fails for negative stride triplets)
2009-01-28 Paul Thomas <pault@gcc.gnu.org>
PR fortran/38852
PR fortran/39006
* trans-intrinsic.c (gfc_conv_intrinsic_bound): Use the array
descriptor ubound for UBOUND, when the array lbound == 1.
2009-01-28 Paul Thomas <pault@gcc.gnu.org>
PR fortran/38852
PR fortran/39006
* gfortran.dg/bound_6.f90: New test.
Pat Haugen [Wed, 28 Jan 2009 18:51:53 +0000 (18:51 +0000)]
invoke.texi (avoid-indexed-addresses): Document new option.
* doc/invoke.texi (avoid-indexed-addresses): Document new option.
* config/rs6000/rs6000-protos.h (avoiding_indexed_address_p): Declare.
* config/rs6000/rs6000.opt (avoid-indexed-addresses): New option.
* config/rs6000/rs6000.c (rs6000_override_options): Default
avoid-indexed-addresses on for Power6, off for everything else.
(avoiding_indexed_address_p): New function.
(rs6000_legitimize_address): Use it.
(rs6000_legitimate_address): Likewise.
* config/rs6000/rs6000.md (movXX_updateX): Likewise
* gcc.target/powerpc/avoid-indexed-addresses.c: New test.