]> git.ipfire.org Git - thirdparty/gcc.git/log
thirdparty/gcc.git
7 years agobackport: Makefile.am (myo_inc_dir): Remove.
Ilya Verbin [Thu, 21 Jul 2016 18:41:27 +0000 (18:41 +0000)] 
backport: Makefile.am (myo_inc_dir): Remove.

Merge liboffloadmic from upstream

liboffloadmic/
* Makefile.am (myo_inc_dir): Remove.
(toolexeclib_LTLIBRARIES): Remove libmyo-client.la and
libmyo-service.la.
(liboffloadmic_cppflags): Remove -DMYO_SUPPORT.
(liboffloadmic_host_la_SOURCES): Remove offload_myo_host.cpp.
(liboffloadmic_target_la_SOURCES): Remove offload_myo_target.cpp.
(liboffloadmic_target_la_LIBADD): Remove libmyo-service.la.
(libmyo_client_la_SOURCES, libmyo_service_la_SOURCES): Remove.
(libmyo_client_la_DEPENDENCIES, libmyo_service_la_DEPENDENCIES): Remove.
(libmyo_client_la_CPPFLAGS, libmyo_service_la_CPPFLAGS): Remove.
(libmyo_client_la_LDFLAGS, libmyo_service_la_LDFLAGS): Remove.
* Makefile.in: Regenerate.
* doc/doxygen/header.tex: Merge from upstream, version 20160715
<https://openmprtl.org/sites/default/files/liboffload_oss_20160715.tgz>.
* runtime/cean_util.cpp: Likewise.
* runtime/cean_util.h: Likewise.
* runtime/coi/coi_client.cpp: Likewise.
* runtime/coi/coi_client.h: Likewise.
* runtime/coi/coi_server.cpp: Likewise.
* runtime/coi/coi_server.h: Likewise.
* runtime/compiler_if_host.cpp: Likewise.
* runtime/compiler_if_host.h: Likewise.
* runtime/compiler_if_target.cpp: Likewise.
* runtime/compiler_if_target.h: Likewise.
* runtime/dv_util.cpp: Likewise.
* runtime/dv_util.h: Likewise.
* runtime/liboffload_error.c: Likewise.
* runtime/liboffload_error_codes.h: Likewise.
* runtime/liboffload_msg.c: Likewise.
* runtime/liboffload_msg.h: Likewise.
* runtime/mic_lib.f90: Likewise.
* runtime/offload.h: Likewise.
* runtime/offload_common.cpp: Likewise.
* runtime/offload_common.h: Likewise.
* runtime/offload_engine.cpp: Likewise.
* runtime/offload_engine.h: Likewise.
* runtime/offload_env.cpp: Likewise.
* runtime/offload_env.h: Likewise.
* runtime/offload_host.cpp: Likewise.
* runtime/offload_host.h: Likewise.
* runtime/offload_iterator.h: Likewise.
* runtime/offload_myo_host.cpp: Likewise.
* runtime/offload_myo_host.h: Likewise.
* runtime/offload_myo_target.cpp: Likewise.
* runtime/offload_myo_target.h: Likewise.
* runtime/offload_omp_host.cpp: Likewise.
* runtime/offload_omp_target.cpp: Likewise.
* runtime/offload_orsl.cpp: Likewise.
* runtime/offload_orsl.h: Likewise.
* runtime/offload_table.cpp: Likewise.
* runtime/offload_table.h: Likewise.
* runtime/offload_target.cpp: Likewise.
* runtime/offload_target.h: Likewise.
* runtime/offload_target_main.cpp: Likewise.
* runtime/offload_timer.h: Likewise.
* runtime/offload_timer_host.cpp: Likewise.
* runtime/offload_timer_target.cpp: Likewise.
* runtime/offload_trace.cpp: Likewise.
* runtime/offload_trace.h: Likewise.
* runtime/offload_util.cpp: Likewise.
* runtime/offload_util.h: Likewise.
* runtime/ofldbegin.cpp: Likewise.
* runtime/ofldend.cpp: Likewise.
* runtime/orsl-lite/include/orsl-lite.h: Likewise.
* runtime/orsl-lite/lib/orsl-lite.c: Likewise.
* runtime/use_mpss2.txt: Remove.
* include/coi/common/COIEngine_common.h: Merge from upstream, MPSS
version 3.7.1
<http://registrationcenter-download.intel.com/akdlm/irc_nas/9226/
mpss-3.7.1-linux.tar>.
* include/coi/common/COIEvent_common.h: Likewise.
* include/coi/common/COIMacros_common.h: Likewise.
* include/coi/common/COIPerf_common.h: Likewise.
* include/coi/common/COIResult_common.h: Likewise.
* include/coi/common/COISysInfo_common.h: Likewise.
* include/coi/common/COITypes_common.h: Likewise.
* include/coi/sink/COIBuffer_sink.h: Likewise.
* include/coi/sink/COIPipeline_sink.h: Likewise.
* include/coi/sink/COIProcess_sink.h: Likewise.
* include/coi/source/COIBuffer_source.h: Likewise.
* include/coi/source/COIEngine_source.h: Likewise.
* include/coi/source/COIEvent_source.h: Likewise.
* include/coi/source/COIPipeline_source.h: Likewise.
* include/coi/source/COIProcess_source.h: Likewise.
* include/myo/myo.h: Remove.
* include/myo/myoimpl.h: Remove.
* include/myo/myotypes.h: Remove.
* plugin/Makefile.am (AM_LDFLAGS): Remove -lmyo-service.
* plugin/Makefile.in: Regenerate.
* plugin/libgomp-plugin-intelmic.cpp (LD_LIBRARY_PATH_ENV): Remove.
(MIC_LD_LIBRARY_PATH_ENV): Remove.
(init): Do not set MIC_LD_LIBRARY_PATH.  Now liboffloadmic uses only
LD_LIBRARY_PATH.
* plugin/offload_target_main.cpp: Update copyright years.
* runtime/emulator/coi_common.h: Likewise.
* runtime/emulator/coi_device.cpp: Likewise.
* runtime/emulator/coi_device.h: Likewise.
* runtime/emulator/coi_host.cpp: Likewise.
(COIBufferCreate): Allow COI_BUFFER_OPENCL.
(COIEngineGetInfo): Return COI_DEVICE_KNL instead of COI_ISA_x86_64.
* runtime/emulator/coi_host.h: Update copyright years.
* runtime/emulator/coi_version_asm.h: Likewise.
* runtime/emulator/coi_version_linker_script.map: Likewise.
* runtime/emulator/myo_client.cpp: Remove.
* runtime/emulator/myo_service.cpp: Remove.
* runtime/emulator/myo_service.h: Remove.
* runtime/emulator/myo_version_asm.h: Remove.
* runtime/emulator/myo_version_linker_script.map: Remove.

From-SVN: r238603

7 years agore PR c++/71728 (ICE with goto in statement-expression inside a condition)
Jakub Jelinek [Thu, 21 Jul 2016 18:22:32 +0000 (20:22 +0200)] 
re PR c++/71728 (ICE with goto in statement-expression inside a condition)

PR c++/71728
* constexpr.c (potential_constant_expression_1) <case GOTO_EXPR>:
Replace assert with test, return false if the goto isn't break
or continue.  Formatting fix.

* g++.dg/other/pr71728.C: New test.

From-SVN: r238601

7 years agoFix build of spellcheck-tree.c with older gccs
David Malcolm [Thu, 21 Jul 2016 17:21:12 +0000 (17:21 +0000)] 
Fix build of spellcheck-tree.c with older gccs

gcc/ChangeLog:
* spellcheck-tree.c (best_macro_match::best_macro_match):
Explictly specify the template arguments when invoking the base
class constructor, to help older C++ compilers.

From-SVN: r238598

7 years agore PR sanitizer/71953 (ICE using address sanitizers with PCH)
Jakub Jelinek [Thu, 21 Jul 2016 16:17:58 +0000 (18:17 +0200)] 
re PR sanitizer/71953 (ICE using address sanitizers with PCH)

PR sanitizer/71953
* asan.c (asan_dynamic_init_call): Call asan_init_shadow_ptr_types
before builtin_decl_implicit.

From-SVN: r238596

7 years ago[Patch 3/2 ifcvt costs] Don't expand a conditional move between identical sources
James Greenhalgh [Thu, 21 Jul 2016 15:41:59 +0000 (15:41 +0000)] 
[Patch 3/2 ifcvt costs] Don't expand a conditional move between identical sources

gcc/

* optabs.c (emit_condiitonal_move): Short circuit for identical
sources.

From-SVN: r238595

7 years ago[Patch 2/2 ifcvt costs] Introduce a new cost model for ifcvt.
James Greenhalgh [Thu, 21 Jul 2016 15:40:24 +0000 (15:40 +0000)] 
[Patch 2/2 ifcvt costs] Introduce a new cost model for ifcvt.

gcc/

* ifcvt.c (noce_if_info): New fields: speed_p, original_cost,
max_seq_cost.  Removed fields: then_cost, else_cost, branch_cost.
(noce_conversion_profitable_p): New.
(noce_try_store_flag_constants): Use it.
(noce_try_addcc): Likewise.
(noce_try_store_flag_mask): Likewise.
(noce_try_cmove): Likewise.
(noce_try_cmove_arith): Likewise.
(bb_valid_for_noce_process_p): Add to the cost parameter rather than
overwriting it.
(noce_convert_multiple_sets): Move cost model to here, from...
(bb_ok_for_noce_convert_multiple_sets) ...here.
(noce_process_if_block): Update calls for above changes.
(noce_find_if_block): Record new noce_if_info parameters.

