Jason Merrill [Sun, 17 Mar 2013 02:41:22 +0000 (22:41 -0400)]
re PR c++/54277 (Template class member referred to with implicit this inside lambda is incorrectly const-qualified)
PR c++/54277
* cp-tree.h (WILDCARD_TYPE_P): Split out from...
(MAYBE_CLASS_TYPE_P): ...here.
* semantics.c (lambda_capture_field_type): Only build a
magic decltype for wildcard types.
(lambda_proxy_type): Likewise.
(finish_non_static_data_member): Get the quals from
the object.
Jason Merrill [Sun, 17 Mar 2013 02:37:09 +0000 (22:37 -0400)]
re PR c++/52748 ([C++11] N3276 changes to decltype)
N3276
PR c++/52748
* cp-tree.h (tsubst_flags): Add tf_decltype.
* call.c (build_cxx_call): Don't build a temporary if it's set.
(build_over_call): Make sure it's only passed to build_cxx_call.
* parser.c (cp_parser_primary_expression): Add decltype_p parm.
(cp_parser_unary_expression): Likewise.
(cp_parser_cast_expression): Likewise.
(cp_parser_binary_expression): Likewise.
(cp_parser_assignment_expression): Likewise.
(cp_parser_postfix_expression): Likewise. Pass tf_decltype.
(cp_parser_explicit_instantiation): Add decltype_p. Force a
temporary for a call on the LHS of a comma.
(cp_parser_decltype): Pass true to decltype_p parms.
* pt.c (tsubst) [DECLTYPE_TYPE]: Pass tf_decltype.
(tsubst_copy_and_build): Pass tf_decltype down only for
CALL_EXPR and the RHS of COMPOUND_EXPR.
* tree.c (build_cplus_new): Call complete_type_or_maybe_complain.
Jason Merrill [Sun, 17 Mar 2013 02:34:03 +0000 (22:34 -0400)]
re PR c++/56238 (ICE in tree check: expected record_type or union_type or qual_union_type, have template_type_parm in lookup_conversions, at cp/search.c:2515)
Jason Merrill [Sun, 17 Mar 2013 02:33:38 +0000 (22:33 -0400)]
re PR c++/56095 (Crash casting function pointer as non-type template argument)
PR c++/56095
* class.c (resolve_address_of_overloaded_function): Accept a
reference to function for target_type.
(instantiate_type): Likewise.
* pt.c (convert_nontype_argument): Pass it to
convert_nontype_argument_function.
Jonathan Wakely [Sat, 16 Mar 2013 19:45:53 +0000 (19:45 +0000)]
re PR libstdc++/56002 ([C++11] allow generic locks to be used without requiring plattform support for threads)
PR libstdc++/56002
* include/std/mutex (lock_guard, unique_lock, lock): Define without
depending on _GLIBCXX_HAS_GTHREADS.
* testsuite/30_threads/lock_guard/cons/1.cc: Run on all targets.
Jonathan Wakely [Sat, 16 Mar 2013 02:48:06 +0000 (02:48 +0000)]
re PR libstdc++/56492 (std::packaged_task requires CopyConstructible stored task)
PR libstdc++/56492
* include/std/future (__future_base::_Result): Add result_type
typedef.
(__future_base::_S_allocate_result): Overload for std::allocator.
(__future_base::_Task_setter): Use _Result::result_type instead of
deducing the type from the task.
(__future_base::_Task_state): Store allocator to allow shared state
to be reset. Replace std::function with member of target object type
accessed via ...
(__future_base::_Task_state_base): New abstract base class.
(__future_base::_Task_state_base::_M_run): New virtual function to
invoke type-erased target object.
(__future_base::_Task_state_base::_M_reset): New virtual function to
create new shared_state using same target object and allocator.
(__future_base::__create_task_state): Allocate a new _Task_state.
(packaged_task::packaged_task): Use __create_task_state.
(packaged_task::reset): Use _Task_state_base::_M_reset.
* testsuite/30_threads/packaged_task/cons/56492.cc: New.
Jakub Jelinek [Thu, 14 Mar 2013 09:13:36 +0000 (10:13 +0100)]
re PR tree-optimization/53265 (Warn when undefined behavior implies smaller iteration count)
PR tree-optimization/53265
* common.opt (Waggressive-loop-optimizations): New option.
* tree-ssa-loop-niter.c: Include tree-pass.h.
(do_warn_aggressive_loop_optimizations): New function.
(record_estimate): Call it. Don't add !is_exit bounds to loop->bounds
if number_of_latch_executions returned constant.
(estimate_numbers_of_iterations_loop): Call number_of_latch_executions
early. If number_of_latch_executions returned constant, set
nb_iterations_upper_bound back to it.
* cfgloop.h (struct loop): Add warned_aggressive_loop_optimizations
field.
* Makefile.in (tree-ssa-loop-niter.o): Depend on $(TREE_PASS_H).
* doc/invoke.texi (-Wno-aggressive-loop-optimizations): Document.
* gcc.dg/pr53265.c: New test.
* gcc.dg/torture/pr49518.c: Add -Wno-aggressive-loop-optimizations
to dg-options.
* g++.dg/opt/longbranch2.C (EBCOTLut): Double sizes of a2 and a3
arrays.
* gcc.dg/tree-ssa/cunroll-10.c (main): Rename to foo. Add argument
n, use it as high bound instead of 4.
* unwind-dw2.c (execute_cfa_program): Avoid
-Waggressive-array-optimizations warnings for DW_CFA_GNU_window_save
on targets with DWARF_FRAME_REGISTERS < 32.
Jakub Jelinek [Thu, 14 Mar 2013 08:52:13 +0000 (09:52 +0100)]
t-aarch64-linux (MULTARCH_DIRNAME): Remove.
* config/aarch64/t-aarch64-linux (MULTARCH_DIRNAME): Remove.
(MULTILIB_OSDIRNAMES): Set.
* genmultilib: If defaultosdirname doesn't start with :: , set
defaultosdirname2 instead, clear it and emit two . multilib_raw
entries instead of just one.
* io/transfer.c (read_block_direct): Correct condition.
* intrinsics/execute_command_line.c (execute_command_line):
Remove dead code for the HAVE_FORK case.
re PR target/56347 (FAIL: gfortran.dg/integer_exponentiation_2.f90 -O2 execution test)
PR target/56347
* config/pa/pa.md (call_value): Check for calls to powf and direct to
new call patterns that clobber %fr12.
(call_val_powf, call_val_powf_pic, call_val_powf_64bit): New insn,
split and postreload patterns.
* config/pa/pa.c (pa_conditional_register_usage): Revert marking
registers %fr12 and %fr12R as call used.
Paul Thomas [Sun, 10 Mar 2013 13:23:58 +0000 (13:23 +0000)]
re PR fortran/56575 (An invalid OO code causes ICE)
2013-03-10 Paul Thomas <pault@gcc.gnu.org>
PR fortran/56575
* expr.c (gfc_default_initializer): Check that a class declared
type has any components.
* resolve.c (resolve_fl_derived0): On failing the test for C437
set the type to BT_UNKNOWN to prevent repeat error messages.
2013-03-10 Paul Thomas <pault@gcc.gnu.org>
PR fortran/56575
* gfortran.dg/class_56.f90: New test.
re PR middle-end/56524 (Compiler ICE when compiling with -mips16)
gcc/
PR middle-end/56524
* tree.h (tree_optimization_option): Rename target_optabs to optabs.
Add base_optabs.
(TREE_OPTIMIZATION_OPTABS): Update after previous field change.
(TREE_OPTIMIZATION_BASE_OPTABS): New macro.
(save_optabs_if_changed): Replace with...
(init_tree_optimization_optabs): ...this.
* optabs.c (save_optabs_if_changed): Rename to...
(init_tree_optimization_optabs): ...this. Take the optimization node
as argument. Do nothing if the base optabs are already correct.
Reuse the existing TREE_OPTIMIZATION_OPTABS memory if we need
to recompute optabs.
* function.h (function): Remove optabs field.
* function.c (invoke_set_current_function_hook): Call
init_tree_optimization_optabs. Use the result to initialize
this_fn_optabs.
Aldy Hernandez [Fri, 8 Mar 2013 22:26:37 +0000 (22:26 +0000)]
trans-mem.c (expand_transaction): Do not set PR_INSTRUMENTEDCODE if GTMA_HAS_NO_INSTRUMENTATION.
* trans-mem.c (expand_transaction): Do not set PR_INSTRUMENTEDCODE
if GTMA_HAS_NO_INSTRUMENTATION.
(generate_tm_state): Keep GTMA_HAS_NO_INSTRUMENTATION bit.
(ipa_tm_transform_transaction): Set GTMA_HAS_NO_INSTRUMENTATION.
* gimple.h (GTMA_HAS_NO_INSTRUMENTATION): Define.
* gimple-pretty-print.c (dump_gimple_transaction): Handle
GTMA_HAS_NO_INSTRUMENTATION.
François Dumont [Fri, 8 Mar 2013 20:08:20 +0000 (20:08 +0000)]
vector.tcc (vector<>operator=(const vector<>&): Reset pointers after deallocation when memory can be reused.
2013-03-08 François Dumont <fdumont@gcc.gnu.org>
* include/bits/vector.tcc (vector<>operator=(const vector<>&):
Reset pointers after deallocation when memory can be reused.
* testsuite/23_containers/vector/allocator/minimal.cc: Insert
elements to really challenge C++11 allocator integration.
* testsuite/23_containers/vector/allocator/copy.cc: Likewise.
* testsuite/23_containers/vector/allocator/copy_assign.cc:
Likewise.
* testsuite/23_containers/vector/allocator/move_assign.cc:
Likewise.
* testsuite/23_containers/vector/allocator/swap.cc: Likewise and
swap vector back before checks on memory/personality mapping are
performed.
* testsuite/23_containers/forward_list/allocator/minimal.cc:
Insert element to really challenge C++11 allocator integration.
* testsuite/23_containers/forward_list/allocator/copy.cc:
Likewise.
* testsuite/23_containers/forward_list/allocator/copy_assign.cc:
Likewise.
* testsuite/23_containers/forward_list/allocator/move_assign.cc:
Likewise.
* testsuite/23_containers/forward_list/allocator/swap.cc: Likewise
and swap forward_list back before checks on memory/personality
mapping are performed.