1. 06 Aug, 2016 3 commits
    • Daily bump. · d712e9a7
      From-SVN: r239188
      GCC Administrator committed
    • Harmonize diagnostics for invalid reference binding · fa76f2c6
      gcc/cp:
      
      	* call.c (convert_like_real): Harmonize diagnostics for invalid
      	reference binding.
      
      gcc/testsuite:
      
      	* call.c (convert_like_real): Harmonize diagnostics for invalid
      	reference binding.
      	* g++.dg/conversion/pr16333.C: Adjust dg-error regexp.
      	* g++.dg/conversion/pr41426.C: Likewise.
      	* g++.dg/conversion/pr66211.C: Likewise.
      	* g++.dg/cpp1y/lambda-init9.C: Likewise.
      	* g++.dg/init/ref8.C: Likewise.
      	* g++.old-deja/g++.law/cvt20.C: Likewise.
      	* g++.old-deja/g++.mike/p9732c.C: Likewise.
      
      From-SVN: r239184
      Jonathan Wakely committed
    • Add std::apply for C++17 · 3e9f67e6
      	* doc/xml/manual/status_cxx2017.xml: Add missing LFTSv2 features.
      	* doc/html/manual/status.html: Regenerate.
      	* include/Makefile.am: Add new header.
      	* include/Makefile.in: Regenerate.
      	* include/bits/invoke.h: New header.
      	(__invoke): Make constexpr. Add && to types in exception specification.
      	* include/experimental/tuple (apply, __apply_impl): Fix non-reserved
      	names. Include <bits/invoke.h> and use std::__invoke.
      	* include/std/functional (__invfwd, __invoke_impl, __invoke): Move to
      	new header.
      	(invoke): Add && to types in exception specification.
      	* include/std/tuple (apply, __apply_impl): Define for C++17.
      	* testsuite/20_util/tuple/apply/1.cc: New test.
      	* testsuite/20_util/tuple/element_access/get_neg.cc: Adjust dg-error
      	lineno.
      
      From-SVN: r239183
      Jonathan Wakely committed
  2. 05 Aug, 2016 20 commits
    • Improve forward jump threading of switch statements (PR18046) · 5c3e5002
      gcc/ChangeLog:
      
      	PR tree-optimization/18046
      	* tree-ssa-threadedge.c: Include cfganal.h.
      	(simplify_control_statement_condition): If simplifying a
      	GIMPLE_SWITCH, replace the index operand of the GIMPLE_SWITCH
      	with the dominating ASSERT_EXPR before handing it off to VRP.
      	Mention that a CASE_LABEL_EXPR may be returned.
      	(thread_around_empty_blocks): Adjust to handle
      	simplify_control_statement_condition() returning a
      	CASE_LABEL_EXPR.
      	(thread_through_normal_block): Likewise.
      	* tree-vrp.c (simplify_stmt_for_jump_threading): Simplify
      	a switch statement by trying to determine which case label
      	will be taken.
      
      gcc/testsuite/ChangeLog:
      
      	PR tree-optimization/18046
      	* gcc.dg/tree-ssa/vrp105.c: New test.
      	* gcc.dg/tree-ssa/vrp106.c: New test.
      
      From-SVN: r239181
      Patrick Palka committed
    • re PR rtl-optimization/69847 (Spec 2006 403.gcc slows down with -mlra vs. reload on PowerPC) · b10d44ef
      2016-08-05  Vladimir Makarov  <vmakarov@redhat.com>
      
      	PR rtl-optimization/69847
      	* lra-constraints.c (process_invariant_for_inheritance): Save
      	pattern instead of src.
      	(remove_inheritance_pseudos): Use the pattern.  Add assert.
      
      From-SVN: r239180
      Vladimir Makarov committed
    • re PR go/72812 (reflect FAILs with Solaris as) · 9dcd84ec
      	PR go/72812
      	* go-gcc.cc (char_needs_encoding): New static function.
      	(needs_encoding, fetch_utf8_char): New static functions.
      	(encode_id): New static function.
      	(Gcc_backend::global_variable): Set asm name if the name is not
      	simple ASCII.
      	(Gcc_backend::implicit_variable): Likewise.
      	(Gcc_backend::implicit_variable_reference): Likewise.
      	(Gcc_backend::immutable_struct): Likewise.
      	(Gcc_backend::immutable_struct_reference): Likewise.
      	(Gcc_backend::function): Likewise.
      
      From-SVN: r239179
      Ian Lance Taylor committed
    • constexpr.c (cxx_eval_store_expression): Remove hyphen from the spelling of… · 64d6d399
      constexpr.c (cxx_eval_store_expression): Remove hyphen from the spelling of "constant-expression" in diagnostic messages...
      
      
      gcc/cp/ChangeLog:
      
      	* constexpr.c (cxx_eval_store_expression): Remove hyphen from
      	the spelling of "constant-expression" in diagnostic messages
      	for consistency.
      	(cxx_eval_constant_expression): Same.
      	(cxx_eval_outermost_constant_expr): Same.
      	(potential_constant_expression_1): Same.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/cpp0x/constexpr-cast.C: Avoid assuming (void*)1 is spelled
      	1ul in diagnostics.  Remove hyphen from "constant-expression."
      	* g++.dg/cpp0x/constexpr-50060.C: Adjust.
      	* g++.dg/cpp0x/static_assert3.C: Same.
      	* g++.dg/cpp1y/constexpr-throw.C: Same.
      	* g++.dg/template/nontype3.C: Same.
      	* g++.dg/warn/overflow-warn-1.C: Same.
      	* g++.dg/warn/overflow-warn-3.C: Same.
      	* g++.dg/warn/overflow-warn-4.C: Same.
      
      From-SVN: r239176
      Martin Sebor committed
    • On-demand locations within string-literals · 88fa5555
      gcc/c-family/ChangeLog:
      	* c-common.c: Include "substring-locations.h".
      	(get_cpp_ttype_from_string_type): New function.
      	(g_string_concat_db): New global.
      	(substring_loc::get_range): New method.
      	* c-common.h (g_string_concat_db): New declaration.
      	(class substring_loc): New class.
      	* c-lex.c (lex_string): When concatenating strings, capture the
      	locations of all tokens using a new obstack, and record the
      	concatenation locations within g_string_concat_db.
      	* c-opts.c (c_common_init_options): Construct g_string_concat_db
      	on the ggc-heap.
      
      gcc/ChangeLog:
      	* input.c (string_concat::string_concat): New constructor.
      	(string_concat_db::string_concat_db): New constructor.
      	(string_concat_db::record_string_concatenation): New method.
      	(string_concat_db::get_string_concatenation): New method.
      	(string_concat_db::get_key_loc): New method.
      	(class auto_cpp_string_vec): New class.
      	(get_substring_ranges_for_loc): New function.
      	(get_source_range_for_substring): New function.
      	(get_num_source_ranges_for_substring): New function.
      	(class selftest::lexer_test_options): New class.
      	(struct selftest::lexer_test): New struct.
      	(class selftest::ebcdic_execution_charset): New class.
      	(selftest::ebcdic_execution_charset::s_singleton): New variable.
      	(selftest::lexer_test::lexer_test): New constructor.
      	(selftest::lexer_test::~lexer_test): New destructor.
      	(selftest::lexer_test::get_token): New method.
      	(selftest::assert_char_at_range): New function.
      	(ASSERT_CHAR_AT_RANGE): New macro.
      	(selftest::assert_num_substring_ranges): New function.
      	(ASSERT_NUM_SUBSTRING_RANGES): New macro.
      	(selftest::assert_has_no_substring_ranges): New function.
      	(ASSERT_HAS_NO_SUBSTRING_RANGES): New macro.
      	(selftest::test_lexer_string_locations_simple): New function.
      	(selftest::test_lexer_string_locations_ebcdic): New function.
      	(selftest::test_lexer_string_locations_hex): New function.
      	(selftest::test_lexer_string_locations_oct): New function.
      	(selftest::test_lexer_string_locations_letter_escape_1): New function.
      	(selftest::test_lexer_string_locations_letter_escape_2): New function.
      	(selftest::test_lexer_string_locations_ucn4): New function.
      	(selftest::test_lexer_string_locations_ucn8): New function.
      	(selftest::uint32_from_big_endian): New function.
      	(selftest::test_lexer_string_locations_wide_string): New function.
      	(selftest::uint16_from_big_endian): New function.
      	(selftest::test_lexer_string_locations_string16): New function.
      	(selftest::test_lexer_string_locations_string32): New function.
      	(selftest::test_lexer_string_locations_u8): New function.
      	(selftest::test_lexer_string_locations_utf8_source): New function.
      	(selftest::test_lexer_string_locations_concatenation_1): New
      	function.
      	(selftest::test_lexer_string_locations_concatenation_2): New
      	function.
      	(selftest::test_lexer_string_locations_concatenation_3): New
      	function.
      	(selftest::test_lexer_string_locations_macro): New function.
      	(selftest::test_lexer_string_locations_stringified_macro_argument):
      	New function.
      	(selftest::test_lexer_string_locations_non_string): New function.
      	(selftest::test_lexer_string_locations_long_line): New function.
      	(selftest::test_lexer_char_constants): New function.
      	(selftest::input_c_tests): Call the new test functions once per
      	case within the line_table test matrix.
      	* input.h (struct string_concat): New struct.
      	(struct location_hash): New struct.
      	(class string_concat_db): New class.
      	* substring-locations.h: New header.
      
      gcc/testsuite/ChangeLog:
      	* gcc.dg/plugin/diagnostic-test-string-literals-1.c: New file.
      	* gcc.dg/plugin/diagnostic-test-string-literals-2.c: New file.
      	* gcc.dg/plugin/diagnostic_plugin_test_string_literals.c: New file.
      	* gcc.dg/plugin/plugin.exp (plugin_test_list): Add the above new files.
      
      libcpp/ChangeLog:
      	* charset.c (cpp_substring_ranges::cpp_substring_ranges): New
      	constructor.
      	(cpp_substring_ranges::~cpp_substring_ranges): New destructor.
      	(cpp_substring_ranges::add_range): New method.
      	(cpp_substring_ranges::add_n_ranges): New method.
      	(_cpp_valid_ucn): Add "char_range" and "loc_reader" params; if
      	they are non-NULL, read position information from *loc_reader
      	and update char_range->m_finish accordingly.
      	(convert_ucn): Add "char_range", "loc_reader", and "ranges"
      	params.  If loc_reader is non-NULL, read location information from
      	it, and update *ranges accordingly, using char_range.
      	Conditionalize the conversion into tbuf on tbuf being non-NULL.
      	(convert_hex): Likewise, conditionalizing the call to
      	emit_numeric_escape on tbuf.
      	(convert_oct): Likewise.
      	(convert_escape): Add params "loc_reader" and "ranges".  If
      	loc_reader is non-NULL, read location information from it, and
      	update *ranges accordingly.  Conditionalize the conversion into
      	tbuf on tbuf being non-NULL.
      	(cpp_interpret_string): Rename to...
      	(cpp_interpret_string_1): ...this, adding params "loc_readers" and
      	"out".  Use "to" to conditionalize the initialization and usage of
      	"tbuf", such as running the converter.  If "loc_readers" is
      	non-NULL, use the instances within it, reading location
      	information from them, and passing them to convert_escape; likewise
      	write to "out" if loc_readers is non-NULL.  Check for leading
      	quote and issue an error if it is not present.  Update boundary
      	check from "== limit" to ">= limit" to protect against erroneous
      	location values to calls that are not parsing string literals.
      	(cpp_interpret_string): Reimplement in terms to
      	cpp_interpret_string_1.
      	(noop_error_cb): New function.
      	(cpp_interpret_string_ranges): New function.
      	(cpp_string_location_reader::cpp_string_location_reader): New
      	constructor.
      	(cpp_string_location_reader::get_next): New method.
      	* include/cpplib.h (class cpp_string_location_reader): New class.
      	(class cpp_substring_ranges): New class.
      	(cpp_interpret_string_ranges): New prototype.
      	* internal.h (_cpp_valid_ucn): Add params "char_range" and
      	"loc_reader".
      	* lex.c (forms_identifier_p): Pass NULL for new params to
      	_cpp_valid_ucn.
      
      From-SVN: r239175
      David Malcolm committed
    • re PR tree-optimization/72810 (error: type mismatch for case label in switch statement) · 1addb9e6
      Fix PR tree-optimization/72810
      
      gcc/ChangeLog:
      
      	PR tree-optimization/72810
      	* tree-vrp.c (simplify_switch_using_ranges): Avoid changing
      	the type of the case labels when truncating.
      
      gcc/testsuite/ChangeLog:
      
      	PR tree-optimization/72810
      	* gcc.dg/tree-ssa/vrp110.c: New test.
      
      From-SVN: r239174
      Patrick Palka committed
    • [AArch64] Handle HFAs of float16 types properly · 1b62ed4f
      Fix PR Target/72819.
      
      gcc/
      
      	PR Target/72819
      	* config/aarch64/aarch64.h (aarch64_fp16_type_node): Declare.
      	(aarch64_fp16_ptr_type_node): Likewise.
      	* config/aarch64/aarch64-simd-builtins.c
      	(aarch64_fp16_ptr_type_node): Define.
      	(aarch64_init_fp16_types): New, refactored out of...
      	(aarch64_init_builtins): ...here, update to call
      	aarch64_init_fp16_types.
      	* config/aarch64/aarch64.c (aarch64_gimplify_va_arg_expr): Handle
      	HFmode.
      	(aapcs_vfp_sub_candidate): Likewise.
      
      gcc/testsuite/
      
      	PR Target/72819
      	* gcc.target/aarch64/aapcs64/abitest-common.h: Define half-precision
      	registers.
      	* gcc.target/aarch64/aapcs64/abitest.S (dumpregs): Add assembly for
      	saving the half-precision registers.
      	* gcc.target/aarch64/aapcs64/func-ret-1.c: Test that an __fp16
      	value is returned in h0.
      	* gcc.target/aarch64/aapcs64/test_2.c: Check that __FP16 arguments
      	are passed in FP/SIMD registers.
      	* gcc.target/aarch64/aapcs64/test_27.c: New, test that __fp16 HFA
      	passing works corrcetly.
      	* gcc.target/aarch64/aapcs64/type-def.h (hfa_f16x1_t): New.
      	(hfa_f16x2_t): Likewise.
      	(hfa_f16x3_t): Likewise.
      	* gcc.target/aarch64/aapcs64/va_arg-1.c: Check that __fp16 values
      	are promoted to double and passed in a double register.
      	* gcc.target/aarch64/aapcs64/va_arg-2.c: Check that __fp16 values
      	are promoted to double and stacked.
      	* gcc.target/aarch64/aapcs64/va_arg-4.c: Check stacking of HFA of
      	__fp16 data types.
      	* gcc.target/aarch64/aapcs64/va_arg-5.c: Likewise.
      	* gcc.target/aarch64/aapcs64/va_arg-16.c: New, check HFAs of
      	__fp16 first get passed in FP/SIMD registers, then stacked.
      
      From-SVN: r239173
      James Greenhalgh committed
    • Correct status of __cpp_lib_enable_shared_from_this · a0b1bf21
      	* doc/xml/manual/status_cxx2017.xml: Correct shared_from_this status.
      	* doc/html/manual/status.html: Regenerate.
      
      From-SVN: r239171
      Jonathan Wakely committed
    • Implement C++17 rounding functions for std::chrono (P0092R1) · 5f6acdfb
      	* include/std/chrono (floor, ceil, round, abs): New for C++17.
      	* testsuite/20_util/duration_cast/rounding.cc: New test.
      	* testsuite/20_util/time_point_cast/rounding.cc: New test.
      	* doc/xml/manual/status_cxx2017.xml: Update status table.
      	* doc/html/manual/status.html: Regenerate.
      	* testsuite/20_util/duration/requirements/typedefs_neg1.cc: Adjust
      	dg-error lineno.
      	* testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
      	* testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
      	* testsuite/20_util/duration/literals/range.cc: Likewise.
      
      From-SVN: r239170
      Jonathan Wakely committed
    • gcov tool: Implement Hawick's algorithm for cycle detection, · 24bc5921
      	    Joshua Cranmer  <Pidgeot18@gmail.com>
      
      	* gcov.c (line_t::has_block): New function.
      	(enum loop_type): New enum.
      	(handle_cycle): New function.
      	(unblock): Likewise.
      	(circuit): Likewise.
      	(get_cycles_count): Likewise.
      	(accumulate_line_counts): Use new loop detection algorithm.
      
      From-SVN: r239169
      Martin Liska committed
    • gcov: rename line_next to next_file_fn in function_info · 4457451f
      	* gcov.c (output_intermediate_file): Rename
      	function_info::line_next to next_file_fn.
      	(process_file): Likewise.
      	(read_graph_file): Likewise.
      	(accumulate_line_counts): Likewise.
      	(output_lines): Likewise.
      
      From-SVN: r239168
      Martin Liska committed
    • re PR c++/68724 (ice in unify, at cp/pt.c:19902) · 4228ca19
      	PR c++/68724
      	* pt.c (unify): TRAIT_EXPR is an expr.
      
      	PR c++/68724
      	* g++.dg/cpp0x/pr68724.C: New.
      
      From-SVN: r239167
      Nathan Sidwell committed
    • Use __invoke in std::function internals · 98e6e662
      	* include/std/functional (__callable_functor): Remove.
      	(_Function_handler::_M_invoke): Use __invoke instead of
      	__callable_functor or mem_fn.
      	(function::_Callable): Use lvalue in result_of expression.
      	(function): Remove TODO comments about allocators.
      	* testsuite/20_util/function/cons/refqual.cc: New test.
      
      From-SVN: r239166
      Jonathan Wakely committed
    • ivopt_5.c: Make robust against edge swapping. · db7c335e
      2016-08-05  Richard Biener  <rguenther@suse.de>
      
      	* gcc.dg/tree-ssa/ivopt_5.c: Make robust against edge swapping.
      
      From-SVN: r239165
      Richard Biener committed
    • tree-ssa-threadupdate.c (thread_block_1): Remove unnecessary restriction on… · 6c1d60a2
      tree-ssa-threadupdate.c (thread_block_1): Remove unnecessary restriction on threading to a loop header.
      
      2016-08-05  Richard Biener  <rguenther@suse.de>
      
      	* tree-ssa-threadupdate.c (thread_block_1): Remove unnecessary
      	restriction on threading to a loop header.
      
      From-SVN: r239164
      Richard Biener committed
    • tree-cfgcleanup.c (tree_forwarder_block_p): Use bb_loop_header_p. · ee281008
      2016-08-05  Richard Biener  <rguenther@suse.de>
      
      	* tree-cfgcleanup.c (tree_forwarder_block_p): Use bb_loop_header_p.
      	* cfghooks.c (force_nonfallthru): If we ended up splitting a latch
      	adjust loop info accordingly.
      
      From-SVN: r239163
      Richard Biener committed
    • tree-vrp.c (extract_range_basic): Check cfun->after_inlining before folding call… · 343092cf
      tree-vrp.c (extract_range_basic): Check cfun->after_inlining before folding call to __builtin_constant_p with...
      
      gcc/ChangeLog:
      
      2016-08-05  Kugan Vivekanandarajah  <kuganv@linaro.org>
      
      	* tree-vrp.c (extract_range_basic): Check cfun->after_inlining
      	before folding call to __builtin_constant_p with parameters to false.
      
      From-SVN: r239162
      Kugan Vivekanandarajah committed
    • [RS6000] rs6000_preferred_reload_class · 7ffedfee
      	* config/rs6000/rs6000.c (rs6000_preferred_reload_class): Delete
      	code accidentally committed 2016-05-02 providing class when given
      	NO_REGS.
      
      From-SVN: r239161
      Alan Modra committed
    • Daily bump. · eedd464b
      From-SVN: r239160
      GCC Administrator committed
    • Teach VRP to truncate the case ranges of a switch · 48abe922
      gcc/ChangeLog:
      
      	* tree-vrp.c (simplify_switch_using_ranges): Try to truncate
      	the case label ranges that partially overlap with OP's value
      	range.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.dg/tree-ssa/vrp107.c: New test.
      	* gcc.dg/tree-ssa/vrp108.c: New test.
      	* gcc.dg/tree-ssa/vrp109.c: New test.
      
      From-SVN: r239157
      Patrick Palka committed
  3. 04 Aug, 2016 17 commits