gcc/testsuite/

* gcc.dg/ifcvt-2.c: Use parameter to guide if-conversion heuristics.
* gcc.dg/ifcvt-3.c: Use parameter to guide if-conversion heuristics.
* gcc.dg/pr68435.c: Use parameter to guide if-conversion heuristics.
* gcc.dg/ifcvt-4.c: Use parameter to guide if-conversion heuristics.
* gcc.dg/ifcvt-5.c: Use parameter to guide if-conversion heuristics.

From-SVN: r238594

7 years ago[Patch 1/2 ifcvt costs] New target hook: max_noce_ifcvt_seq_cost
James Greenhalgh [Thu, 21 Jul 2016 15:37:50 +0000 (15:37 +0000)] 
[Patch 1/2 ifcvt costs] New target hook: max_noce_ifcvt_seq_cost

gcc/

* target.def (max_noce_ifcvt_seq_cost): New.
* doc/tm.texi.in (TARGET_MAX_NOCE_IFCVT_SEQ_COST): Document it.
* doc/tm.texi: Regenerate.
* targhooks.h (default_max_noce_ifcvt_seq_cost): New.
* targhooks.c (default_max_noce_ifcvt_seq_cost): New.
* params.def (PARAM_MAX_RTL_IF_CONVERSION_PREDICTABLE_COST): New.
(PARAM_MAX_RTL_IF_CONVERSION_UNPREDICTABLE_COST): Likewise.
* doc/invoke.texi: Document new params.

From-SVN: r238593

7 years agore PR tree-optimization/71947 (x ^ y not folded to 0 if x == y by DOM)
Richard Biener [Thu, 21 Jul 2016 13:00:32 +0000 (13:00 +0000)] 
re PR tree-optimization/71947 (x ^ y not folded to 0 if x == y by DOM)

2016-07-21  Richard Biener  <rguenther@suse.de>

PR tree-optimization/71947
* tree-vrp.c (extract_range_from_assert): Singleton symbolic
ranges have useful limit_vr information.

* gcc.dg/tree-ssa/vrp102.c: New testcase.

From-SVN: r238591

7 years agoDo not divide by zero in analyze_brprob.py
Martin Liska [Thu, 21 Jul 2016 12:53:24 +0000 (14:53 +0200)] 
Do not divide by zero in analyze_brprob.py

* analyze_brprob.py: If there's no loop, do not calculate
average number of loop iterations.

From-SVN: r238590

7 years agofunction-tests.c (build_trivial_generic_function): Set BLOCK_SUPERCONTEXT of DECL_INI...
Richard Biener [Thu, 21 Jul 2016 12:25:00 +0000 (12:25 +0000)] 
function-tests.c (build_trivial_generic_function): Set BLOCK_SUPERCONTEXT of DECL_INITIAL.

2016-07-21  Richard Biener  <rguenther@suse.de>

* function-tests.c (build_trivial_generic_function): Set
BLOCK_SUPERCONTEXT of DECL_INITIAL.
* omp-low.c (create_omp_child_function): Likewise.
(grid_expand_target_grid_body): Likewise.
* cgraphunit.c (init_lowered_empty_function): Likewise.
(cgraph_node::expand_thunk): Likewise.
* tree-parloops.c (create_loop_fn): Likewise.
* ipa.c (cgraph_build_static_cdtor_1): Likewise.

cp/
* vtable-class-hierarchy.c (vtv_generate_init_routine): Set
DECL_IGNORED_P.

java/
* jcf-parse.c (java_emit_static_constructor): Set
BLOCK_SUPERCONTEXT of DECL_INITIAL.

From-SVN: r238589

7 years agotree-ssa-strlen.c (strlen_dom_walker::before_dom_children): Fix typo in comment.
Prathamesh Kulkarni [Thu, 21 Jul 2016 12:12:05 +0000 (12:12 +0000)] 
tree-ssa-strlen.c (strlen_dom_walker::before_dom_children): Fix typo in comment.

2016-07-21  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>

* tree-ssa-strlen.c (strlen_dom_walker::before_dom_children): Fix typo
in comment.

From-SVN: r238588

7 years agoSome patterns for moving one bit around by BST + BLD.
Georg-Johann Lay [Thu, 21 Jul 2016 11:00:56 +0000 (11:00 +0000)] 
Some patterns for moving one bit around by BST + BLD.

* config/avr/avr.md (any_extract, any_shiftrt): New code iterators.
(*insv.extract, *insv.shiftrt, *insv.not-bit.0, *insv.not-bit.7)
(*insv.xor-extract, *insv.xor1-bit.0): New insns.
(adjust_len) [insv_notbit, insv_notbit_0, insv_notbit_7]: New
values for insn attribute.
* config/avr/avr.c (avr_out_insert_notbit): New function.
(avr_adjust_insn_length): Handle ADJUST_LEN_INSV_NOTBIT,
ADJUST_LEN_INSV_NOTBIT_0/_7.
* config/avr/avr-protos.h (avr_out_insert_notbit): New proto.

From-SVN: r238587

7 years agotree-chrec.c (convert_affine_scev): New parameter.
Bin Cheng [Thu, 21 Jul 2016 10:52:13 +0000 (10:52 +0000)] 
tree-chrec.c (convert_affine_scev): New parameter.

* tree-chrec.c (convert_affine_scev): New parameter.  Pass new arg.
(chrec_convert_1, chrec_convert): Ditto.
* tree-chrec.h (chrec_convert, convert_affine_scev): New parameter.
* tree-scalar-evolution.c (interpret_rhs_expr): Pass new arg.
* tree-vrp.c (adjust_range_with_scev): Ditto.
* tree-ssa-loop-niter.c (idx_infer_loop_bounds): Ditto.
(scev_var_range_cant_overflow): New function.
(scev_probably_wraps_p): New parameter.  Call above function.
* tree-ssa-loop-niter.h (scev_probably_wraps_p): New parameter.

gcc/testsuite
* gcc.dg/tree-ssa/scev-15.c: New.

From-SVN: r238586

7 years agotree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Clean up by removing computati...
Bin Cheng [Thu, 21 Jul 2016 10:44:33 +0000 (10:44 +0000)] 
tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Clean up by removing computation of may_be_zero.

* tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Clean up
by removing computation of may_be_zero.

From-SVN: r238585

7 years ago[ARM] Fix PR target/59833
Aurelien Jarno [Thu, 21 Jul 2016 08:27:47 +0000 (08:27 +0000)] 
[ARM] Fix PR target/59833

For Aurelien Jarno <aurelien@aurel32.net>

On ARM soft-float, the float to double conversion doesn't convert a sNaN
to qNaN as the IEEE Std 754 standard mandates:

"Under default exception handling, any operation signaling an invalid
operation exception and for which a floating-point result is to be
delivered shall deliver a quiet NaN."

Given the soft float ARM code ignores exceptions and always provides a
result, a float to double conversion of a signaling NaN should return a
quiet NaN. Fix this in extendsfdf2.

gcc/ChangeLog:

PR target/59833
* config/arm/ieee754-df.S (extendsfdf2): Convert sNaN to qNaN.

gcc/testsuite/ChangeLog:

* gcc.dg/pr59833.c: New testcase.

From-SVN: r238584

7 years agovect-mask-store-move-1.c: XFAIL.
Bin Cheng [Thu, 21 Jul 2016 08:26:25 +0000 (08:26 +0000)] 
vect-mask-store-move-1.c: XFAIL.

gcc/testsuite
* gcc.dg/vect/vect-mask-store-move-1.c: XFAIL.

From-SVN: r238583

7 years ago* tree-object-size.c (unknown): Use HOST_WIDE_INT_M1U instead of -1.
Jakub Jelinek [Thu, 21 Jul 2016 07:47:44 +0000 (09:47 +0200)] 
* tree-object-size.c (unknown): Use HOST_WIDE_INT_M1U instead of -1.

From-SVN: r238581

7 years agore PR libgomp/71941 (ICE with OpenMP tasks and queue)
Jakub Jelinek [Thu, 21 Jul 2016 07:02:04 +0000 (09:02 +0200)] 
re PR libgomp/71941 (ICE with OpenMP tasks and queue)

PR c++/71941
* cp-gimplify.c (cp_genericize): For nested cp_genericize calls
save/restore bc_label array.

* g++.dg/gomp/pr71941.C: New test.

From-SVN: r238579

7 years agoPR c++/70781 - ICE on ill-formed lambda.
Jason Merrill [Thu, 21 Jul 2016 06:05:58 +0000 (02:05 -0400)] 
PR c++/70781 - ICE on ill-formed lambda.

* parser.c (cp_parser_lambda_expression): Unset OK if there was an
error parsing the lambda-declarator.

From-SVN: r238563

7 years agoPR c++/71896 - constexpr pointer-to-member comparison.
Jason Merrill [Thu, 21 Jul 2016 06:05:51 +0000 (02:05 -0400)] 
PR c++/71896 - constexpr pointer-to-member comparison.

* constexpr.c (cxx_eval_binary_expression): Handle comparison
between lowered and unlowered PTRMEM_CST.

From-SVN: r238562

