Skip to content
Snippets Groups Projects
  1. Jan 13, 2020
    • Jonathan Wakely's avatar
      libstdc++: Ensure root-dir converted to forward slash (PR93244) · fe7cc34f
      Jonathan Wakely authored
      	PR libstdc++/93244
      	* include/bits/fs_path.h (path::generic_string<C,A>)
      	[_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Convert root-dir to forward-slash.
      	* testsuite/27_io/filesystem/path/generic/generic_string.cc: Check
      	root-dir is converted to forward slash in generic pathname.
      	* testsuite/27_io/filesystem/path/generic/utf.cc: New test.
      	* testsuite/27_io/filesystem/path/generic/wchar_t.cc: New test.
      fe7cc34f
    • Jonathan Wakely's avatar
      libstdc++: Value-initialize std::atomic for C++20 (P0883R2) · e4379a93
      Jonathan Wakely authored
      This implements the new requirements for C++20 that std::atomic should
      initialize the atomic variable in its default constructor.
      
      This patch does not add the deprecated attribute to atomic_init, but
      that should be done at some point as it's deprecated in C++20.
      
      The paper also deprecates the ATOMIC_FLAG_INIT macro, although we can't
      apply the deprecated attribute to a macro.
      
      	PR libstdc++/58605
      	* include/bits/atomic_base.h (__cpp_lib_atomic_value_initialization):
      	Define.
      	(__atomic_flag_base, __atomic_base, __atomic_base<_PTp*>)
      	(__atomic_float): Add default member initializer for C++20.
      	* include/std/atomic (atomic): Likewise.
      	(atomic::atomic()): Remove noexcept-specifier on default constructor.
      	* include/std/version (__cpp_lib_atomic_value_initialization): Define.
      	* testsuite/29_atomics/atomic/cons/assign_neg.cc: Adjust dg-error line
      	number.
      	* testsuite/29_atomics/atomic/cons/copy_neg.cc: Likewise.
      	* testsuite/29_atomics/atomic/cons/value_init.cc: New test.
      	* testsuite/29_atomics/atomic_flag/cons/value_init.cc: New test.
      	* testsuite/29_atomics/atomic_flag/requirements/trivial.cc: Adjust
      	expected result for is_trivially_default_constructible.
      	* testsuite/29_atomics/atomic_float/requirements.cc: Likewise.
      	* testsuite/29_atomics/atomic_float/value_init.cc: New test.
      	* testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: Likewise.
      	* testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Likewise.
      	* testsuite/29_atomics/atomic_integral/cons/value_init.cc
      	* testsuite/29_atomics/atomic_integral/requirements/trivial.cc: Adjust
      	expected results for is_trivially_default_constructible.
      	* testsuite/util/testsuite_common_types.h (has_trivial_dtor): Add
      	new test generator.
      e4379a93
    • Jonathan Wakely's avatar
      doc: Note that some warnings depend on optimizations (PR 92757) · aef85e40
      Jonathan Wakely authored
      	PR driver/92757
      	* doc/invoke.texi (Warning Options): Add caveat about some warnings
      	depending on optimization settings.
      aef85e40
    • Jakub Jelinek's avatar
      tree-opt: Fix bootstrap failure in tree-ssa-forwprop.c some more PR90838 · eb7c7c52
      Jakub Jelinek authored
      2020-01-13  Jakub Jelinek  <jakub@redhat.com>
      
      	PR tree-optimization/90838
      	* tree-ssa-forwprop.c (simplify_count_trailing_zeroes): Use
      	SCALAR_INT_TYPE_MODE directly in CTZ_DEFINED_VALUE_AT_ZERO macro
      	argument rather than to initialize temporary for targets that
      	don't use the mode argument at all.  Initialize ctzval to avoid
      	warning at -O0.
      eb7c7c52
    • Joseph Myers's avatar
      Update gcc_release for move to git. · 67e63570
      Joseph Myers authored
      This patch updates the gcc_release script, used for snapshots and
      releases, to use git instead of SVN.
      
      The parts of the changes used in building snapshots have been tested.
      The parts used for building releases have not, so it's likely further
      fixes may turn out to be needed there when releases are first built
      from git.
      
      	* gcc_release: Use git instead of SVN.
      	* crontab: Update gcc_release calls.
      67e63570
    • GCC Administrator's avatar
      Daily bump. · a171d3f1
      GCC Administrator authored
      a171d3f1
    • Joseph Myers's avatar
      Replace update_version_svn with update_version_git. · 18cb6ac2
      Joseph Myers authored
      This patch replaces the update_version_svn script, that updates the
      DATESTAMP files from cron, with update_version_git.
      
      	* update_version_git: New file.
      	* update_version:svn: Remove.
      	* crontab: Use update_version_git.
      18cb6ac2
    • Joseph Myers's avatar
      Remove README.MOVED_TO_GIT. The repository is now open for commits. · b2b465c5
      Joseph Myers authored
      	* README.MOVED_TO_GIT: Remove.
      b2b465c5
  2. Jan 11, 2020
  3. Jan 10, 2020
    • Kwok Cheung Yeung's avatar
      [amdgcn] Remove dependency on stdint.h in libgcc · af9bd920
      Kwok Cheung Yeung authored
      2020-01-10  Kwok Cheung Yeung  <kcy@codesourcery.com>
      
      	libgcc/
      	* config/gcn/atomic.c: Remove include of stdint.h.
      	(__sync_val_compare_and_swap_##SIZE): Replace uintptr_t with
      	__UINTPTR_TYPE__.
      
      From-SVN: r280152
      af9bd920
    • Thomas Schwinge's avatar
      OpenACC 'acc_get_property' cleanup · 6fc0385c
      Thomas Schwinge authored
      	include/
      	* gomp-constants.h (enum gomp_device_property): Remove.
      	libgomp/
      	* libgomp-plugin.h (enum goacc_property): New.  Adjust all users
      	to use this instead of 'enum gomp_device_property'.
      	(GOMP_OFFLOAD_get_property): Rename to...
      	(GOMP_OFFLOAD_openacc_get_property): ... this.  Adjust all users.
      	* libgomp.h (struct gomp_device_descr): Move
      	'GOMP_OFFLOAD_openacc_get_property'...
      	(struct acc_dispatch_t): ... here.  Adjust all users.
      	* plugin/plugin-hsa.c (GOMP_OFFLOAD_get_property): Remove.
      	liboffloadmic/
      	* plugin/libgomp-plugin-intelmic.cpp (GOMP_OFFLOAD_get_property):
      	Remove.
      
      From-SVN: r280150
      6fc0385c
    • Thomas Schwinge's avatar
      Further changes for the OpenACC 'if_present' clause on the 'host_data' construct · b3b75e66
      Thomas Schwinge authored
      	gcc/
      	* tree.h (OMP_CLAUSE_USE_DEVICE_PTR_IF_PRESENT): New definition.
      	* tree-core.h: Document it.
      	* gimplify.c (gimplify_omp_workshare): Set it.
      	* omp-low.c (lower_omp_target): Use it.
      	* tree-pretty-print.c (dump_omp_clause): Print it.
      	gcc/testsuite/
      	* c-c++-common/goacc/host_data-1.c: Extend.
      	* gfortran.dg/goacc/host_data-tree.f95: Likewise.
      
      	gcc/
      	* omp-low.c (lower_omp_target) <OMP_CLAUSE_USE_DEVICE_PTR etc.>:
      	Assert that for OpenACC we always have 'GOMP_MAP_USE_DEVICE_PTR'.
      
      	libgomp/
      	* target.c (gomp_map_vars_internal)
      	<GOMP_MAP_USE_DEVICE_PTR_IF_PRESENT>: Clean up/elaborate code
      	paths.
      
      From-SVN: r280149
      b3b75e66
    • Jonathan Wakely's avatar
      libstdc++: Improve comment about testsuite utilities · 68be73fc
      Jonathan Wakely authored
      This fixes a typo and also explains why test_container is not a range
      when used with output_iterator_wrapper or input_iterator_wrapper.
      
      	* testsuite/util/testsuite_iterators.h: Improve comment.
      
      From-SVN: r280146
      68be73fc
    • David Malcolm's avatar
      Add diagnostic paths · 4bc1899b
      David Malcolm authored
      This patch adds support for associating a "diagnostic_path" with a
      diagnostic: a sequence of events predicted by the compiler that leads to
      the problem occurring, with their locations in the user's source,
      text descriptions, and stack information (for handling interprocedural
      paths).
      
      For example, the following (hypothetical) error has a 3-event
      intraprocedural path:
      
      test.c: In function 'demo':
      test.c:29:5: error: passing NULL as argument 1 to 'PyList_Append' which
        requires a non-NULL parameter
         29 |     PyList_Append(list, item);
            |     ^~~~~~~~~~~~~~~~~~~~~~~~~
        'demo': events 1-3
           |
           |   25 |   list = PyList_New(0);
           |      |          ^~~~~~~~~~~~~
           |      |          |
           |      |          (1) when 'PyList_New' fails, returning NULL
           |   26 |
           |   27 |   for (i = 0; i < count; i++) {
           |      |   ~~~
           |      |   |
           |      |   (2) when 'i < count'
           |   28 |     item = PyLong_FromLong(random());
           |   29 |     PyList_Append(list, item);
           |      |     ~~~~~~~~~~~~~~~~~~~~~~~~~
           |      |     |
           |      |     (3) when calling 'PyList_Append', passing NULL from (1) as argument 1
           |
      
      The patch adds a new "%@" format code for printing event IDs, so that
      in the above, the description of event (3) mentions event (1), showing
      the user where the bogus NULL value comes from (the event IDs are
      colorized to draw the user's attention to them).
      
      There is a separation between data vs presentation: the above shows how
      the diagnostic-printing code has consolidated the path into a single run
      of events, since all the events are near each other and within the same
      function; more complicated examples (such as interprocedural paths)
      might be printed as multiple runs of events.
      
      Examples of how interprocedural paths are printed can be seen in the
      test suite (which uses a plugin to exercise the code without relying
      on specific warnings using this functionality).
      
      Other output formats include
      - JSON,
      - printing each event as a separate "note", and
      - to not emit paths.
      
      gcc/ChangeLog:
      	* Makefile.in (OBJS): Add tree-diagnostic-path.o.
      	* common.opt (fdiagnostics-path-format=): New option.
      	(diagnostic_path_format): New enum.
      	(fdiagnostics-show-path-depths): New option.
      	* coretypes.h (diagnostic_event_id_t): New forward decl.
      	* diagnostic-color.c (color_dict): Add "path".
      	* diagnostic-event-id.h: New file.
      	* diagnostic-format-json.cc (json_from_expanded_location): Make
      	non-static.
      	(json_end_diagnostic): Call context->make_json_for_path if it
      	exists and the diagnostic has a path.
      	(diagnostic_output_format_init): Clear context->print_path.
      	* diagnostic-path.h: New file.
      	* diagnostic-show-locus.c (colorizer::set_range): Special-case
      	when printing a run of events in a diagnostic_path so that they
      	all get the same color.
      	(layout::m_diagnostic_path_p): New field.
      	(layout::layout): Initialize it.
      	(layout::print_any_labels): Don't colorize the label text for an
      	event in a diagnostic_path.
      	(gcc_rich_location::add_location_if_nearby): Add
      	"restrict_to_current_line_spans" and "label" params.  Pass the
      	former to layout.maybe_add_location_range; pass the latter
      	when calling add_range.
      	* diagnostic.c: Include "diagnostic-path.h".
      	(diagnostic_initialize): Initialize context->path_format and
      	context->show_path_depths.
      	(diagnostic_show_any_path): New function.
      	(diagnostic_path::interprocedural_p): New function.
      	(diagnostic_report_diagnostic): Call diagnostic_show_any_path.
      	(simple_diagnostic_path::num_events): New function.
      	(simple_diagnostic_path::get_event): New function.
      	(simple_diagnostic_path::add_event): New function.
      	(simple_diagnostic_event::simple_diagnostic_event): New ctor.
      	(simple_diagnostic_event::~simple_diagnostic_event): New dtor.
      	(debug): New overload taking a diagnostic_path *.
      	* diagnostic.def (DK_DIAGNOSTIC_PATH): New.
      	* diagnostic.h (enum diagnostic_path_format): New enum.
      	(json::value): New forward decl.
      	(diagnostic_context::path_format): New field.
      	(diagnostic_context::show_path_depths): New field.
      	(diagnostic_context::print_path): New callback field.
      	(diagnostic_context::make_json_for_path): New callback field.
      	(diagnostic_show_any_path): New decl.
      	(json_from_expanded_location): New decl.
      	* doc/invoke.texi (-fdiagnostics-path-format=): New option.
      	(-fdiagnostics-show-path-depths): New option.
      	(-fdiagnostics-color): Add "path" to description of default
      	GCC_COLORS; describe it.
      	(-fdiagnostics-format=json): Document how diagnostic paths are
      	represented in the JSON output format.
      	* gcc-rich-location.h (gcc_rich_location::add_location_if_nearby):
      	Add optional params "restrict_to_current_line_spans" and "label".
      	* opts.c (common_handle_option): Handle
      	OPT_fdiagnostics_path_format_ and
      	OPT_fdiagnostics_show_path_depths.
      	* pretty-print.c: Include "diagnostic-event-id.h".
      	(pp_format): Implement "%@" format code for printing
      	diagnostic_event_id_t *.
      	(selftest::test_pp_format): Add tests for "%@".
      	* selftest-run-tests.c (selftest::run_tests): Call
      	selftest::tree_diagnostic_path_cc_tests.
      	* selftest.h (selftest::tree_diagnostic_path_cc_tests): New decl.
      	* toplev.c (general_init): Initialize global_dc->path_format and
      	global_dc->show_path_depths.
      	* tree-diagnostic-path.cc: New file.
      	* tree-diagnostic.c (maybe_unwind_expanded_macro_loc): Make
      	non-static.  Drop "diagnostic" param in favor of storing the
      	original value of "where" and re-using it.
      	(virt_loc_aware_diagnostic_finalizer): Update for dropped param of
      	maybe_unwind_expanded_macro_loc.
      	(tree_diagnostics_defaults): Initialize context->print_path and
      	context->make_json_for_path.
      	* tree-diagnostic.h (default_tree_diagnostic_path_printer): New
      	decl.
      	(default_tree_make_json_for_path): New decl.
      	(maybe_unwind_expanded_macro_loc): New decl.
      
      gcc/c-family/ChangeLog:
      	* c-format.c (local_event_ptr_node): New.
      	(PP_FORMAT_CHAR_TABLE): Add entry for "%@".
      	(init_dynamic_diag_info): Initialize local_event_ptr_node.
      	* c-format.h (T_EVENT_PTR): New define.
      
      gcc/testsuite/ChangeLog:
      	* gcc.dg/format/gcc_diag-10.c (diagnostic_event_id_t): New
      	typedef.
      	(test_diag): Add coverage of "%@".
      	* gcc.dg/plugin/diagnostic-path-format-default.c: New test.
      	* gcc.dg/plugin/diagnostic-path-format-inline-events-1.c: New test.
      	* gcc.dg/plugin/diagnostic-path-format-inline-events-2.c: New test.
      	* gcc.dg/plugin/diagnostic-path-format-inline-events-3.c: New test.
      	* gcc.dg/plugin/diagnostic-path-format-none.c: New test.
      	* gcc.dg/plugin/diagnostic-test-paths-1.c: New test.
      	* gcc.dg/plugin/diagnostic-test-paths-2.c: New test.
      	* gcc.dg/plugin/diagnostic-test-paths-3.c: New test.
      	* gcc.dg/plugin/diagnostic-test-paths-4.c: New test.
      	* gcc.dg/plugin/diagnostic_plugin_test_paths.c: New.
      	* gcc.dg/plugin/plugin.exp: Add the new plugin and test cases.
      
      libcpp/ChangeLog:
      	* include/line-map.h (class diagnostic_path): New forward decl.
      	(rich_location::get_path): New accessor.
      	(rich_location::set_path): New function.
      	(rich_location::m_path): New field.
      	* line-map.c (rich_location::rich_location): Initialize m_path.
      
      From-SVN: r280142
      4bc1899b
    • Jakub Jelinek's avatar
      re PR tree-optimization/93210 (Sub-optimal code optimization on... · ea69031c
      Jakub Jelinek authored
      re PR tree-optimization/93210 (Sub-optimal code optimization on struct/combound constexpr (gcc vs. clang))
      
      	PR tree-optimization/93210
      	* fold-const.h (native_encode_initializer,
      	can_native_interpret_type_p): Declare.
      	* fold-const.c (native_encode_string): Fix up handling with off != -1,
      	simplify.
      	(native_encode_initializer): New function, moved from dwarf2out.c.
      	Adjust to native_encode_expr compatible arguments, including dry-run
      	and partial extraction modes.  Don't handle STRING_CST.
      	(can_native_interpret_type_p): No longer static.
      	* gimple-fold.c (fold_ctor_reference): For native_encode_expr, verify
      	offset / BITS_PER_UNIT fits into int and don't call it if
      	can_native_interpret_type_p fails.  If suboff is NULL and for
      	CONSTRUCTOR fold_{,non}array_ctor_reference returns NULL, retry with
      	native_encode_initializer.
      	(fold_const_aggregate_ref_1): Formatting fix.
      	* dwarf2out.c (native_encode_initializer): Moved to fold-const.c.
      	(tree_add_const_value_attribute): Adjust caller.
      
      	* gcc.dg/pr93210.c: New test.
      	* g++.dg/opt/pr93210.C: New test.
      
      From-SVN: r280141
      ea69031c
    • Jakub Jelinek's avatar
      re PR tree-optimization/90838 (Detect table-based ctz implementation) · 974bb8a4
      Jakub Jelinek authored
      	PR tree-optimization/90838
      	* tree-ssa-forwprop.c (simplify_count_trailing_zeroes): Use
      	SCALAR_INT_TYPE_MODE instead of TYPE_MODE as operand of
      	CTZ_DEFINED_VALUE_AT_ZERO.
      
      From-SVN: r280140
      974bb8a4
    • Vladimir Makarov's avatar
      re PR inline-asm/93027 (ICE: in match_reload, at lra-constraints.c:1060) · a29a9962
      Vladimir Makarov authored
      2020-01-10  Vladimir Makarov  <vmakarov@redhat.com>
      
      	PR inline-asm/93027
      	* gcc.target/i386/pr93027.c: Use the right PR number in the test.
      
      From-SVN: r280138
      a29a9962
    • Jakub Jelinek's avatar
      re PR libgomp/93219 (unused return value in affinity-fmt.c) · 91df4397
      Jakub Jelinek authored
      	PR libgomp/93219
      	* libgomp.h (gomp_print_string): Change return type from void to int.
      	* affinity-fmt.c (gomp_print_string): Likewise.  Return true if
      	not all characters have been written.
      
      From-SVN: r280137
      91df4397
    • Vladimir Makarov's avatar
      Rename pr93207.c to pr93027.c. Fix PR number in change logs. · 530cfcd7
      Vladimir Makarov authored
      From-SVN: r280136
      530cfcd7
    • Vladimir Makarov's avatar
      re PR inline-asm/93027 (ICE: in match_reload, at lra-constraints.c:1060) · 6f9dc606
      Vladimir Makarov authored
      2020-01-10  Vladimir Makarov  <vmakarov@redhat.com>
      
      	PR inline-asm/93207
      	* gcc.target/i386/pr93207.c: Run it only for x86-64.
      
      From-SVN: r280135
      6f9dc606
    • David Malcolm's avatar
      testsuite: add dg-enable-nn-line-numbers · 83f604e7
      David Malcolm authored
      This patch adds support for obscuring the line numbers printed in the
      left-hand margin when printing the source code, converting them to "NN",
      e.g from:
      
        7111 |   if (!(flags & 0x0001)) {
             |      ^
             |      |
             |      (1) following 'true' branch...
        7112 |
      
      to:
      
         NN  |   if (!(flags & 0x0001)) {
             |      ^
             |      |
             |      (1) following 'true' branch...
         NN  |
      
      This is useful in followup patches e.g. when testing how interprocedural
      paths are printed using multiline.exp, to avoid depending on precise line
      numbers.
      
      gcc/testsuite/ChangeLog:
      	* lib/gcc-dg.exp (cleanup-after-saved-dg-test): Reset global
      	nn_line_numbers_enabled.
      	* lib/multiline.exp (nn_line_numbers_enabled): New global.
      	(dg-enable-nn-line-numbers): New proc.
      	(maybe-handle-nn-line-numbers): New proc.
      	* lib/prune.exp (prune_gcc_output): Call maybe-handle-nn-line-numbers.
      
      From-SVN: r280134
      83f604e7
    • Vladimir Makarov's avatar
      re PR inline-asm/93027 (ICE: in match_reload, at lra-constraints.c:1060) · 60257913
      Vladimir Makarov authored
      2020-01-10  Vladimir Makarov  <vmakarov@redhat.com>
      
      	PR inline-asm/93207
      	* lra-constraints.c (match_reload): Permit input operands have the
      	same mode as output while other input operands have a different
      	mode.
      
      2020-01-10  Vladimir Makarov  <vmakarov@redhat.com>
      
      	PR inline-asm/93207
      	* gcc.target/i386/pr93207.c: New test.
      
      From-SVN: r280133
      60257913
    • Wilco Dijkstra's avatar
      PR90838: Support ctz idioms · b937050d
      Wilco Dijkstra authored
      Support common idioms for count trailing zeroes using an array lookup.
      The canonical form is array[((x & -x) * C) >> SHIFT] where C is a magic
      constant which when multiplied by a power of 2 creates a unique value
      in the top 5 or 6 bits.  This is then indexed into a table which maps it
      to the number of trailing zeroes.  When the table is valid, we emit a
      sequence using the target defined value for ctz (0):
      
      int ctz1 (unsigned x)
      {
        static const char table[32] =
          {
            0, 1, 28, 2, 29, 14, 24, 3, 30, 22, 20, 15, 25, 17, 4, 8,
            31, 27, 13, 23, 21, 19, 16, 7, 26, 12, 18, 6, 11, 5, 10, 9
          };
      
        return table[((unsigned)((x & -x) * 0x077CB531U)) >> 27];
      }
      
      Is optimized to:
      
      	rbit	w0, w0
      	clz	w0, w0
      	and	w0, w0, 31
      	ret
      
          gcc/
      	PR tree-optimization/90838
      	* tree-ssa-forwprop.c (check_ctz_array): Add new function.
      	(check_ctz_string): Likewise.
      	(optimize_count_trailing_zeroes): Likewise.
      	(simplify_count_trailing_zeroes): Likewise.
      	(pass_forwprop::execute): Try ctz simplification.
      	* match.pd: Add matching for ctz idioms.
      
          testsuite/
      	PR tree-optimization/90838
      	* testsuite/gcc.target/aarch64/pr90838.c: New test.
      
      From-SVN: r280132
      b937050d
    • Stam Markianos-Wright's avatar
      aarch64.c (aarch64_invalid_conversion): New function for target hook. · 98698967
      Stam Markianos-Wright authored
      gcc/ChangeLog:
      
      2020-01-10  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
      
      	* config/aarch64/aarch64.c (aarch64_invalid_conversion): New function
      	for target hook.
      	(aarch64_invalid_unary_op): New function for target hook.
      	(aarch64_invalid_binary_op): New function for target hook.
      
      gcc/testsuite/ChangeLog:
      
      2020-01-10  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
      
      	* g++.target/aarch64/bfloat_cpp_typecheck.C: New test.
      	* gcc.target/aarch64/bfloat16_scalar_typecheck.c: New test.
      	* gcc.target/aarch64/bfloat16_vector_typecheck_1.c: New test.
      	* gcc.target/aarch64/bfloat16_vector_typecheck_2.c: New test.
      
      From-SVN: r280130
      98698967
    • Stam Markianos-Wright's avatar
      config.gcc: Add arm_bf16.h. · abbe1ed2
      Stam Markianos-Wright authored
      2020-01-10  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
      
      	* config.gcc: Add arm_bf16.h.
      	* config/aarch64/aarch64-builtins.c
      	(aarch64_simd_builtin_std_type): Add BFmode.
      	(aarch64_init_simd_builtin_types): Define element types for vector
      	types.
      	(aarch64_init_bf16_types): New function.
      	(aarch64_general_init_builtins): Add arm_init_bf16_types function call.
      	* config/aarch64/aarch64-modes.def: Add BFmode and V4BF, V8BF vector
      	modes.
      	* config/aarch64/aarch64-simd-builtin-types.def: Add BF SIMD types.
      	* config/aarch64/aarch64-simd.md: Add BF vector types to NEON move
      	patterns.
      	* config/aarch64/aarch64.h (AARCH64_VALID_SIMD_DREG_MODE): Add V4BF.
      	(AARCH64_VALID_SIMD_QREG_MODE): Add V8BF.
      	* config/aarch64/aarch64.c
      	(aarch64_classify_vector_mode): Add support for BF types.
      	(aarch64_gimplify_va_arg_expr): Add support for BF types.
      	(aarch64_vq_mode): Add support for BF types.
      	(aarch64_simd_container_mode): Add support for BF types.
      	(aarch64_mangle_type): Add support for BF scalar type.
      	* config/aarch64/aarch64.md: Add BFmode to movhf pattern.
      	* config/aarch64/arm_bf16.h: New file.
      	* config/aarch64/arm_neon.h: Add arm_bf16.h and Bfloat vector types.
      	* config/aarch64/iterators.md: Add BF types to mode attributes.
      	(HFBF, GPF_TF_F16_MOV, VDMOV, VQMOV, VQMOV_NO2Em VALL_F16MOV): New.
      
      2020-01-10  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
      
      	* g++.dg/abi/mangle-neon-aarch64.C: Add Bfloat SIMD types to test.
      	* g++.dg/ext/arm-bf16/bf16-mangle-aarch64-1.C: New test.
      	* gcc.target/aarch64/bfloat16_scalar_1.c: New test.
      	* gcc.target/aarch64/bfloat16_scalar_2.c: New test.
      	* gcc.target/aarch64/bfloat16_scalar_3.c: New test.
      	* gcc.target/aarch64/bfloat16_scalar_4.c: New test.
      	* gcc.target/aarch64/bfloat16_simd_1.c: New test.
      	* gcc.target/aarch64/bfloat16_simd_2.c: New test.
      	* gcc.target/aarch64/bfloat16_simd_3.c: New test.
      
      From-SVN: r280129
      abbe1ed2
    • Jason Merrill's avatar
      Shorten right-shift again in C++. · 337ea6b2
      Jason Merrill authored
      Back in SVN r131862 richi removed this code to fix PR 34235, but didn't
      remove the parallel code from the C front-end because the bug had previously
      been fixed in r44080.  This patch copies the code from C again.
      
      	* typeck.c (cp_build_binary_op): Restore short_shift code.
      
      From-SVN: r280128
      337ea6b2
    • Jason Merrill's avatar
      PR c++/93143 - incorrect tree sharing with constexpr. · e0804c9b
      Jason Merrill authored
      We don't unshare CONSTRUCTORs as often during constexpr evaluation, so we
      need to unshare them here.
      
      	* constexpr.c (cxx_eval_outermost_constant_expr): Don't assume
      	CONSTRUCTORs are already unshared.
      
      From-SVN: r280127
      e0804c9b
    • Jason Merrill's avatar
      PR c++/93173 - incorrect tree sharing. · 640b23d7
      Jason Merrill authored
      My patch for 93033 wasn't sufficient to handle all the possible sharing
      introduced by split_nonconstant_init, and it occurred to me that it would
      make sense to use the same unsharing technique as unshare_body, namely
      copy_if_shared.
      
      	PR c++/93033
      gcc/
      	* gimplify.c (copy_if_shared): No longer static.
      	* gimplify.h: Declare it.
      gcc/cp/
      	* cp-gimplify.c (cp_gimplify_init_expr, cp_gimplify_expr): Use
      	copy_if_shared after cp_genericize_tree.
      	* typeck2.c (split_nonconstant_init): Don't unshare here.
      
      From-SVN: r280126
      640b23d7
    • Richard Sandiford's avatar
      [AArch64] Make -msve-vector-bits=128 generate VL-specific code · 9b070057
      Richard Sandiford authored
      related_vector_mode and compatible_vector_types_p make it possible
      to generate 128-bit SVE code while still maintaining the distinction
      between SVE vectors and Advanced SIMD vectors.  We can therefore generate
      VL-specific code for -msve-vector-bits=128 on little-endian targets.
      In theory we could do the same for big-endian targets, but it could
      have quite a high overhead; see the comment in the patch for details.
      
      2020-01-10  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* doc/invoke.texi (-msve-vector-bits=): Document that
      	-msve-vector-bits=128 now generates VL-specific code for
      	little-endian targets.
      	* config/aarch64/aarch64-sve-builtins.cc (register_builtin_types): Use
      	build_vector_type_for_mode to construct the data vector types.
      	* config/aarch64/aarch64.c (aarch64_convert_sve_vector_bits): Generate
      	VL-specific code for -msve-vector-bits=128 on little-endian targets.
      	(aarch64_simd_container_mode): Always prefer Advanced SIMD modes
      	for 128-bit vectors.
      
      gcc/testsuite/
      	* gcc.target/aarch64/sve/struct_vect_1.c (N): Protect with #ifndef.
      	* gcc.target/aarch64/sve/pcs/return_1_128.c: New test.
      	* gcc.target/aarch64/sve/pcs/return_4_128.c: Likewise.
      	* gcc.target/aarch64/sve/pcs/return_5_128.c: Likewise.
      	* gcc.target/aarch64/sve/pcs/return_6_128.c: Likewise.
      	* gcc.target/aarch64/sve/pcs/stack_clash_1_128.c: Likewise.
      	* gcc.target/aarch64/sve/pcs/stack_clash_2_128.c: Likewise.
      	* gcc.target/aarch64/sve/single_5.c: Likewise.
      	* gcc.target/aarch64/sve/struct_vect_25.c: Likewise.
      	* gcc.target/aarch64/sve/struct_vect_26.c: Likewise.
      
      From-SVN: r280125
      9b070057
    • Martin Sebor's avatar
      PR c/93132 - bogus 'attribute((access))' warning when size-index is specified · f25e33fa
      Martin Sebor authored
      gcc/c-family/ChangeLog:
      
      	PR c/93132
      	* c-attribs.c (append_access_attrs): Validate against the translated
      	access string rather than the human-readable representation.
      
      gcc/testsuite/ChangeLog:
      
      	PR c/93132
      	* gcc.dg/attr-access-read-only-2.c: New test.
      
      From-SVN: r280124
      f25e33fa
    • Richard Sandiford's avatar
      [AArch64] Fix reversed vcond_mask invocation in aarch64_evpc_sel · b2f5b380
      Richard Sandiford authored
      aarch64_evpc_sel (new in GCC 10) got the true and false vectors
      the wrong way round, leading to execution failures with fixed-length
      128-bit SVE.
      
      Now that the ACLE types are in trunk, it's much easier to match
      the exact asm sequence for a permute.
      
      2020-01-10  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* config/aarch64/aarch64.c (aarch64_evpc_sel): Fix gen_vcond_mask
      	invocation.
      
      gcc/testsuite/
      	* gcc.target/aarch64/sve/sel_1.c: Use SVE types for the arguments and
      	return values.  Use check-function-bodies instead of scan-assembler.
      	* gcc.target/aarch64/sve/sel_2.c: Likewise
      	* gcc.target/aarch64/sve/sel_3.c: Likewise.
      
      From-SVN: r280121
      b2f5b380
    • Ian Lance Taylor's avatar
      gotest: don't use local · 3a33f87f
      Ian Lance Taylor authored
          
          It's not part of the POSIX shell standard.
          
          Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/214300
      
      From-SVN: r280118
      3a33f87f
    • Jonathan Wakely's avatar
      libstdc++: Fix testcase for C++98 compatibility · 78f02e80
      Jonathan Wakely authored
      	* testsuite/25_algorithms/equal/deque_iterators/1.cc: Don't use C++11
      	initialization syntax.
      
      From-SVN: r280117
      78f02e80
    • Jonathan Wakely's avatar
      libstdc++: Make istreambuf_iterator base class consistent (PR92285) · 7918cb93
      Jonathan Wakely authored
      Since LWG 445 was implemented for GCC 4.7, the std::iterator base class
      of std::istreambuf_iterator changes type depending on the -std mode
      used. This creates an ABI incompatibility between different -std modes.
      
      This change ensures the base class always has the same type. This makes
      layout for C++98 compatible with the current -std=gnu++14 default, but
      no longer compatible with C++98 code from previous releases. In practice
      this is unlikely to cause real problems, because it only affects the
      layout of types with two std::iterator base classes, one of which comes
      from std::istreambuf_iterator. Such types are expected to be vanishingly
      rare.
      
      	PR libstdc++/92285
      	* include/bits/streambuf_iterator.h (istreambuf_iterator): Make type
      	of base class independent of __cplusplus value.
      	[__cplusplus < 201103L] (istreambuf_iterator::reference): Override the
      	type defined in the base class
      	* testsuite/24_iterators/istreambuf_iterator/92285.cc: New test.
      	* testsuite/24_iterators/istreambuf_iterator/requirements/
      	base_classes.cc: Adjust expected base class for C++98.
      
      From-SVN: r280116
      7918cb93
    • Tobias Burnus's avatar
      OpenACC – support "if" + "if_present" clauses with "host_data" · d5c23c6c
      Tobias Burnus authored
      2020-01-10  Gergö Barany  <gergo@codesourcery.com>
      	    Thomas Schwinge <thomas@codesourcery.com>
      	    Julian Brown  <julian@codesourcery.com>
      	    Tobias Burnus  <tobias@codesourcery.com>
      
              gcc/c/
              * c-parser.c (OACC_HOST_DATA_CLAUSE_MASK): Add PRAGMA_OACC_CLAUSE_IF
              and PRAGMA_OACC_CLAUSE_IF_PRESENT.
      
              gcc/cp/
              * parser.c (OACC_HOST_DATA_CLAUSE_MASK): Add PRAGMA_OACC_CLAUSE_IF
              and PRAGMA_OACC_CLAUSE_IF_PRESENT.
      
              gcc/fortran/
              * openmp.c (OACC_HOST_DATA_CLAUSES): Add PRAGMA_OACC_CLAUSE_IF
              and PRAGMA_OACC_CLAUSE_IF_PRESENT.
      
      	gcc/
      	* omp-low.c (lower_omp_target): Use GOMP_MAP_USE_DEVICE_PTR_IF_PRESENT
      	if PRAGMA_OACC_CLAUSE_IF_PRESENT exist.
      
      	gcc/testsuite/
      	* c-c++-common/goacc/host_data-1.c: Added tests of if and if_present
      	clauses on host_data.
      	* gfortran.dg/goacc/host_data-tree.f95: Likewise.
      
      	include/
      	* gomp-constants.h (enum gomp_map_kind): New enumeration constant
      	GOMP_MAP_USE_DEVICE_PTR_IF_PRESENT.
              
      	libgomp/
      	* oacc-parallel.c (GOACC_data_start): Handle
      	GOMP_MAP_USE_DEVICE_PTR_IF_PRESENT.
      	* target.c (gomp_map_vars_async): Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/host_data-7.c: New.
      	* testsuite/libgomp.oacc-fortran/host_data-5.F90: New.
      
      From-SVN: r280115
      d5c23c6c
    • Richard Sandiford's avatar
      [AArch64] Tighten mode checks in aarch64_builtin_vectorized_function · 7cee9637
      Richard Sandiford authored
      aarch64_builtin_vectorized_function checked vectors based on the
      number of elements and the element mode.  This doesn't interact
      well with fixed-length 128-bit SVE, where SVE modes can have those
      same properties.  (And we can't just use the built-ins for SVE because
      the types use a different ABI.  SVE handles this kind of thing using
      optabs instead.)
      
      2020-01-10  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* config/aarch64/aarch64-builtins.c
      	(aarch64_builtin_vectorized_function): Check for specific vector modes,
      	rather than checking the number of elements and the element mode.
      
      From-SVN: r280114
      7cee9637
    • Richard Sandiford's avatar
      Use get_related_vectype_for_scalar_type for reduction indices · d29c7f60
      Richard Sandiford authored
      The related_vector_mode series missed this case in
      vect_create_epilog_for_reduction, where we want to create the
      unsigned integer equivalent of another vector.  Without it we
      could mix SVE and Advanced SIMD vectors in the same operation.
      
      This showed up on existing tests when testing with fixed-length
      -msve-vector-bits=128.
      
      2020-01-10  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* tree-vect-loop.c (vect_create_epilog_for_reduction): Use
      	get_related_vectype_for_scalar_type rather than build_vector_type
      	to create the index type for a conditional reduction.
      
      From-SVN: r280112
      d29c7f60
    • Richard Sandiford's avatar
      Fix gather/scatter check when updating a vector epilogue loop · ac190fce
      Richard Sandiford authored
      update_epilogue_loop_vinfo applies SSA renmaing to the DR_REF of a
      gather or scatter, so that vect_check_gather_scatter continues to work.
      However, we sometimes also rely on vect_check_gather_scatter when
      using gathers and scatters to implement strided accesses.
      
      This showed up on existing tests when testing with fixed-length
      -msve-vector-bits=128.
      
      2020-01-10  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* tree-vect-loop.c (update_epilogue_loop_vinfo): Update DR_REF
      	for any type of gather or scatter, including strided accesses.
      
      From-SVN: r280111
      ac190fce
    • Ian Lance Taylor's avatar
      compiler: permit duplicate methods from embedded interfaces · 2fb672a2
      Ian Lance Taylor authored
          
          This is a language change for Go 1.14.
          
          Updates golang/go#6977
          
          Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/214240
      
      From-SVN: r280109
      2fb672a2
Loading