1. 08 Aug, 2016 12 commits
    • re PR middle-end/68762 (link error for inline function decorated with OpenMP declare simd) · ad200580
      	PR middle-end/68762
      	* omp-simd-clone.c: Include varasm.h.
      	(simd_clone_create): Copy over DECL_COMDAT, DECL_WEAK, DECL_EXTERNAL,
      	DECL_VISIBILITY, DECL_VISIBILITY_SPECIFIED, DECL_DLLIMPORT_P and for
      	DECL_ONE_ONLY call make_decl_one_only.  Fix up spelling in comment and
      	update function name.
      
      	* g++.dg/vect/pr68762-1.cc: New test.
      	* g++.dg/vect/pr68762-2.cc: New test.
      	* g++.dg/vect/pr68762.h: New file.
      
      From-SVN: r239248
      Jakub Jelinek committed
    • c-format.c: cleanup of check_format_info_main · 1c4d457e
      gcc/c-family/ChangeLog:
      	* c-format.c (class flag_chars_t): New class.
      	(struct length_modifier): New struct.
      	(class argument_parser): New class.
      	(flag_chars_t::flag_chars_t): New ctor.
      	(flag_chars_t::has_char_p): New method.
      	(flag_chars_t::add_char): New method.
      	(flag_chars_t::validate): New method.
      	(flag_chars_t::get_alloc_flag): New method.
      	(flag_chars_t::assignment_suppression_p): New method.
      	(argument_parser::argument_parser): New ctor.
      	(argument_parser::read_any_dollar): New method.
      	(argument_parser::read_format_flags): New method.
      	(argument_parser::read_any_format_width): New method.
      	(argument_parser::read_any_format_left_precision): New method.
      	(argument_parser::read_any_format_precision): New method.
      	(argument_parser::handle_alloc_chars): New method.
      	(argument_parser::read_any_length_modifier): New method.
      	(argument_parser::read_any_other_modifier): New method.
      	(argument_parser::find_format_char_info): New method.
      	(argument_parser::validate_flag_pairs): New method.
      	(argument_parser::give_y2k_warnings): New method.
      	(argument_parser::parse_any_scan_set): New method.
      	(argument_parser::handle_conversions): New method.
      	(argument_parser::check_argument_type): New method.
      	(check_format_info_main): Introduce classes argument_parser
      	and flag_chars_t, moving the code within the loop into methods
      	of these classes.  Make various locals "const".
      
      From-SVN: r239247
      David Malcolm committed
    • driver-avr.c (specfiles_doc_url): Remove. · 66c3dd8c
      	* config/avr/driver-avr.c (specfiles_doc_url): Remove.
      	(avr_diagnose_devicespecs_error): Remove.
      	(avr_devicespecs_file): Remove composing absolute path for specfile
      	and its verbose info. Remove conditions to check specs-file,
      
      From-SVN: r239246
      Pitchumani Sivanupandi committed
    • PR testsuite/72838 - FAIL: g++.dg/cpp0x/constexpr-cast.C · 989d0071
      gcc/testsuite/ChangeLog:
      	* gcc/testsuite/g++.dg/cpp0x/constexpr-cast.C: Correct target selector.
      	* gcc/testsuite/g++.dg/warn/overflow-warn-3.C: Same.
      	* gcc/testsuite/g++.dg/warn/overflow-warn-4.C: Same.
      
      From-SVN: r239242
      Martin Sebor committed
    • re PR rtl-optimization/72821 (RTL check: expected elt 2 type 'B', have '0' (rtx… · 5435398d
      re PR rtl-optimization/72821 (RTL check: expected elt 2 type 'B', have '0' (rtx barrier) in BLOCK_FOR_INSN, at rtl.h:1424)
      
      	PR rtl-optimization/72821
      	* lra-spills.c (regno_in_use_p): Don't use BLOCK_FOR_INSN on barriers,
      	just return false for them.
      
      From-SVN: r239241
      Jakub Jelinek committed
    • [RS6000] TOC refs generated during reload · a1c13832
      The generic reload fix for pr72771 exposed a problem with recognizing
      -mcmodel=medium/large TOC references generated during reload.
      
      	PR target/72771
      	* config/rs6000/rs6000.c (toc_relative_expr_p): Allow (lo_sum (high))
      	toc refs created during reload.  Update function comment.
      
      From-SVN: r239240
      Alan Modra committed
    • re PR fortran/71936 (ICE in wide_int_to_tree, at tree.c:1487) · 7090cac9
      gcc/fortran/ChangeLog:
      
      2016-08-08  Andre Vehreschild  <vehre@gcc.gnu.org>
      
      	PR fortran/71936
      	* trans-array.c (gfc_array_allocate): When SOURCE= is a function
      	stick with the ref of the object to allocate.
      
      gcc/testsuite/ChangeLog:
      
      2016-08-08  Andre Vehreschild  <vehre@gcc.gnu.org>
      
      	PR fortran/71936
      	* gfortran.dg/allocate_with_source_21.f03: New test.
      
      From-SVN: r239237
      Andre Vehreschild committed
    • re PR fortran/72698 (ICE in lhd_incomplete_type_error, at langhooks.c:205) · 64e56ab0
      gcc/testsuite/ChangeLog:
      
      2016-08-08  Andre Vehreschild  <vehre@gcc.gnu.org>
      
      	PR fortran/72698
      	* gfortran.dg/allocate_with_source_20.f03: New test.
      
      
      gcc/fortran/ChangeLog:
      
      2016-08-08  Andre Vehreschild  <vehre@gcc.gnu.org>
      
      	PR fortran/72698
      	* trans-stmt.c (gfc_trans_allocate): Prevent generating code for
      	copy of zero sized string and with it an ICE.
      
      From-SVN: r239236
      Andre Vehreschild committed
    • [RS6000] PR72802 part 2, reload ICE · 0476487d
      After fixing the constraint problem, we hit an "insn does not satisfy
      its constraints" with -mno-lra on the following insn, a vector load
      from mem which has an invalid offset:
      (insn 631 630 1122 12 (set (reg:SF 108 31 [orig:260 pretmp_44 ] [260])
              (mem:SF (plus:DI (reg:DI 30 30 [orig:338 ivtmp.141 ] [338])
                      (const_int 2 [0x2])) [5 MEM[base: _1, offset: 2B]+0 S4 A32])) 470 {movsf_hardfloat}
           (nil))
      
      Here are the reload costs for the various alternatives of
      movsf_hardfloat:
      "=!r, !r,  m,  f, ww, ww, !r,  f, wb,  m, wY, wu,  Z,?wn, ?r,*c*l, !r, *h"
        "r,  m,  r,  f, ww,  j,  j,  m, wY,  f, wb,  Z, wu,  r, wn,   r, *h,  0"
       617 609  17  17   8   8 617   9   8  17  17   8  17  23  23   17 617  17
      
      Notice that the cost for a vector<-vector move (ww,ww) is the same as
      the cost for a vector<-mem move (wb,wY or wu,Z).  Since the
      vector<-vector move comes first, it is chosen and the mem part of the
      insn reloaded.  That just gives another copy of insn 631.
      
      	PR target/72802
      	* config/rs6000/rs6000.md (mov<mode>_hardfloat): Sort
      	alternatives.  Put loads first, then stores, and reg/reg moves
      	within same class later.  Delete attr length.
      testsuite/
      	* gcc.c-torture/compile/pr72802.c: New.
      
      From-SVN: r239234
      Alan Modra committed
    • [RS6000] PR72802 part 1, fix constraints for lxssp/stxssp · ad69178c
      We can't use "o" constraint for lsxxp/stxssp since those insns have a
      DS-form offset field, ie. the bottom two bits of the offset must be 0.
      So use "wY" instead, but that leads to finding another problem.
      
      mem_operand_gpr is only suitable for gpr loads/stores since it does
      not enforce multiple-of-4 offsets when -m32.  So "wY" can't use
      mem_operand_gpr, and the vsx tests in mem_operand_gpr are bogus.
      
      I've deleted offsettable_mem_14bit_operand because it wasn't used
      anywhere but in the wY constraint.  Note also that the new wY
      constraint doesn't use memory_operand because that is redundant in a
      constraint, having already been tested in the predicate.
      
      	PR target/72802
      	* config/rs6000/rs6000.c (mem_operand_gpr): Remove vsx dform test.
      	(mem_operand_ds_form): New predicate.
      	* config/rs6000/rs6000-protos.h (mem_operand_ds_form): Declare.
      	* config/rs6000/constraints.md (wY): Use mem_operand_df_form.
      	* config/rs6000/predicates.md (offsettable_mem_14bit_operand): Delete.
      	* config/rs6000/rs6000.md (f32_lm2, f32_sm2): Use wY for SF.
      	(extendsfdf2_fpr): Replace o constraint with wY.
      
      From-SVN: r239233
      Alan Modra committed
    • re PR fortran/70524 (ICE when using -frepack-arrays -Warray-temporaries) · 8e9218f2
      gcc/testsuite/ChangeLog:
      
      2016-08-08  Andre Vehreschild  <vehre@gcc.gnu.org>
      
      	PR fortran/70524
      	* gfortran.dg/dependency_48.f90: New test.
      
      
      gcc/fortran/ChangeLog:
      
      2016-08-08  Andre Vehreschild  <vehre@gcc.gnu.org>
      
      	PR fortran/70524
      	* trans-array.c (gfc_trans_dummy_array_bias): Ensure that the
      	location information is correctly set.
      	* trans-decl.c (gfc_trans_deferred_vars): Set the locus of the
      	current construct early.
      
      From-SVN: r239230
      Andre Vehreschild committed
    • Daily bump. · 1b8256df
      From-SVN: r239228
      GCC Administrator committed
  2. 07 Aug, 2016 8 commits
  3. 06 Aug, 2016 13 commits
    • data-streamer-in.c (streamer_read_wide_int): New. · a73f34c2
      gcc/ChangeLog:
      
      2016-08-07  Kugan Vivekanandarajah  <kuganv@linaro.org>
      
      	* data-streamer-in.c (streamer_read_wide_int): New.
      	(streamer_read_widest_int): Renamed function.
      	* data-streamer-out.c (streamer_write_wide_int): New
      	(streamer_write_widest_int): Renamed function.
      	* lto-streamer-in.c (streamer_read_wi): Renamed and moved to
      	data-stream-in.c.
      	(input_cfg): Call renamed function.
      	* lto-streamer-out.c (streamer_write_wi): Renamed and moved to
      	data-stream-out.c.
      	(output_cfg): Call renamed function.
      	* data-streamer.h: Add declarations.
      
      From-SVN: r239213
      Kugan Vivekanandarajah committed
    • tree-ssa-ccp.c (extend_mask): New param sgn. · 19278b02
      2016-08-08  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
      
      	* tree-ssa-ccp.c (extend_mask): New param sgn.
      	Remove ORing with wi::mask.
      	(get_default_value): Adjust call to extend_mask to pass sign.
      	(evaluate_stmt): Likewise.
      
      From-SVN: r239212
      Prathamesh Kulkarni committed
    • Fix crash in selftest::test_lexer_string_locations_ucn4 (PR bootstrap/72823) · e7864d68
      libcpp/ChangeLog:
      	PR bootstrap/72823
      	* charset.c (_cpp_valid_ucn): Replace overzealous assert with one
      	that allows for char_range to be non-NULL when loc_reader is NULL.
      
      From-SVN: r239211
      David Malcolm committed
    • libgo: fix getrandom build for 32-bit ppc · 851e6c6a
          
          Add a ppc build constraint for internal/syscall/unix.
          
          Reviewed-on: https://go-review.googlesource.com/25547
      
      From-SVN: r239210
      Ian Lance Taylor committed
    • Update C++17 library status table · caee9cde
      	* doc/xml/manual/status_cxx2017.xml: Update status table.
      	* doc/html/manual/status.html: Regenerate.
      
      From-SVN: r239209
      Jonathan Wakely committed
    • * testsuite/lib/libstdc++.exp: Fix typo in comment. · ea2f1f49
      From-SVN: r239193
      Jonathan Wakely committed
    • gcov.c (handle_cycle): Use INTTYPE_MAXIMUM (int64_t) instead of INT64_MAX. · 4ab65208
      	* gcov.c (handle_cycle): Use INTTYPE_MAXIMUM (int64_t) instead of
      	INT64_MAX.
      
      From-SVN: r239192
      Jakub Jelinek committed
    • Use ::new to avoid finding overloaded operator new · 6ef835c6
      	PR libstdc++/72820
      	* include/std/functional (_Function_base::_Base_manager::_M_clone):
      	Qualify new operator.
      	* testsuite/20_util/function/cons/72820.cc: New test.
      
      From-SVN: r239191
      Jonathan Wakely committed
    • match.pd ((intptr_t) x eq/ne CST to x eq/ne (typeof x) cst): Disable transform… · 467719fb
      match.pd ((intptr_t) x eq/ne CST to x eq/ne (typeof x) cst): Disable transform if operand's type is pointer to function or method.
      
      2016-08-06  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
      
      	* match.pd ((intptr_t) x eq/ne CST to x eq/ne (typeof x) cst): Disable
      	transform if operand's type is pointer to function or method.
      
      From-SVN: r239190
      Prathamesh Kulkarni committed
    • libgo: change build procedure to use build tags · e0f69f36
          
          Previously the libgo Makefile explicitly listed the set of files to
          compile for each package.  For packages that use build tags, this
          required a lot of awkward automake conditionals in the Makefile.
          
          This CL changes the build to look at the build tags in the files.
          The new shell script libgo/match.sh does the matching.  This required
          adjusting a lot of build tags, and removing some files that are never
          used.  I verified that the exact same sets of files are compiled on
          amd64 GNU/Linux.  I also tested the build on i386 Solaris.
          
          Writing match.sh revealed some bugs in the build tag handling that
          already exists, in a slightly different form, in the gotest shell
          script.  This CL fixes those problems as well.
          
          The old code used automake conditionals to handle systems that were
          missing strerror_r and wait4.  Rather than deal with those in Go, those
          functions are now implemented in runtime/go-nosys.c when necessary, so
          the Go code can simply assume that they exist.
          
          The os testsuite looked for dir_unix.go, which was never built for gccgo
          and has now been removed.  I changed the testsuite to look for dir.go
          instead.
          
          Reviewed-on: https://go-review.googlesource.com/25546
      
      From-SVN: r239189
      Ian Lance Taylor committed
    • 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
  4. 05 Aug, 2016 7 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