7 years agoPR c++/70942 - generic lambda with auto&& parameter.
Jason Merrill [Thu, 21 Jul 2016 06:05:44 +0000 (02:05 -0400)] 
PR c++/70942 - generic lambda with auto&& parameter.

* g++.dg/cpp1y/lambda-generic-conv3.C: New.

From-SVN: r238561

7 years agoPR c++/65168 - -Waddress in unevaluated context.
Jason Merrill [Thu, 21 Jul 2016 06:05:39 +0000 (02:05 -0400)] 
PR c++/65168 - -Waddress in unevaluated context.

gcc/c-family/
* c-common.c (c_common_truthvalue_conversion): Check
c_inhibit_evaluation_warnings for warning about address of
reference.
gcc/cp/
* typeck.c (cp_truthvalue_conversion): Compare pointers to nullptr.
Don't set c_inhibit_evaluation_warnings.

From-SVN: r238560

7 years agoPR c++/71121 - -Waddress, constexpr, and PMFs.
Jason Merrill [Thu, 21 Jul 2016 06:05:33 +0000 (02:05 -0400)] 
PR c++/71121 - -Waddress, constexpr, and PMFs.

* cp-gimplify.c (cp_fully_fold): First call maybe_constant_value.

From-SVN: r238559

7 years agoImproving concepts performance and diagnostics.
Andrew Sutton [Thu, 21 Jul 2016 06:05:24 +0000 (06:05 +0000)] 
Improving concepts performance and diagnostics.

PR c++/67565
PR c++/67579
PR c++/71843
gcc/
* timevar.def (TV_CONSTRAINT_SAT, TV_CONSTRAINT_SUB): New time vars
for constraint satisfaction and subsumption.
* timevar.h (auto_timevar): New constructor that matches the push/pop
pattern of usage in pt.c.
gcc/cp/
* cp-tree.def (CHECK_CONSTR): New.
* cp-tree.h (CHECK_CONSTR_CONCEPT): New.
(CHECK_CONSTR_ARGS): New.
* constraint.cc (make_predicate_constraint): Remove in favor of
normalize_expression.
(resolve_constraint_check): Actually return error_mark_node when
resolution fails.
(resolve_variable_concept_check): Perform coercion as if processing
a template. Also return errors on resolution failure.
(lift_*): Remove all of these functions. Don't unnecessarily inline
concepts.
(learn_*): Add facilities to memoize implications for subsumption
during normalization.
(expanding_concept): New.
(expand_concept): New. Return the inlined and normalized definition
of a concept when needed.
(transform_*, xform_*): Rename to normalize_* to better reflect the
responsibility of those functions.
(normalize_template_id_expression): Check for non-boolean operands
when possible. Generate check constraints instead of normal variable
references.
(normalize_call_expression): Report errors when resolution fails.
(check_for_logical_overloads): Rewrite this check to more accurately
report the error.
(normalize_atom): Check for overloaded calls and invalid types before
determining if the expression refers to a concept.
(build_constraints): Don't cache normalized constraints or decmposed
assumptions.
(finish_shorthand_constraint): Return a normalized expression instead
of a predicate constraint.
(finish_template_introduction): Same.
(placeholder_extract_concept_and_args): Rewrite this since we only
ever get check constraints here.
(equivalent_placeholder_constraints): Rewrite in terms of check
constraints, and handle error_mark_nodes correctly.
(tsubst_check_constraint, tsubst_expr_constr, tsubst_type_constr)
(tsubst_implicit_conversion_constr)
(tsubst_argument_deduction_constr, tsubst_exception_constr)
(tsubst_parameterized_constraint, tsubst_constraint): New.
(tsbust_conjunection): Replace with tsubst_logical_operator and
actually generate the right kind of constraint.
(tsubst_requirement_body): Reverse the order of substituted arguments
so that they appear in the order written (helps diagnostics).
(satisfy_check_constraint): New.
(satisfy_conjunction): Simplify.
(satisfy_disjunction): Same.
(satisfy_constraint_1): Handle check constraints.
(eval_constr): New (private) global state.
(evaluating_constraints_sentinel): New. Manages eval_constr.
(satisfy_constraint): Add timing variables.
(satisfy_associated_constraints): Add hooks for memoization.
(evaluate_function_concept): Build a check constraint instead of
normalizing its definition.
(evaluate_variable_concept): Same.
(evaluate_constraint_expression): Normalize, but in the current
declaration processing context.
(evaluating_constraints_p): New.
(elide_constraint_failure_p): Actually emit constraint_thresh errors.
(diagnose_*): Remove artificial indentation. Add a new parameter to
each that tracks the current (complete) constraint prior to any
substitutions.
(diagnose_expression): Removed.
(diagnose_call_expression): Same.
(diagnose_template_id): Same.
(diagnose_template_id): New.
(diagnose_logical_constraint): New.
(diagnose_expression_constraint): Show the original expression.
(diagnose_type_constraint): Show the original type.
(diagnose_implicit_conversion_constraint): Be specific about
failures, don't re-diagnose a known-to-be-failed substitutions,
and manage elisions properly.
(diagnose_argument_deduction_constraint): Same.
(diagnose_exception_constraint): Same.
(diagnose_parameterized_constraint): Same.
(constraint_p): Allow EXPR_PACK_EXPANSION.
* logic.cc (next_by_distance): Removed. No longer used.
(any_p): Renamed from any_of.
(term_entry, term_hasher): New.
(term_list): Rewrite to include a hash table for quick lookup.
Also, make less stateful.
(proof_state): Extend to allow goals to be discharged once
satisfied.
(non_atomic_constraint_p): New.
(any_non_atomic_constraints_p): New.
(...rest...): Previous implementation completely replaced with an
iterative algorithm that opportunistically prunes the search space
before committing to using more memory.
* parser.c: (cp_parser_type_parameter): Normalize constraints.
(cp_parser_explicit_template_declaration): Same.
* pt.c: (finish_template_variable): Be less redundant with this error
message.
(template_args_equal): No longer static.
(tsubst_decl): Don't try to find specializations of variables that
have already been instantiated.
(build_non_dependent_expr): Avoid infinite recursion during concept
expansion.
(make_constrained_auto): Normalize constraints.
(do_auto_deduction): When doing auto deduction from a
partial-concept-id, be sure to include the explicit args checking
the constraints.
(constraint_sat_*): New. Memoize satisfied constraints.
(concept_spec_*): New. Memoize expressions associated with a concept
specialization.
(constraint_memos, concept_memos): New.
(lookup_constraint_satisfaction, memoize_constraint_satisfaction): New.
(lookup_concept_satisfaction, memoize_concept_satisfaction): New.
(get_concept_expansion, save_concept_expansion): New.
(hash_subsumption_args): New.
(comp_subsumption_args): New.
(subsumption_*): New. Memoize parts of the subsumption relation.
(lookup_subsumption_result, save_subsumption_result): New.
(init_constraint_processing): Initialize memo tables.
(get_constraints): Shortcut if !flag_concepts.
* decl.c (grokfndecl): Normalize constraints.
* error.c (dump_simple_decl): Print "concept" when appropriate.
(dump_function_decl): Same.
(dump_template_decl): Don't write requirements when we're not
printing the header.
(dump_expr): Handle fold expressions.
* cxx-pretty-print.c (cxx_pretty_printer::expression): Handle
fold expressions.
(get_fold_operator): New.
(pp_cxx_unary_left_fold_expression): New.
(pp_cxx_unary_right_fold_expression): New.
(pp_cxx_binary_fold_expression): New.
(pp_cxx_check_constraint): New.
(pp_cxx_*_constraint): Rewrite the grammar of internal constraints
to make them easier to read when debugging.
* search.c (accessible_p): Don't shortcut when evaluating constraints.
* tree.c (cp_tree_equal): Handle CHECK_CONSTR.

Co-Authored-By: Jason Merrill <jason@redhat.com>
From-SVN: r238558

7 years agoDaily bump.
GCC Administrator [Thu, 21 Jul 2016 00:16:19 +0000 (00:16 +0000)] 
Daily bump.

From-SVN: r238557

7 years agohwint.h (HOST_WIDE_INT_0): New define.
Uros Bizjak [Wed, 20 Jul 2016 21:59:44 +0000 (23:59 +0200)] 
hwint.h (HOST_WIDE_INT_0): New define.

* hwint.h (HOST_WIDE_INT_0): New define.
(HOST_WIDE_INT_0U): Ditto.
* double-int.c: Use HOST_WIDE_INT_0 instead of (HOST_WIDE_INT) 0.
* dse.c: Use HOST_WIDE_INT_0U instead of (unsigned HOST_WIDE_INT) 0.
* simplify-rtx.c: Ditto.
* tree-object-size.c: Ditto.

From-SVN: r238545

7 years agoC++ FE: handle misspelled identifiers and typenames
David Malcolm [Wed, 20 Jul 2016 18:42:11 +0000 (18:42 +0000)] 
C++ FE: handle misspelled identifiers and typenames

