Commit Graph

147535 Commits

Author SHA1 Message Date
Georg-Johann Lay
b588c7f866 avr.c (TARGET_SECONDARY_RELOAD): Remove hook define...
* config/avr/avr.c (TARGET_SECONDARY_RELOAD): Remove hook define...
	(avr_secondary_reload): ...and implementation.
	(avr_adjust_insn_length) [ADJUST_LEN_LPM]: Remove handling.
	* config/avr/avr.md (reload_in<mode>): Remove insns.
	(adjust_len) [lpm]: Remove insn attribute value.
	* config/avr/predicates.md (flash_operand): Remove insn predicate.

From-SVN: r238634
2016-07-22 09:19:35 +00:00
Martin Liska
1182b907ad Fix params.exp test-cases
From-SVN: r238633
2016-07-22 09:08:56 +00:00
Jonathan Wakely
960637ac1a Use correct form of delete in libstdc++.exp
* testsuite/lib/libstdc++.exp (check_v3_target_namedlocale): Use
	delete[] instead of delete.

From-SVN: r238632
2016-07-22 09:33:26 +01:00
Jason Merrill
6781e2af70 PR c++/69223 - ICE with deduced template return type.
* semantics.c (apply_deduced_return_type): Call
	complete_type_or_else before building the new RESULT_DECL.

From-SVN: r238624
2016-07-21 23:45:54 -04:00
Jason Merrill
94ced5b494 PR c++/71274 - deprecated warning without use.
* decl2.c (maybe_instantiate_decl): Split out from mark_used.
	(decl_constant_var_p): Use it instead.

From-SVN: r238623
2016-07-21 23:45:48 -04:00
Jason Merrill
44ed47547a PR c++/71630 - extern variable template
* pt.c (instantiate_decl): Fix pattern_defined for namespace scope
	variable templates.

From-SVN: r238622
2016-07-21 23:45:43 -04:00
Jason Merrill
a93f3513c2 PR c++/71913 - missing copy elision with new.
* call.c (unsafe_copy_elision_p): It's OK to elide when
	initializing an unknown object.

From-SVN: r238621
2016-07-21 23:45:37 -04:00
Jason Merrill
d5ec842cde call.c (build_over_call): Check unsafe_copy_elision_p even for trivial constructors.
* call.c (build_over_call): Check unsafe_copy_elision_p even for
	trivial constructors.
	* method.c (do_build_copy_constructor): Don't copy tail padding
	even in a trivial constructor.

From-SVN: r238620
2016-07-21 23:45:30 -04:00
Ian Lance Taylor
4114e6b1fe compiler: fix check for duplicate declaration
The compiler check that issued a duplicate declaration error for
        a, a, a := 1, 2, 3
    was incorrectly issuing an error for
        a, a, a = 1, 2, 3
    While this is not particularly useful, it is valid Go.
    
    Test is https://golang.org/cl/25143.
    
    Reviewed-on: https://go-review.googlesource.com/25144

From-SVN: r238618
2016-07-22 00:21:51 +00:00
GCC Administrator
a94aa329b4 Daily bump.
From-SVN: r238617
2016-07-22 00:16:20 +00:00
Michael Meissner
70866e3d4a vec-extract.h: New files to check the vec_extract built-in functions for all vector types...
2016-07-21  Michael Meissner  <meissner@linux.vnet.ibm.com>

	* gcc.target/powerpc/vec-extract.h: New files to check the
	vec_extract built-in functions for all vector types, testing
	accessing each element, both with constant and variable element
	numbers.
	* gcc.target/powerpc/vec-extract-v16qi.c: Likewise.
	* gcc.target/powerpc/vec-extract-v16qiu.c: Likewise.
	* gcc.target/powerpc/vec-extract-v2df.c: Likewise.
	* gcc.target/powerpc/vec-extract-v2di.c: Likewise.
	* gcc.target/powerpc/vec-extract-v4sf.c: Likewise.
	* gcc.target/powerpc/vec-extract-v4si.c: Likewise.
	* gcc.target/powerpc/vec-extract-v4siu.c: Likewise.
	* gcc.target/powerpc/vec-extract-v8hi.c: Likewise.
	* gcc.target/powerpc/vec-extract-v8hiu.c: Likewise.

From-SVN: r238613
2016-07-22 00:12:28 +00:00
Jonathan Wakely
8b649cd3ba Fix naming, qualification and broken test for propagate_const
* include/experimental/propagate_const (propagate_const::__t): Rename
	to _M_t and remove comment. Qualify std::move and std::forward.
	* testsuite/experimental/propagate_const/cons/default.cc: Fix test.

From-SVN: r238611
2016-07-21 20:39:03 +01:00
Jonathan Wakely
509b778f6c Define missing delete operators in libstdc++ testsuite
* testsuite/23_containers/vector/zero_sized_allocations.cc:
	Define sized deallocation function.
	* testsuite/util/testsuite_new_operators.h:
	(operator delete(void*, const std::nothrow_t&)): Define nothrow
	deallocation function.

From-SVN: r238610
2016-07-21 20:38:57 +01:00
Jonathan Wakely
e93a101f83 Fix out-of-bound array accesses in libstdc++ testsuite
* testsuite/21_strings/basic_string/modifiers/append/char/1.cc: Fix
	reads past the end of strings.
	* testsuite/21_strings/basic_string/operations/compare/char/1.cc:
	Likewise.
	* testsuite/21_strings/char_traits/requirements/short/1.cc: Fix
	invalid array accesses.
	* testsuite/experimental/string_view/operations/compare/char/1.cc:
	Fix read past the end of string.
	* testsuite/util/testsuite_character.cc: Fix out-of-bounds write.

