1. 05 Aug, 2016 16 commits
    • 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
  2. 04 Aug, 2016 24 commits
    • re PR target/72805 (AVX512: invalid code generation involving masks) · 383321ec
      	PR target/72805
      	* config/i386/avx512fintrin.h (_mm512_cmp_epi32_mask) [!__OPTIMIZE__]:
      	Cast builtin function result to __mmask16 instead of __mmask8.
      	(_mm512_cmp_epu32_mask) [!__OPTIMIZE__]: Ditto.
      	(_mm512_mask_cmp_epi32_mask) [!__OPTIMIZE__]: Ditto.
      	(_mm512_mask_cmp_epu32_mask) [!__OPTIMIZE__]: Ditto.
      
      From-SVN: r239152
      Uros Bizjak committed
    • selftest.h: Add ASSERT_TRUE_AT and ASSERT_FALSE_AT · d4f7837c
      gcc/ChangeLog:
      	* selftest.h (ASSERT_TRUE): Reimplement in terms of...
      	(ASSERT_TRUE_AT): New macro.
      	(ASSERT_FALSE): Reimplement in terms of...
      	(ASSERT_FALSE_AT): New macro.
      	(ASSERT_STREQ_AT): Fix typo in comment.
      
      From-SVN: r239151
      David Malcolm committed
    • pr70920-4.c: Move dg-require-effective-target before dg-options. · f6cdf42f
      2016-08-04  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
      
      testsuite/
      	* gcc.dg/pr70920-4.c: Move dg-require-effective-target before
      	dg-options.
      
      From-SVN: r239150
      Prathamesh Kulkarni committed
    • pr71078-1.c: Remove double and long double test-cases. · 33a9c609
      2016-08-04  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
      
      testsuite/
      	* gcc.dg/tree-ssa/pr71078-1.c: Remove double and long double
      	test-cases.
      	* gcc.dg/tree-ssa/pr71078-1-double.c: New test-case.
      	* gcc.dg/tree-ssa/pr71078-1-long-double.c: Likewise.
      	* gcc.dg/tree-ssa/pr71078-2.c: Remove double and long double
      	test-cases.
      	* gcc.dg/tree-ssa/pr71078-2-double.c: New test-case.
      	* gcc.dg/tree-ssa/pr71078-2-long-double.c: Likewise.
      	* gcc.dg/tree-ssa/pr71078-3.c: Add require-effective-check for
      	large_double.
      
      From-SVN: r239149
      Prathamesh Kulkarni committed
    • re PR c++/72800 (ICE on invalid C++14 code with initialized lambda capture: tree… · 4473482d
      re PR c++/72800 (ICE on invalid C++14 code with initialized lambda capture: tree check: expected class ‘type’, have ‘exceptional’ (error_mark) in add_capture, at cp/lambda.c:505)
      
      /cp
      2016-08-04  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/72800
      	* lambda.c (add_capture): Check lambda_capture_field_type return
      	value for error_mark_node.
      
      /testsuite
      2016-08-04  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/72800
      	* g++.dg/cpp1y/lambda-ice1.C: New.
      
      From-SVN: r239148
      Paolo Carlini committed
    • Fix ICE on invalid variable template instantiation (PR c++/72759) · 08156df5
      gcc/cp/ChangeLog:
      
      	PR c++/72759
      	* pt.c (tsubst_qualified_id): Return error_mark_node if
      	template_args is error_mark_node.
      
      gcc/testsuite/ChangeLog:
      
      	PR c++/72759
      	* g++.dg/cpp1y/pr72759.C: New test.
      
      From-SVN: r239147
      Patrick Palka committed
    • Designate the widest case label to be the default label · 938da3a5
      gcc/ChangeLog:
      
      	* gimple.c (preprocess_case_label_vec_for_gimple): When the case
      	labels are exhaustive, designate the label with the widest
      	range to be the default label.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.dg/switch-10.c: New test.
      
      From-SVN: r239146
      Patrick Palka committed
    • Define std::is_callable and std::is_nothrow_callable · 42183d03
      	* doc/xml/manual/status_cxx2017.xml: Update status table.
      	* include/std/functional (__inv_unwrap): Move to <type_traits>.
      	(__invoke_impl): Remove exception specifications.
      	(__invoke, invoke): Add exception specifications using
      	__is_nothrow_callable.
      	* include/std/type_traits (__inv_unwrap): Move from <functional>.
      	(__is_callable_impl, __call_is_nt, __call_is_nothrow): New helpers.
      	(__is_callable, __is_nothrow_callable): New traits.
      	(is_callable, is_callable_v): New C++17 traits.
      	(is_nothrow_callable, is_nothrow_callable_v): Likewise.
      	* testsuite/20_util/is_callable/requirements/
      	explicit_instantiation.cc: New test.
      	* testsuite/20_util/is_callable/requirements/
      	explicit_instantiation_ext.cc: New test.
      	* testsuite/20_util/is_callable/requirements/typedefs.cc: New test.
      	* testsuite/20_util/is_callable/requirements/typedefs_ext.cc: New
      	test.
      	* testsuite/20_util/is_callable/value.cc: New test.
      	* testsuite/20_util/is_callable/value_ext.cc: New test.
      	* testsuite/20_util/is_nothrow_callable/requirements/
      	explicit_instantiation.cc: New test.
      	* testsuite/20_util/is_nothrow_callable/requirements/
      	explicit_instantiation_ext.cc: New test.
      	* testsuite/20_util/is_nothrow_callable/requirements/typedefs.cc:
      	New test.
      	* testsuite/20_util/is_nothrow_callable/requirements/typedefs_ext.cc:
      	New test.
      	* testsuite/20_util/is_nothrow_callable/value.cc: New test.
      	* testsuite/20_util/is_nothrow_callable/value_ext.cc: New test.
      
      From-SVN: r239145
      Jonathan Wakely committed
    • re PR c++/71696 (Libiberty Demangler segfaults (6)) · 1841e25c
      2016-08-04  Marcel Böhme  <boehme.marcel@gmail.com>
      
      	PR c++/71696
      	* cplus-dem.c: Prevent infinite recursion when there is a cycle
      	in the referencing of remembered mangled types.
      	(work_stuff): New stack to keep track of the remembered mangled
      	types that are currently being processed.
      	(push_processed_type): New method to push currently processed
      	remembered type onto the stack.
      	(pop_processed_type): New method to pop currently processed
      	remembered type from the stack.
      	(work_stuff_copy_to_from): Copy values of new variables.
      	(delete_non_B_K_work_stuff): Free stack memory.
      	(demangle_args): Push/Pop currently processed remembered type.
      	(do_type): Do not demangle a cyclic reference and push/pop
      	referenced remembered type.
      
      From-SVN: r239143
      Marcel Böhme committed
    • [Patch obvious testsuite] Remove duplicate body from pr70903.c · da84183c
      	* gcc.c-torture/execute/pr70903.c: Remove duplicate body.
      
      From-SVN: r239142
      James Greenhalgh committed
    • text/template: reduce maxExecDepth for gccgo · aa8a418b
          
          When using gccgo on systems without full support for split stacks a
          recursive template can overrun the available stack space.  Reduce the
          limit from 100000 to 10000 to make this less likely.  It's still high
          enough that real uses will work.
          
          Reviewed-on: https://go-review.googlesource.com/25467
      
      From-SVN: r239141
      Ian Lance Taylor committed
    • compiler: include "go-system.h" in escape.cc · 7a62db97
          
          Patch from Rainer Orth.
          
          Reviewed-on: https://go-review.googlesource.com/25466
      
      From-SVN: r239140
      Ian Lance Taylor committed
    • PR c++/72415 - member template with fold-expression constraint · b9dc9ef6
      	* pt.c (tsubst_pack_expansion): Pull a single pack expansion out
      	of the TREE_VEC.
      
      From-SVN: r239138
      Jason Merrill committed
    • Rename TYPE_ANONYMOUS_P to TYPE_UNNAMED_P. · 6a7b9203
      	* cp-tree.h (TYPE_UNNAMED_P): Rename from TYPE_ANONYMOUS_P.
      	(TYPE_WAS_UNNAMED): Rename from TYPE_WAS_ANONYMOUS.
      	* class.c, decl.c, decl2.c, error.c, lambda.c, mangle.c,
      	name-lookup.c, parser.c, pt.c, semantics.c, tree.c: Adjust.
      
      From-SVN: r239137
      Jason Merrill committed
    • PR c++/72796 - wrong resolution of scoped method call. · 99676625
      	* typeck.c (finish_class_member_access_expr): Avoid stripping
      	SCOPE_REF to dependent base.
      
      From-SVN: r239136
      Jason Merrill committed
    • aarch64.c (thunderx_vector_cost): New variable. · c3f20327
      2016-08-04  Andrew Pinski  <apinski@cavium.com>
      
              * config/aarch64/aarch64.c (thunderx_vector_cost): New variable.
              (thunderx_tunings): Use thunderx_vector_cost instead of
              generic_vector_cost.
      
      From-SVN: r239135
      Andrew Pinski committed
    • Fix GNU coding style in gcov.c · 176bf572
      	* gcov.c (main): Fix GNU coding style.
      	(output_intermediate_file): Likewise.
      	(process_file): Likewise.
      	(generate_results): Likewise.
      	(release_structures): Likewise.
      	(create_file_names): Likewise.
      	(find_source): Likewise.
      	(read_graph_file): Likewise.
      	(find_exception_blocks): Likewise.
      	(canonicalize_name): Likewise.
      	(make_gcov_file_name): Likewise.
      	(mangle_name): Likewise.
      	(accumulate_line_counts): Likewise.
      	(output_branch_count): Likewise.
      	(read_line): Likewise.
      
      From-SVN: r239134
      Martin Liska committed
    • Rework C/C++ OpenACC routine parsing · ae9281fc
      	gcc/c/
      	* c-parser.c (struct oacc_routine_data): Add error_seen and
      	fndecl_seen members.
      	(c_finish_oacc_routine): Use these.
      	(c_parser_declaration_or_fndef): Adjust.
      	(c_parser_oacc_routine): Likewise.  Support more C language
      	constructs, and improve diagnostics.  Move pragma context
      	checking...
      	(c_parser_pragma): ... here.
      	gcc/cp/
      	* parser.c (cp_ensure_no_oacc_routine): Improve diagnostics.
      	(cp_parser_late_parsing_cilk_simd_fn_info): Fix diagnostics.
      	(cp_parser_late_parsing_oacc_routine, cp_finalize_oacc_routine):
      	Simplify code, and improve diagnostics.
      	(cp_parser_oacc_routine): Likewise.  Move pragma context
      	checking...
      	(cp_parser_pragma): ... here.
      	gcc/testsuite/
      	* c-c++-common/goacc/routine-5.c: Update.
      
      From-SVN: r239128
      Thomas Schwinge committed
    • C/C++: Simplify handling of location information for OpenACC routine directives · 0b212d8c
      	gcc/c/
      	* c-parser.c (struct oacc_routine_data): New.
      	(c_parser_declaration_or_fndef, c_parser_oacc_routine): Use it.
      	Simplify code.
      	(c_finish_oacc_routine): Likewise.  Don't attach clauses to "omp
      	declare target" attribute.
      	gcc/cp/
      	* parser.h (struct cp_omp_declare_simd_data): New.
      	(struct cp_parser): Use it for oacc_routine member.
      	* parser.c (cp_ensure_no_oacc_routine, cp_parser_oacc_routine)
      	(cp_parser_late_parsing_oacc_routine, cp_finalize_oacc_routine):
      	Use it.  Simplify code.
      	(cp_parser_new): Initialize all members pointing to special
      	parsing data structures.
      	(cp_parser_cilk_simd_fn_vector_attrs): Initialize
      	parser->cilk_simd_fn_info->clauses.
      	(cp_parser_omp_declare_simd): Initialize
      	parser->omp_declare_simd->clauses.
      	(cp_parser_late_parsing_omp_declare_simd): Simplify code.
      
      From-SVN: r239127
      Thomas Schwinge committed
    • C++ OpenACC routine directive testing: templated, and "auto", trailing return type syntax · bbc79c0e
      	libgomp/
      	* testsuite/libgomp.oacc-c++/routine-1-auto.C: New file.
      	* testsuite/libgomp.oacc-c++/routine-1-template-auto.C: Likewise.
      	* testsuite/libgomp.oacc-c++/routine-1-template-trailing-return-type.C:
      	Likewise.
      	* testsuite/libgomp.oacc-c++/routine-1-template.C: Likewise.
      	* testsuite/libgomp.oacc-c++/routine-1-trailing-return-type.C:
      	Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/routine-1.c: Adjust.
      
      From-SVN: r239126
      Thomas Schwinge committed
    • Make libgomp.oacc-c-c++-common/crash-1.c a "link" test, and don't hardcode -O0 · 9ef64248
      	libgomp/
      	* testsuite/libgomp.oacc-c-c++-common/crash-1.c: Make it a "link"
      	test, and don't hardcode -O0.
      
      From-SVN: r239125
      Thomas Schwinge committed
    • Update C++17 library implementation status table · 246c618e
      	* doc/xml/manual/status_cxx2017.xml: Update C++17 status table.
      	* doc/html/manual/status.html: Regenerate.
      
      From-SVN: r239124
      Jonathan Wakely committed
    • 016-08-04 Bernd Edlinger <bernd.edlinger@hotmail.de> · 8d8e740c
              PR rtl-optimization/71779
              * emit-rtl.c (set_reg_attrs_from_value): Only propagate REG_POINTER,
              if the value was sign-extended according to POINTERS_EXTEND_UNSIGNED
              or if it was truncated.
      
      From-SVN: r239123
      Bernd Edlinger committed