gcc/cp/ChangeLog:
PR c/70339
PR c/71858
* name-lookup.c: Include gcc-rich-location.h, spellcheck-tree.h,
and parser.h.
(suggest_alternatives_for): If no candidates are found, try
lookup_name_fuzzy and report if if finds a suggestion.
(consider_binding_level): New function.
(lookup_name_fuzzy) New function.
* parser.c: Include gcc-rich-location.h.
(cp_lexer_next_token_is_decl_specifier_keyword): Move most of
logic into...
(cp_keyword_starts_decl_specifier_p): ...this new function.
(cp_parser_diagnose_invalid_type_name): When issuing
"does not name a type" errors, attempt to make a suggestion using
lookup_name_fuzzy.
* parser.h (cp_keyword_starts_decl_specifier_p): New prototype.
* search.c (lookup_field_fuzzy_info::fuzzy_lookup_field): Reject
types that are not CLASS_TYPE_P, rather than rejecting individual
tree codes.

gcc/testsuite/ChangeLog:
PR c/70339
PR c/71858
* g++.dg/spellcheck-identifiers.C: New test case, based on
gcc.dg/spellcheck-identifiers.c.
* g++.dg/spellcheck-identifiers-2.C: New test case, based on
gcc.dg/spellcheck-identifiers-2.c.
* g++.dg/spellcheck-typenames.C: New test case, based on
gcc.dg/spellcheck-typenames.c

From-SVN: r238538

7 years agoS/390: Remove mode size check in encode_section_info.
Andreas Krebbel [Wed, 20 Jul 2016 18:33:30 +0000 (18:33 +0000)] 
S/390: Remove mode size check in encode_section_info.

With the last change the not-aligned symbol ref markers are always set
for modes with size zero.  This is wrong since for larl the size of
the access does not matter.  This patch removes that check entirely
from s390_encode_section_info.  Modes with a size of 0 get rejected in
s390_check_symref_alignment which is used for the load/store relative
instructions to check for natural alignment.

Bootstrapped and regression tested on s390 and s390x with
--with-arch=z900 and --with-arch=z13.

gcc/ChangeLog:

2016-07-20  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

* config/s390/s390.c (s390_encode_section_info): Remove mode size
check.

From-SVN: r238536

7 years agoDocument LWG DR 2684 status and regenerate libstdc++ manual
Jonathan Wakely [Wed, 20 Jul 2016 18:22:05 +0000 (19:22 +0100)] 
Document LWG DR 2684 status and regenerate libstdc++ manual