From-SVN: r238609
2016-07-21 20:38:51 +01:00
Jonathan Wakely
0a024155c4 Fix missing returns in libstdc++ testsuite
* testsuite/24_iterators/container_access.cc: Fix missing returns.
	* testsuite/24_iterators/range_access_cpp14.cc: Likewise.

From-SVN: r238608
2016-07-21 20:38:44 +01:00
Jonathan Wakely
22620c1452 Remove memory leaks in libstdc++ testsuite
* testsuite/18_support/new_delete_placement.cc: Don't allocate (and
	leak) memory for arguments to placement delete.
	* testsuite/20_util/addressof/1.cc: Don't leak memory.
	* testsuite/22_locale/locale/global_locale_objects/3.cc: Likewise.
	* testsuite/23_containers/unordered_multimap/insert/55028-debug.cc:
	Likewise.

From-SVN: r238607
2016-07-21 20:38:32 +01:00
Bernd Edlinger
cfd97da10d 016-07-21 Bernd Edlinger <bernd.edlinger@hotmail.de>
PR middle-end/71876
        * builtin-attrs.def (ATTR_RT_NOTHROW_LEAF_LIST): New return twice
        attribute.
        * builtins.def (BUILT_IN_SETJMP): Use ATTR_RT_NOTHROW_LEAF_LIST here.
        * calls.c (special_function_p): Remove the special handling of the
        "__builtin_" prefix.

From-SVN: r238606
2016-07-21 19:11:26 +00:00
Bernd Edlinger
159e8ef0c6 016-07-21 Bernd Edlinger <bernd.edlinger@hotmail.de>
PR middle-end/71876
        * calls.c (gimple_maybe_alloca_call_p): New function.  Return true
        if STMT may be an alloca call.
        (gimple_alloca_call_p, alloca_call_p): Return only true for the
        builtin alloca call.
        * calls.h (gimple_maybe_alloca_call_p): New function.
        * tree-inline.c (inline_forbidden_p_stmt): Use
        gimple_maybe_alloca_call_p here.

From-SVN: r238605
2016-07-21 19:06:02 +00:00
Ilya Verbin
df26a50d0d 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
2016-07-21 18:41:27 +00:00
Jakub Jelinek
ab3af181e6 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
2016-07-21 20:22:32 +02:00
David Malcolm
1c4b8a0449 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
2016-07-21 17:21:12 +00:00
Jakub Jelinek
185faecb55 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
2016-07-21 18:17:58 +02:00
James Greenhalgh
f5a459a439 [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
2016-07-21 15:41:59 +00:00
James Greenhalgh
ebe8f3226c [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
2016-07-21 15:40:24 +00:00
James Greenhalgh
e914c11a99 [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
2016-07-21 15:37:50 +00:00
Richard Biener
959cef7434 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
2016-07-21 13:00:32 +00:00
Martin Liska
88617fe425 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
2016-07-21 12:53:24 +00:00
Richard Biener
01771d4361 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
2016-07-21 12:25:00 +00:00
Prathamesh Kulkarni
c7880c8c92 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
2016-07-21 12:12:05 +00:00
Georg-Johann Lay
fa62698775 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
2016-07-21 11:00:56 +00:00
Bin Cheng
b24d942079 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
2016-07-21 10:52:13 +00:00
Bin Cheng
106d07f8d2 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
2016-07-21 10:44:33 +00:00
Aurelien Jarno
a1b01d3403 [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
2016-07-21 08:27:47 +00:00
Bin Cheng
2397481934 vect-mask-store-move-1.c: XFAIL.
gcc/testsuite
	* gcc.dg/vect/vect-mask-store-move-1.c: XFAIL.

From-SVN: r238583
2016-07-21 08:26:25 +00:00
Jakub Jelinek
a43068ccbb * tree-object-size.c (unknown): Use HOST_WIDE_INT_M1U instead of -1.
From-SVN: r238581
2016-07-21 09:47:44 +02:00
Jakub Jelinek
ee78cbaa89 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
2016-07-21 09:02:04 +02:00
Jason Merrill
172f0e1311 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
2016-07-21 02:05:58 -04:00
Jason Merrill
dd5dda561e 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
2016-07-21 02:05:51 -04:00
Jason Merrill
4683f47cff PR c++/70942 - generic lambda with auto&& parameter.
* g++.dg/cpp1y/lambda-generic-conv3.C: New.

From-SVN: r238561
2016-07-21 02:05:44 -04:00
Jason Merrill
451dcc6693 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
2016-07-21 02:05:39 -04:00
Jason Merrill
e96fe88c51 PR c++/71121 - -Waddress, constexpr, and PMFs.
* cp-gimplify.c (cp_fully_fold): First call maybe_constant_value.

From-SVN: r238559
2016-07-21 02:05:33 -04:00
Andrew Sutton
f078dc7d26 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
2016-07-21 02:05:24 -04:00
GCC Administrator
e17def9a70 Daily bump.
From-SVN: r238557
2016-07-21 00:16:19 +00:00
Uros Bizjak
07e96250ae 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
2016-07-20 23:59:44 +02:00
David Malcolm
52ed68f71a 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
2016-07-20 18:42:11 +00:00
Andreas Krebbel
1397e16301 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
2016-07-20 18:33:30 +00:00
Jonathan Wakely
09a855ae3c Document LWG DR 2684 status and regenerate libstdc++ manual
* doc/xml/manual/intro.xml: Document DR 2684 status.
	* doc/html/*: Regenerate.

From-SVN: r238535
2016-07-20 19:22:05 +01:00
Jonathan Wakely
e87b7d52c3 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
2016-07-20 19:21:59 +01:00
Jonathan Wakely
07c772ed4e 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
2016-07-20 19:21:53 +01:00
Jonathan Wakely
18407bfb2c 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
2016-07-20 19:21:48 +01:00