* doc/xml/manual/intro.xml: Document DR 2684 status.
* doc/html/*: Regenerate.

From-SVN: r238535

7 years agoLWG 2441 Provide exact-width atomic typedefs
Jonathan Wakely [Wed, 20 Jul 2016 18:21:59 +0000 (19:21 +0100)] 
LWG 2441 Provide exact-width atomic typedefs

* include/std/atomic (atomic_int8_t, atomic_uint8_t, atomic_int16_t)
(atomic_uint16_t, atomic_int32_t, atomic_uint32_t, atomic_int64_t)
(atomic_uint64_t): Define (LWG 2441).
* testsuite/29_atomics/headers/atomic/std_c++0x_neg.cc: Remove empty
lines.
* testsuite/29_atomics/headers/atomic/types_std_c++0x.cc: Test for
the new types.
* doc/xml/manual/intro.xml: Document DR 2441 status.

From-SVN: r238534

7 years agoLWG 2328 Rvalue stream extraction should use perfect forwarding
Jonathan Wakely [Wed, 20 Jul 2016 18:21:53 +0000 (19:21 +0100)] 
LWG 2328 Rvalue stream extraction should use perfect forwarding

* include/std/istream (operator>>(basic_istream&&, _Tp&)): Adjust
to use perfect forwarding (LWG 2328).
* testsuite/27_io/rvalue_streams.cc: Test perfect forwarding.
* doc/xml/manual/intro.xml: Document DR 2328 status.

From-SVN: r238533

7 years agoUse static pointer to member when catching nullptr
Jonathan Wakely [Wed, 20 Jul 2016 18:21:48 +0000 (19:21 +0100)] 
Use static pointer to member when catching nullptr

libstdc++-v3:

* libsupc++/pbase_type_info.cc (__pbase_type_info::__do_catch): Use
static objects for catching nullptr as pointer to member types.

gcc/testsuite:

* g++.dg/cpp0x/nullptr35.C: Change expected result for catching as
pointer to member function and also test catching by reference.

From-SVN: r238532

7 years agoS/390: Fix pr67443.c.
Dominik Vogt [Wed, 20 Jul 2016 17:11:37 +0000 (17:11 +0000)] 
S/390: Fix pr67443.c.

The attached patch rewrites the pr67443.c testcase in a different way
so that the test still works with the changed allocation of globals
pinned to registers.  The test ist hopefully more robust now.

gcc/testsuite/ChangeLog:

2016-07-20  Dominik Vogt  <vogt@linux.vnet.ibm.com>

* gcc.target/s390/pr67443.c: Fix test case.

From-SVN: r238531

7 years agoS/390: Xfail some tests in insv-[12].c.
Dominik Vogt [Wed, 20 Jul 2016 17:09:03 +0000 (17:09 +0000)] 
S/390: Xfail some tests in insv-[12].c.

The attached patch XFAILs some of the "insv" testcases as
discussed internally.  Tested on s390x biarch and s390.

gcc/testsuite/ChangeLog:

2016-07-20  Dominik Vogt  <vogt@linux.vnet.ibm.com>

* gcc.target/s390/insv-1.c: Xfail some tests.
* gcc.target/s390/insv-2.c: Likewise.

From-SVN: r238530

7 years agocse.c: Use HOST_WIDE_INT_M1 instead of ~(HOST_WIDE_INT) 0.
Uros Bizjak [Wed, 20 Jul 2016 15:47:33 +0000 (17:47 +0200)] 
cse.c: Use HOST_WIDE_INT_M1 instead of ~(HOST_WIDE_INT) 0.

* cse.c: Use HOST_WIDE_INT_M1 instead of ~(HOST_WIDE_INT) 0.
* combine.c: Use HOST_WIDE_INT_M1U instead of
~(unsigned HOST_WIDE_INT) 0.
* double-int.h: Ditto.
* dse.c: Ditto.
* dwarf2asm.c:Ditto.
* expmed.c: Ditto.
* genmodes.c: Ditto.
* match.pd: Ditto.
* read-rtl.c: Ditto.
* tree-ssa-loop-ivopts.c: Ditto.
* tree-ssa-loop-prefetch.c: Ditto.
* tree-vect-generic.c: Ditto.
* tree-vect-patterns.c: Ditto.
* tree.c: Ditto.

From-SVN: r238529

7 years agoavr.c (avr_legitimize_address): Force constant addresses outside [0,0xc0] into a...
Georg-Johann Lay [Wed, 20 Jul 2016 14:46:57 +0000 (14:46 +0000)] 
avr.c (avr_legitimize_address): Force constant addresses outside [0,0xc0] into a register.

gcc/
* gcc/config/avr.c (avr_legitimize_address) [AVR_TINY]: Force
constant addresses outside [0,0xc0] into a register.
(avr_out_movhi_r_mr_reg_no_disp_tiny): Pass insn.  And handle
cases where the base address register is unused after.
(avr_out_movhi_r_mr_reg_disp_tiny): Same.
(avr_out_movhi_mr_r_reg_disp_tiny): Same.
(avr_out_store_psi_reg_disp_tiny): Same.

gcc/testsuite/
* gcc.target/avr/torture/get-mem.c: New test.
* gcc.target/avr/torture/set-mem.c: New test.

From-SVN: r238528

7 years agoImplement attribute progmem on reduced Tiny cores by adding flash offset 0x4000 to...
Georg-Johann Lay [Wed, 20 Jul 2016 14:12:16 +0000 (14:12 +0000)] 
Implement attribute progmem on reduced Tiny cores by adding flash offset 0x4000 to respective symbols.

gcc/
Implement attribute progmem on reduced Tiny cores by adding
flash offset 0x4000 to respective symbols.

PR target/71948
* doc/extend.texi (AVR Variable Attributes) [progmem]: Add
documentation how it works on reduced Tiny cores.
(AVR Named Address Spaces): No support for reduced Tiny.
* config/avr/avr.c (AVR_SYMBOL_FLAG_TINY_PM): New macro.
(avr_address_tiny_pm_p): New static function.
(avr_print_operand_address) [AVR_TINY]: Add AVR_TINY_PM_OFFSET
if the address is in progmem.
(avr_assemble_integer): Same.
(avr_encode_section_info) [AVR_TINY]: Set AVR_SYMBOL_FLAG_TINY_PM
for symbol_ref in progmem.
* config/avr/avr.h (AVR_TINY_PM_OFFSET): New macro.
* config/avr/avr-c.c (avr_cpu_cpp_builtins): Use it instead of
magic 0x4000 when built-in def'ing __AVR_TINY_PM_BASE_ADDRESS__.
gcc/testsuite/
PR target/71948
* gcc.target/avr/torture/tiny-progmem.c: New test.

From-SVN: r238525

7 years agoBuild libbackend.a as a thin archive if possible
Patrick Palka [Wed, 20 Jul 2016 14:09:20 +0000 (14:09 +0000)] 
Build libbackend.a as a thin archive if possible

gcc/ChangeLog:

* configure.ac (thin_archive_support): New variable.  AC_SUBST it.
* configure: Regenerate.
* Makefile.in (THIN_ARCHIVE_SUPPORT): New variable.
(USE_THIN_ARCHIVES): New variable.
(libbackend.a): If USE_THIN_ARCHIVES then pass T to ar to build
this archive as a thin archive.

From-SVN: r238524

7 years agoEnabling work for C++ handling of misspelled identifiers and typenames
David Malcolm [Wed, 20 Jul 2016 14:03:03 +0000 (14:03 +0000)] 
Enabling work for C++ handling of misspelled identifiers and typenames

gcc/c/ChangeLog:
* c-decl.c (struct edit_distance_traits<cpp_hashnode *>): Move to
spellcheck-tree.h
(best_macro_match): Likewise, converting from a typedef to a
subclass.
(find_closest_macro_cpp_cb): Move to spellcheck-tree.c.
(lookup_name_fuzzy): Update for change of best_macro_match to a
subclass with a ctor that calls cpp_forall_identifiers.

gcc/ChangeLog:
* diagnostic-show-locus.c (diagnostic_show_locus): If this is the
same location as last time, don't skip if we have fix-it hints.
Clarify the skipping logic by converting it from one "if" clause
to repeated "if" clauses.
* spellcheck-tree.c: Include "cpplib.h".
(find_closest_macro_cpp_cb): Move here from c/c-decl.c.
(best_macro_match::best_macro_match): New constructor.
* spellcheck-tree.h (struct edit_distance_traits<cpp_hashnode *>):
Move here from c/c-decl.c.
(class best_macro_match): Move here from c/c-decl.c, converting
from a typedef to a subclass, gaining a ctor.

From-SVN: r238522

7 years agore PR c++/71909 (g++ accepts an unreachable function catch block that lacks a corresp...
Jakub Jelinek [Wed, 20 Jul 2016 14:01:30 +0000 (16:01 +0200)] 
re PR c++/71909 (g++ accepts an unreachable function catch block that lacks a corresponding try)

PR c++/71909
* parser.c (cp_parser_save_member_function_body): Consume
__transaction_relaxed or __transaction_atomic with optional
attribute.  Only skip catch with block if try keyword is seen.

* g++.dg/parse/pr71909.C: New test.
* g++.dg/tm/pr71909.C: New test.

From-SVN: r238521

7 years agore PR middle-end/50060 (intrinsics not folded by the middle-end)
Jakub Jelinek [Wed, 20 Jul 2016 14:00:02 +0000 (16:00 +0200)] 
re PR middle-end/50060 (intrinsics not folded by the middle-end)

PR c++/50060
* constexpr.c (cxx_eval_builtin_function_call): Pass false as lval
when evaluating call arguments.  Use fold_builtin_call_array instead
of fold_build_call_array_loc, return t if it returns NULL.  Otherwise
check the result with potential_constant_expression and call
cxx_eval_constant_expression on it.

* g++.dg/cpp0x/constexpr-50060.C: New test.
* g++.dg/cpp1y/constexpr-50060.C: New test.

From-SVN: r238520

7 years agoavr-protos.h (avr_addr_space_supported_p): New prototype.
Georg-Johann Lay [Wed, 20 Jul 2016 13:50:31 +0000 (13:50 +0000)] 
avr-protos.h (avr_addr_space_supported_p): New prototype.

gcc/
* config/avr/avr-protos.h (avr_addr_space_supported_p): New prototype.
* config/avr/avr.c (TARGET_ADDR_SPACE_DIAGNOSE_USAGE): New hook
define...
(avr_addr_space_diagnose_usage): ...and implementation.
(avr_addr_space_supported_p): New function.
(avr_nonconst_pointer_addrspace, avr_pgm_check_var_decl): Only
report bad address space usage if that space is supported.
(avr_insert_attributes): Same.  No more complain about unsupported
address spaces.
* config/avr/avr-c.c (tm_p.h): Include it.
(avr_cpu_cpp_builtins): Only define addr-space related built-in
macro if avr_addr_space_supported_p.

From-SVN: r238519

7 years agonvptx: do not implicitly enable -ftoplevel-reorder
Alexander Monakov [Wed, 20 Jul 2016 13:47:12 +0000 (16:47 +0300)] 
nvptx: do not implicitly enable -ftoplevel-reorder

* config/nvptx/nvptx.c (nvptx_option_override): Do not set
flag_toplevel_reorder.

From-SVN: r238518

7 years agoC: convert return type of lookup_name_fuzzy from tree to const char *
David Malcolm [Wed, 20 Jul 2016 13:42:51 +0000 (13:42 +0000)] 
C: convert return type of lookup_name_fuzzy from tree to const char *

gcc/c-family/ChangeLog:
* c-common.h (lookup_name_fuzzy): Convert return type from tree to
const char *.

gcc/c/ChangeLog:
* c-decl.c (implicit_decl_warning): Update for conversion of
return type of lookup_name_fuzzy to const char *.
(undeclared_variable): Likewise.
(lookup_name_fuzzy): Convert return type from tree to
const char *.
* c-parser.c (c_parser_declaration_or_fndef): Update for
conversion of return type of lookup_name_fuzzy to const char *.
(c_parser_parameter_declaration): Likewise.

gcc/ChangeLog:
* gcc-rich-location.c
(gcc_rich_location::add_fixit_misspelled_id): New overload, taking
a const char *.
* gcc-rich-location.h
(gcc_rich_location::add_fixit_misspelled_id): Likewise.

From-SVN: r238517

7 years agotarget.def (addr_space): Add new diagnose_usage to hook vector.
Georg-Johann Lay [Wed, 20 Jul 2016 13:07:43 +0000 (13:07 +0000)] 
target.def (addr_space): Add new diagnose_usage to hook vector.

gcc/
* target.def (addr_space): Add new diagnose_usage to hook vector.
* targhooks.c (default_addr_space_diagnose_usage): Add default
implementation and...
* targhooks.h (default_addr_space_diagnose_usage): ... its prototype.
* c/c-parser.c (c_lex_one_token) [CPP_NAME]: If the token
is some address space, call targetm.addr_space.diagnose_usage.
* doc/tm.texi.in (Named Address Spaces): Add anchor for
TARGET_ADDR_SPACE_DIAGNOSE_USAGE documentation.
* doc/tm.texi: Regenerate.

From-SVN: r238514

7 years agoProperly handly PHI stmts in later_of_the_two (PR
Martin Liska [Wed, 20 Jul 2016 11:16:47 +0000 (13:16 +0200)] 
Properly handly PHI stmts in later_of_the_two (PR

PR middle-end/71898
* graphite-isl-ast-to-gimple.c (later_of_the_two):
Properly handly PHI stmts.
* gfortran.dg/graphite/pr71898.f90: New test.

From-SVN: r238513

7 years agore PR tree-optimization/71503 (gcc ICE at -O3 on valid code on x86_64-linux-gnu in...
Bin Cheng [Wed, 20 Jul 2016 08:31:35 +0000 (08:31 +0000)] 
re PR tree-optimization/71503 (gcc ICE at -O3 on valid code on x86_64-linux-gnu in "gen_phi_arg_condition")

PR tree-optimization/71503
PR tree-optimization/71683
* tree-if-conv.c (gen_phi_arg_condition): Record true predicate
and break.

gcc/testsuite
PR tree-optimization/71503
PR tree-optimization/71683
* gcc.dg/tree-ssa/ifc-pr71503.c: New test.
* gcc.dg/tree-ssa/ifc-pr71683.c: New test.

From-SVN: r238512

7 years agoconfigure.ac (nds32*-*-*): Remove entry to enable gdb.
Yan-Ting Lin [Wed, 20 Jul 2016 08:09:25 +0000 (08:09 +0000)] 
configure.ac (nds32*-*-*): Remove entry to enable gdb.

    * configure.ac (nds32*-*-*): Remove entry to enable gdb.
    * configure: Regenerated.

From-SVN: r238511

7 years agoEnhance documentation of -fipa-ra option.
Martin Liska [Wed, 20 Jul 2016 07:02:09 +0000 (09:02 +0200)] 
Enhance documentation of -fipa-ra option.

* doc/invoke.texi (-fipa-ra): Document when the option is
disabled. Fix a typo.

From-SVN: r238510

7 years agoAdd selftests for fibonacci_heap
Martin Liska [Wed, 20 Jul 2016 07:01:48 +0000 (09:01 +0200)] 
Add selftests for fibonacci_heap

* Makefile.in: Include fibonacci_heap.c
* fibonacci_heap.c: New file.
* fibonacci_heap.h (fibonacci_heap::insert): Use insert_node.
(fibonacci_heap::union_with): Fix deletion of the second heap.
* selftest-run-tests.c (selftest::run_tests): Incorporate
fibonacci heap tests.
* selftest.h: Declare fibonacci_heap_c_tests.

From-SVN: r238509

7 years agoAdd sreal to selftests
Martin Liska [Wed, 20 Jul 2016 07:00:50 +0000 (09:00 +0200)] 
Add sreal to selftests

* selftest-run-tests.c (selftest::run_tests): New function.
* selftest.h (sreal_c_tests): Declare.
* sreal.c (sreal_verify_basics): New function.
(verify_aritmetics): Likewise.
(sreal_verify_arithmetics): Likewise.
(verify_shifting): Likewise.
(sreal_verify_shifting): Likewise.
(void sreal_c_tests): Likewise.
* gcc.dg/plugin/plugin.exp: Remove sreal test.
* gcc.dg/plugin/sreal-test-1.c: Remove.
* gcc.dg/plugin/sreal_plugin.c: Remove.

From-SVN: r238508

7 years agoPR c++/67164 - clean up dead code
Jason Merrill [Wed, 20 Jul 2016 05:06:52 +0000 (01:06 -0400)] 
PR c++/67164 - clean up dead code

* pt.c (iterative_hash_template_arg, template_args_equal): Don't
handle ARGUMENT_PACK_SELECT.

From-SVN: r238507

7 years agoDaily bump.
GCC Administrator [Wed, 20 Jul 2016 00:16:18 +0000 (00:16 +0000)] 
Daily bump.

From-SVN: r238506

7 years agore PR fortran/71902 (Unneeded temporary on reallocatable character assignment)
Thomas Koenig [Tue, 19 Jul 2016 21:25:33 +0000 (21:25 +0000)] 
re PR fortran/71902 (Unneeded temporary on reallocatable character assignment)

2016-07-19  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/71902
* dependency.c (gfc_check_dependency): Use dep_ref.  Handle case
if identical is true and two array element references differ.
(gfc_dep_resovler):  Move most of the code to dep_ref.
(dep_ref):  New function.
* frontend-passes.c (realloc_string_callback):  Name temporary
variable "realloc_string".

2016-07-19  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/71902
* gfortran.dg/dependency_47.f90:  New test.

From-SVN: r238497

7 years agore PR rtl-optimization/71916 (ICE at -O3 on valid code on x86_64-linux-gnu in "maybe_...
Jakub Jelinek [Tue, 19 Jul 2016 19:54:49 +0000 (21:54 +0200)] 
re PR rtl-optimization/71916 (ICE at -O3 on valid code on x86_64-linux-gnu in "maybe_record_trace_start")

PR rtl-optimization/71916
* cfgrtl.c (contains_no_active_insn_p): Return false also for
bb which have a single succ fake edge.

* gcc.c-torture/compile/pr71916.c: New test.

From-SVN: r238490

7 years agore PR debug/71855 (duplicate unspecified_parameters DIE in DWARF for functions with...
Aldy Hernandez [Tue, 19 Jul 2016 19:29:42 +0000 (19:29 +0000)] 
re PR debug/71855 (duplicate unspecified_parameters DIE in DWARF for functions with variable arguments)

PR debug/71855
* dwarf2out.c (gen_subprogram_die): Only call
gen_unspecified_parameters_die while dumping early dwarf.

From-SVN: r238488

7 years agore PR middle-end/71874 (memmove works wrong)
Jakub Jelinek [Tue, 19 Jul 2016 17:30:05 +0000 (19:30 +0200)] 
re PR middle-end/71874 (memmove works wrong)

PR middle-end/71874
* gimple-fold.c (fold_builtin_memory_op): Use
get_addr_base_and_unit_offset instead of get_ref_base_and_extent.

* g++.dg/torture/pr71874.C: New test.

From-SVN: r238484

7 years agore PR middle-end/71734 (FAIL: libgomp.fortran/simd4.f90 -O3 -g execution test)
Jakub Jelinek [Tue, 19 Jul 2016 16:47:30 +0000 (18:47 +0200)] 
re PR middle-end/71734 (FAIL: libgomp.fortran/simd4.f90   -O3 -g  execution test)

PR middle-end/71734
* g++.dg/vect/pr70729.cc: Don't include string.h or xmmintrin.h.
(my_alloc): Rewritten to use __builtin_posix_memalign and
__SIZE_TYPE__.
(my_free): Use __builtin_free instead of _mm_free.
(Vec::operator=): Use __builtin_memcpy.

From-SVN: r238482

7 years agobuiltins.c: Use HOST_WIDE_INT_1 instead of (HOST_WIDE_INT) 1...
Uros Bizjak [Tue, 19 Jul 2016 16:40:55 +0000 (18:40 +0200)] 
builtins.c: Use HOST_WIDE_INT_1 instead of (HOST_WIDE_INT) 1...

* builtins.c: Use HOST_WIDE_INT_1 instead of (HOST_WIDE_INT) 1,
HOST_WIDE_INT_1U instead of (unsigned HOST_WIDE_INT) 1,
HOST_WIDE_INT_M1 instead of (HOST_WIDE_INT) -1 and
HOST_WIDE_INT_M1U instead of (unsigned HOST_WIDE_INT) -1.
* combine.c: Ditto.
* cse.c: Ditto.
* dojump.c: Ditto.
* double-int.c: Ditto.
* dse.c: Ditto.
* dwarf2out.c: Ditto.
* expmed.c: Ditto.
* expr.c: Ditto.
* fold-const.c: Ditto.
* function.c: Ditto.
* fwprop.c: Ditto.
* genmodes.c: Ditto.
* hwint.c: Ditto.
* hwint.h: Ditto.
* ifcvt.c: Ditto.
* loop-doloop.c: Ditto.
* loop-invariant.c: Ditto.
* loop-iv.c: Ditto.
* match.pd: Ditto.
* optabs.c: Ditto.
* real.c: Ditto.
* reload.c: Ditto.
* rtlanal.c: Ditto.
* simplify-rtx.c: Ditto.
* stor-layout.c: Ditto.
* toplev.c: Ditto.
* tree-ssa-loop-ivopts.c: Ditto.
* tree-vect-generic.c: Ditto.
* tree-vect-patterns.c: Ditto.
* tree.c: Ditto.
* tree.h: Ditto.
* ubsan.c: Ditto.
* varasm.c: Ditto.
* wide-int-print.cc: Ditto.
* wide-int.cc: Ditto.
* wide-int.h: Ditto.

From-SVN: r238481

7 years agoselftest.c: gracefully handle NULL in assert_streq
David Malcolm [Tue, 19 Jul 2016 16:16:18 +0000 (16:16 +0000)] 
selftest.c: gracefully handle NULL in assert_streq

gcc/ChangeLog:
* selftest.c (selftest::assert_streq): Handle NULL values of
val_actual and val_expected.

From-SVN: r238479

7 years agoconfig.host (m32r): Add m32r/t-m32r to tmake_file.
Nick Clifton [Tue, 19 Jul 2016 16:07:40 +0000 (16:07 +0000)] 
config.host (m32r): Add m32r/t-m32r to tmake_file.

* config.host (m32r): Add m32r/t-m32r to tmake_file.
Add crtinit.o and crtfini.o to extra_parts.

From-SVN: r238478

7 years agore PR fortran/71688 (ICE in analyze, at cgraphunit.c:632 with -fcoarray=lib)
Martin Jambor [Tue, 19 Jul 2016 15:40:43 +0000 (17:40 +0200)] 
re PR fortran/71688 (ICE in analyze, at cgraphunit.c:632 with -fcoarray=lib)

Fix PR fortran/71688

2016-07-19  Martin Jambor  <mjambor@suse.cz>

        PR fortran/71688
        * trans-decl.c (gfc_generate_function_code): Use cgraph_get_create_node
        rather than cgraph_create_node to get a call graph node.

testsuite/
        gfortran.dg/pr71688.f90: New test.

From-SVN: r238476

7 years agogimple-fold.c (get_base_constructor): Add VIEW_CONVERT case, handle all tcc_constant...
Richard Biener [Tue, 19 Jul 2016 14:16:54 +0000 (14:16 +0000)] 
gimple-fold.c (get_base_constructor): Add VIEW_CONVERT case, handle all tcc_constant bases and valueize SSA names.

2016-07-19  Richard Biener  <rguenther@suse.de>

* gimple-fold.c (get_base_constructor): Add VIEW_CONVERT case,
handle all tcc_constant bases and valueize SSA names.
* tree-ssa-sccvn.c (fully_constant_vn_reference_p): Handle
tcc_constant bases.

* c-c++-common/vector-subscript-6.c: New testcase.
* c-c++-common/vector-subscript-7.c: Likewise.

From-SVN: r238475

7 years agoFix failing test for targets with sizeof(int) != 4.
Senthil Kumar Selvaraj [Tue, 19 Jul 2016 13:16:32 +0000 (13:16 +0000)] 
Fix failing test for targets with sizeof(int) != 4.

gcc/testsuite/

2016-07-19  Senthil Kumar Selvaraj  <senthil_kumar.selvaraj@atmel.com>

* gcc.dg/params/blocksort-part.c: Conditionally define Int32
and UInt32 based on __SIZEOF_INT__.

From-SVN: r238471

7 years agoFix copy&paste bug in function-tests.c
David Malcolm [Tue, 19 Jul 2016 13:04:32 +0000 (13:04 +0000)] 
Fix copy&paste bug in function-tests.c

gcc/ChangeLog:
* function-tests.c (selftest::verify_three_block_rtl_cfg): Verify
the flags of the exit block and bb2, not just the entry block.

From-SVN: r238470

7 years agoMAINTAINERS (Write After Approval): Add myself.
Fritz Reese [Tue, 19 Jul 2016 10:39:19 +0000 (10:39 +0000)] 
MAINTAINERS (Write After Approval): Add myself.

2016-07-19  Fritz Reese  <fritzoreese@gmail.com>

* MAINTAINERS (Write After Approval): Add myself.

From-SVN: r238469

7 years agore PR tree-optimization/71901 (ice in find_or_generate_expression)
Richard Biener [Tue, 19 Jul 2016 10:19:46 +0000 (10:19 +0000)] 
re PR tree-optimization/71901 (ice in find_or_generate_expression)

2016-07-19  Richard Biener  <rguenther@suse.de>

PR tree-optimization/71901
* tree-ssa-sccvn.h (struct vn_reference_op_struct): Add
align member, group stuff with the bitfield.
(vn_ref_op_align_unit): New inline.
* tree-ssa-sccvn.c (copy_reference_ops_from_ref): For ARRAY_REFs
record element alignment and operand 3 unchanged.
(ao_ref_init_from_vn_reference): Adjust.
(valueize_refs_1): Likewise.
* tree-ssa-pre.c (create_component_ref_by_pieces_1): Likewise.

* gcc.dg/torture/pr71901.c: New testcase.

From-SVN: r238468

7 years agore PR tree-optimization/71908 (ICE at -Os and above in both 32-bit and 64-bit modes...
Richard Biener [Tue, 19 Jul 2016 10:18:25 +0000 (10:18 +0000)] 
re PR tree-optimization/71908 (ICE at -Os and above in both 32-bit and 64-bit modes on x86_64-linux-gnu (get_constraint_for_component_ref))

2016-07-18  Richard Biener  <rguenther@suse.de>

PR tree-optimization/71908
* tree-ssa-structalias.c (get_constraint_for_component_ref): Handle
symbolic constants in a more reliable way.

* gcc.dg/torture/pr71908.c: New testcase.

From-SVN: r238467

7 years agotree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Update comment.
Ilya Enkovich [Tue, 19 Jul 2016 10:04:02 +0000 (10:04 +0000)] 
tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Update comment.

gcc/

* tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Update
comment.
(vect_update_inits_of_drs): Likewise.
(vect_create_cond_for_alias_checks): Likewise.
* tree-vect-loop.c (vect_get_known_peeling_cost): Likewise.

From-SVN: r238466

7 years agore PR middle-end/71907 (missing buffer overflow warnings with -flto)
Richard Biener [Tue, 19 Jul 2016 07:35:05 +0000 (07:35 +0000)] 
re PR middle-end/71907 (missing buffer overflow warnings with -flto)

2016-07-19  Richard Biener  <rguenther@suse.de>

PR lto/71907
* lto-streamer-out.c (DFS::DFS_write_tree_body): For blocks
with an abstract origin that is not an inlined function outer
scope add a self-reference as abstract origin.
* tree-streamer-out.c (write_ts_block_tree_pointers): Likewise.

From-SVN: r238456

7 years agore PR target/71493 (accidental ABI change for structure return on PowerPC)
Michael Meissner [Tue, 19 Jul 2016 03:31:48 +0000 (03:31 +0000)] 
re PR target/71493 (accidental ABI change for structure return on PowerPC)

[gcc]
2016-07-18  Michael Meissner  <meissner@linux.vnet.ibm.com>

PR target/71493
* config/rs6000/rs6000.c (rs6000_function_value): Fix
unintentional System V.4 structure return breakage for structures
with a single floating point element.

[gcc/testsuite]
2016-07-18  Michael Meissner  <meissner@linux.vnet.ibm.com>

PR target/71493
* gcc.target/powerpc/pr71493-1.c: New test.
* gcc.target/powerpc/pr71493-2.c: Likewise.

From-SVN: r238454

7 years agoDaily bump.
GCC Administrator [Tue, 19 Jul 2016 00:16:18 +0000 (00:16 +0000)] 
Daily bump.

From-SVN: r238453

7 years agore PR c++/70869 (internal compiler error: Segmentation fault on array of pointer...
Jakub Jelinek [Mon, 18 Jul 2016 18:45:18 +0000 (20:45 +0200)] 
re PR c++/70869 (internal compiler error: Segmentation fault on array of pointer to function members)

PR c++/70869
PR c++/71054
* cp-gimplify.c (cp_genericize_r): Revert the 2016-07-07 change.
* tree.c (cp_walk_subtrees): For DECL_EXPR on DECL_ARTIFICIAL
non-static VAR_DECL, walk the decl's DECL_INITIAL, DECL_SIZE and
DECL_SIZE_UNIT.

From-SVN: r238444

7 years agore PR c++/71835 (ICE on invalid C++ code with ambiguous overloaded operators: tree...
Jakub Jelinek [Mon, 18 Jul 2016 18:44:51 +0000 (20:44 +0200)] 
re PR c++/71835 (ICE on invalid C++ code with ambiguous overloaded operators: tree check: expected tree that contains ‘decl minimal’ structure, have ‘pointer_type’ in convert_like_real, at cp/call.c:6549)

PR c++/71835
* call.c (build_op_call_1): Use convert_like_with_context only
if cand->fn is a decl.

* g++.dg/conversion/ambig3.C: New test.

From-SVN: r238443

7 years agore PR c++/71828 (ICE on valid C++11 code with constexpr __Complex int variable declar...
Jakub Jelinek [Mon, 18 Jul 2016 18:43:19 +0000 (20:43 +0200)] 
re PR c++/71828 (ICE on valid C++11 code with constexpr __Complex int variable declaration: in operand_equal_p, at fold-const.c:2790)

PR c++/71828
* constexpr.c (cxx_eval_constant_expression) <case REALPART_EXPR>:
For lval don't use cxx_eval_unary_expression and instead recurse
and if needed rebuild the reference.

* g++.dg/cpp0x/constexpr-71828.C: New test.

From-SVN: r238442

7 years agore PR c++/71826 (ICE on valid C++ code with ambiguous member lookup: tree check:...
Jakub Jelinek [Mon, 18 Jul 2016 18:42:24 +0000 (20:42 +0200)] 
re PR c++/71826 (ICE on valid C++ code with ambiguous member lookup: tree check: expected baselink, have error_mark in tsubst_baselink, at cp/pt.c:13737)

PR c++/71826
* pt.c (tsubst_baselink): Only set BASELINK_OPTYPE for BASELINK_P.

* g++.dg/template/pr71826.C: New test.

From-SVN: r238441

7 years agore PR c++/71822 (ICE: in gimplify_expr, at gimplify.c:11025)
Jakub Jelinek [Mon, 18 Jul 2016 18:40:12 +0000 (20:40 +0200)] 
re PR c++/71822 (ICE: in gimplify_expr, at gimplify.c:11025)

PR c++/71822
* cp-gimplify.c (cp_gimplify_expr) <case VEC_INIT_EXPR>: Recursively
fold *expr_p before genericizing it.

* g++.dg/template/defarg21.C: New test.

From-SVN: r238440

7 years agore PR c++/71871 (ICE on mixing templates and vector extensions ternary operator)
Jakub Jelinek [Mon, 18 Jul 2016 17:44:48 +0000 (19:44 +0200)] 
re PR c++/71871 (ICE on mixing templates and vector extensions ternary operator)

PR c++/71871
* typeck.c (build_x_conditional_expr): Revert the 2012-10-25 change.

* g++.dg/ext/vector31.C: New test.

From-SVN: r238439

7 years agopr70017.c: Do not check for warning on alpha*-*-*.
Uros Bizjak [Mon, 18 Jul 2016 15:55:36 +0000 (17:55 +0200)] 
pr70017.c: Do not check for warning on alpha*-*-*.

* gcc.dg/pr70017.c: Do not check for warning on alpha*-*-*.

From-SVN: r238438

7 years agoDemangle C++17 fold-expressions.
Jason Merrill [Mon, 18 Jul 2016 15:28:51 +0000 (11:28 -0400)] 
Demangle C++17 fold-expressions.

* cp-demangle.c (cplus_demangle_operators): Add f[lrLR].
(d_expression_1): Handle them.
(d_maybe_print_fold_expression): New.
(d_print_comp_inner): Use it.
(d_index_template_argument): Handle negative index.

From-SVN: r238437

7 years agoClean up optional's comments.
Ville Voutilainen [Mon, 18 Jul 2016 14:45:56 +0000 (17:45 +0300)] 
Clean up optional's comments.

From-SVN: r238436

7 years agore PR middle-end/71734 (FAIL: libgomp.fortran/simd4.f90 -O3 -g execution test)
Yuri Rumyantsev [Mon, 18 Jul 2016 14:30:20 +0000 (14:30 +0000)] 
re PR middle-end/71734 (FAIL: libgomp.fortran/simd4.f90   -O3 -g  execution test)

gcc/

2016-07-18  Yuri Rumyantsev  <ysrumyan@gmail.com>

PR tree-optimization/71734
* tree-ssa-loop-im.c (ref_indep_loop_p_1): Add REF_LOOP argument which
contains REF, use it to check safelen, assume that safelen value
must be greater 1, fix style.
(ref_indep_loop_p_2): Add REF_LOOP argument.
(ref_indep_loop_p): Pass LOOP as additional argument to
ref_indep_loop_p_2.

gcc/testsuite/

2016-07-18  Yuri Rumyantsev  <ysrumyan@gmail.com>

PR tree-optimization/71734
* g++.dg/vect/pr70729.cc: Delete redundant dg options, fix style.

From-SVN: r238435

7 years agoAllocate constant size dynamic stack space in the prologue
Dominik Vogt [Mon, 18 Jul 2016 13:10:27 +0000 (13:10 +0000)] 
Allocate constant size dynamic stack space in the prologue

The attached patch fixes a warning during Linux kernel compilation
on S/390 due to -mwarn-dynamicstack and runtime alignment of stack
variables with constant size causing cfun->calls_alloca to be set
(even if alloca is not used at all).  The patched code places
constant size runtime aligned variables in the "virtual stack
vars" area instead of creating a "virtual stack dynamic" area.

This behaviour is activated by defining

  #define ALLOCATE_DYNAMIC_STACK_SPACE_IN_PROLOGUE 1

in the backend; otherwise the old logic is used.

The kernel uses runtime alignment for the page structure (aligned
to 16 bytes), and apart from triggereing the alloca warning
(-mwarn-dynamicstack), the current Gcc also generates inefficient
code like

  aghi %r15,-160  # prologue: create stack frame
    lgr %r11,%r15   # prologue: generate frame pointer
      aghi %r15,-32   # space for dynamic stack

which could be simplified to

  aghi %r15,-192

(if later optimization passes are able to get rid of the frame
pointer).  Is there a specific reason why the patched behaviour
shouldn't be used for all platforms?

--

As the placement of runtime aligned stack variables with constant
size is done completely in the middleend, I don't see a way to fix
this in the backend.

gcc/ChangeLog:

2016-07-18  Dominik Vogt  <vogt@linux.vnet.ibm.com>

* cfgexpand.c (expand_stack_vars): Implement synamic stack space
allocation in the prologue.
* explow.c (get_dynamic_stack_base): New function to return an address
expression for the dynamic stack base.
(get_dynamic_stack_size): New function to do the required dynamic stack
space size calculations.
(allocate_dynamic_stack_space): Use new functions.
(align_dynamic_address): Move some code from
allocate_dynamic_stack_space to new function.
* explow.h (get_dynamic_stack_base, get_dynamic_stack_size): Export.

gcc/testsuite/ChangeLog:

2016-07-18  Dominik Vogt  <vogt@linux.vnet.ibm.com>

* gcc.target/s390/warn-dynamicstack-1.c: New test.
* gcc.dg/stack-usage-2.c (foo3): Adapt expected warning.
stack-layout-dynamic-1.c: New test.

From-SVN: r238432

7 years agoS/390: Fix alignment check for literal pool references.
Andreas Krebbel [Mon, 18 Jul 2016 10:47:09 +0000 (10:47 +0000)] 
S/390: Fix alignment check for literal pool references.

gcc/ChangeLog:

2016-07-18  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

* config/s390/s390.c (s390_encode_section_info): Always set
notaligned marker if mode size is 0 or no MEM_ALIGN info could be
found.

gcc/testsuite/ChangeLog:

2016-07-18  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

* gcc.target/s390/nolrl-1.c: New test.

From-SVN: r238427

7 years agore PR tree-optimization/71893 (gfortran.dg ICEs in gcc/tree-ssa-pre.c; -fcode-hoisting?)
Richard Biener [Mon, 18 Jul 2016 08:46:42 +0000 (08:46 +0000)] 
re PR tree-optimization/71893 (gfortran.dg ICEs in gcc/tree-ssa-pre.c; -fcode-hoisting?)

2016-07-18  Richard Biener  <rguenther@suse.de>

PR tree-optimization/71893
* tree-ssa-pre.c (create_component_ref_by_pieces_1): Compensate
for sizetype cast added by array_ref_element_size.
* tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.

From-SVN: r238426

7 years agoDaily bump.
GCC Administrator [Mon, 18 Jul 2016 00:16:21 +0000 (00:16 +0000)] 
Daily bump.

From-SVN: r238424

7 years agore PR fortran/71523 (Static variables given automatic initializers with -finit-*...
Fritz Reese [Sun, 17 Jul 2016 20:13:41 +0000 (20:13 +0000)] 
re PR fortran/71523 (Static variables given automatic initializers with -finit-* and -fmax-stack-var-size)

2016-07-17  Fritz Reese  <fritzoreese@gmail.com>

PR fortran/71523
* trans-decl.c (gfc_finish_var_decl): Replace automatic initializer with
a static one.

* gfortran.dg/pr71523_1.f90: New test.
* gfortran.dg/pr71523_2.f90: New test.

From-SVN: r238420

7 years agoDaily bump.
GCC Administrator [Sun, 17 Jul 2016 00:16:19 +0000 (00:16 +0000)] 
Daily bump.

From-SVN: r238419

7 years agopa.c (hppa_profile_hook): Allocate stack space for register parameters.
John David Anglin [Sat, 16 Jul 2016 15:59:33 +0000 (15:59 +0000)] 
pa.c (hppa_profile_hook): Allocate stack space for register parameters.

* config/pa/pa.c (hppa_profile_hook): Allocate stack space for
register parameters.  Remove code to initialize argument pointer
on TARGET_64BIT.  Optimize call to _mcount when it can be reached
using a pc-relative branch.  Cleanup conditional code.
* config/pa/pa.md (call_mcount): New expander.
(call_mcount_nonpic): New insn.
(call_mcount_pic): New insn and split.
(call_mcount_pic_post_reload): New insn.
(call_mcount_64bit): New insn and split.
(call_mcount_64bit_post_reload): New insn.

From-SVN: r238414

7 years agonullptr35.C (caught): Fix typo.
Andreas Schwab [Sat, 16 Jul 2016 09:53:23 +0000 (09:53 +0000)] 
nullptr35.C (caught): Fix typo.

* g++.dg/cpp0x/nullptr35.C (caught): Fix typo.

From-SVN: r238413

7 years agoDaily bump.
GCC Administrator [Sat, 16 Jul 2016 00:16:22 +0000 (00:16 +0000)] 
Daily bump.

From-SVN: r238409

7 years agoReplace references to C++0x with C++11 in comments
Jonathan Wakely [Fri, 15 Jul 2016 20:23:08 +0000 (21:23 +0100)] 
Replace references to C++0x with C++11 in comments

* include/bits/algorithmfwd.h: Change C++0x to C++11 in comments.
* include/bits/move.h: Likewise.
* include/bits/postypes.h: Likewise.
* include/debug/bitset: Likewise.
* include/ext/pb_ds/detail/type_utils.hpp: Likewise.
* include/ext/string_conversions.h: Change C++0x to __cxx11 in
comment.
* testsuite/27_io/fpos/14320-1.cc: Change C++0x to C++11 in comment.
* testsuite/util/thread/all.h: Likewise.

From-SVN: r238402

7 years agore PR fortran/62125 (Nested select type not accepted (rejects valid))
Jerry DeLisle [Fri, 15 Jul 2016 19:58:55 +0000 (19:58 +0000)] 
re PR fortran/62125 (Nested select type not accepted (rejects valid))

2016-07-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
    Marco Restelli <mrestelli@gmail.com>

PR fortran/62125
* symbol.c (select_type_insert_tmp): Recursively call self to take care
of nested select type.

* gfortran.dg/pr62125.f90: New test.

Co-Authored-By: Marco Restelli <mrestelli@gmail.com>
From-SVN: r238400

7 years agoRemove redundant std::move in std::for_each
Jonathan Wakely [Fri, 15 Jul 2016 19:51:33 +0000 (20:51 +0100)] 
Remove redundant std::move in std::for_each

* include/bits/stl_algo.h (for_each): Remove redundant _GLIBCXX_MOVE
and adjust comment.

From-SVN: r238399

7 years agodivkc3-1.c: Require p8vector support.
Bill Schmidt [Fri, 15 Jul 2016 18:57:06 +0000 (18:57 +0000)] 
divkc3-1.c: Require p8vector support.

2016-07-15  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

* gcc.target/powerpc/divkc3-1.c: Require p8vector support.
* gcc.target/powerpc/mulkc3-1.c: Likewise.

From-SVN: r238398

7 years agoPR c++/71495 - spurious note during SFINAE.
Jason Merrill [Fri, 15 Jul 2016 18:56:29 +0000 (14:56 -0400)] 
PR c++/71495 - spurious note during SFINAE.

* call.c (convert_like_real): Mask complain.
* semantics.c (perform_koenig_lookup): Likewise.

From-SVN: r238397

7 years agoc++/58796 Make nullptr match exception handlers of pointer type
Jonathan Wakely [Fri, 15 Jul 2016 18:51:51 +0000 (19:51 +0100)] 
c++/58796 Make nullptr match exception handlers of pointer type

libstdc++-v3:

PR c++/58796
* libsupc++/pbase_type_info.cc (__pbase_type_info::__do_catch): Make
nullptr match handlers of pointer type.

gcc/testsuite:

PR c++/58796
* g++.dg/cpp0x/nullptr21.C: Remove void* handlers.
* g++.dg/cpp0x/nullptr35.C: New test.

From-SVN: r238396

7 years agoPR c++/71092 - ICE with array and constexpr.
Jason Merrill [Fri, 15 Jul 2016 18:49:38 +0000 (14:49 -0400)] 
PR c++/71092 - ICE with array and constexpr.

* constexpr.c (cxx_eval_call_expression): Fail quietly when cgraph
threw away DECL_SAVED_TREE.

From-SVN: r238395

7 years agoPR c++/71117 - core 2189 and generic lambda
Jason Merrill [Fri, 15 Jul 2016 18:49:25 +0000 (14:49 -0400)] 
PR c++/71117 - core 2189 and generic lambda

* call.c (add_template_conv_candidate): Disable if there are
viable candidates.

From-SVN: r238394

7 years agoPR c++/71511 - ICE on decltype scope in declaration.
Jason Merrill [Fri, 15 Jul 2016 18:38:48 +0000 (14:38 -0400)] 
PR c++/71511 - ICE on decltype scope in declaration.

* typeck2.c (cxx_incomplete_type_diagnostic): Handle DECLTYPE_TYPE.

From-SVN: r238393