Skip to content
Snippets Groups Projects
  1. Jan 15, 2021
  2. Jan 14, 2021
    • David Malcolm's avatar
      jit: remove "Alpha" warning from docs · b95d97f1
      David Malcolm authored
      I removed the "Alpha" warning from the JIT wiki page on
      2020-05-18:
        https://gcc.gnu.org/wiki/JIT?action=diff&rev1=47&rev2=48
      but forgot to remove it from the documentation, which this
      patch does.
      
      gcc/jit/ChangeLog:
      	* docs/cp/index.rst: Remove "Alpha" warning.
      	* docs/index.rst: Likewise.
      	* docs/_build/texinfo/libgccjit.texi: Regenerate
      b95d97f1
    • Jason Merrill's avatar
      c++: Minor refactoring in process_init_constructor_record · f1fc27b6
      Jason Merrill authored
      This function had two different local variables for TREE_TYPE (field), one
      of which shadowed a parameter, and wasn't using them consistently.
      
      gcc/cp/ChangeLog:
      
      	* typeck2.c (process_init_constructor_record): Use fldtype
      	variable consistently.
      f1fc27b6
    • David Malcolm's avatar
      Handle fancy_abort before diagnostic initialization [PR98586] · 387f6c15
      David Malcolm authored
      If fancy_abort is called before the diagnostic subsystem is initialized,
      internal_error will crash internally in a way that prevents a useful
      message reaching the user.
      
      This can happen with libgccjit in the case of gcc_assert failures
      that occur outside of the libgccjit mutex that guards the rest of
      gcc's state, including global_dc (when global_dc may not be
      initialized yet, or might be in use by another thread).
      
      I tried a few approaches to fixing this as noted in PR jit/98586
      e.g. using a temporary diagnostic_context and initializing it for
      the call to internal_error, however the more code that runs, the
      more chance there is for other errors to occur.
      
      The best fix appears to be to simply fall back to a minimal abort
      implementation that only relies on i18n, as implemented by this
      patch.
      
      gcc/ChangeLog:
      	PR jit/98586
      	* diagnostic.c (diagnostic_kind_text): Break out this array
      	from...
      	(diagnostic_build_prefix): ...here.
      	(fancy_abort): Detect when diagnostic_initialize has not yet been
      	called and fall back to a minimal implementation of printing the
      	ICE, rather than segfaulting in internal_error.
      387f6c15
    • François Dumont's avatar
      libstdc++: Implement N3644 for _GLIBCXX_DEBUG iterators · 02e7af11
      François Dumont authored
      libstdc++-v3/ChangeLog:
      
      	* testsuite/23_containers/deque/debug/98466.cc: Make it pre-C++11
      	compliant.
      02e7af11
    • David Malcolm's avatar
      Add GCC_EXTRA_DIAGNOSTIC_OUTPUT environment variable for fix-it hints · f1096055
      David Malcolm authored
      GCC has had the ability to emit fix-it hints in machine-readable form
      since GCC 7 via -fdiagnostics-parseable-fixits and
      -fdiagnostics-generate-patch.
      
      The former emits additional specially-formatted lines to stderr; the
      option and its format were directly taken from a pre-existing option
      in clang.
      
      Ideally this could be used by IDEs so that the user can select specific
      fix-it hints and have the IDE apply them to the user's source code
      (perhaps turning them into clickable elements, perhaps with an
      "Apply All" option, etc).  Eclipse CDT has supported this option in
      this way for a few years:
        https://bugs.eclipse.org/bugs/show_bug.cgi?id=497670
      
      As a user of Emacs I would like Emacs to support such a feature.
      https://debbugs.gnu.org/cgi/bugreport.cgi?bug=25987 tracks supporting
      GCC fix-it output in Emacs.  The discussion there identifies two issues
      with the existing option:
      
      (a) columns in the output are specified as byte-offsets within the
      line (for exact compatibility with the option in clang), whereas emacs
      would prefer to consume them as what GCC 11 calls "display columns".
      https://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-column-unit
      
      (b) injecting a command-line option into the build is a fiddly manual
      step, varying between build systems.  It's far easier for the
      user if Emacs simply sets an environment variable when compiling,
      GCC uses this to enable the option if it recognizes the value, and
      the emacs compilation buffer decodes the additional lines of output
      and adds appropriate widgets.  In some ways it is a workaround for
      not having a language server.  Doing it this way means that for the
      various combinations of older and newer GCC and older and newer Emacs
      that a sufficiently modern combination of both can automatically
      support the rich fix-it UI, whereas other combinations will either
      not provide the envvar, or silently ignore it, gracefully doing
      nothing extra.
      
      Hence this patch adds a new GCC_EXTRA_DIAGNOSTIC_OUTPUT environment
      variable to GCC which enables output of machine-parseable fix-it hints.
      
      GCC_EXTRA_DIAGNOSTIC_OUTPUT=fixits-v1 is equivalent to the existing
      -fdiagnostics-parseable-fixits option.
      
      GCC_EXTRA_DIAGNOSTIC_OUTPUT=fixits-v2 is the same, but changes the
      column output mode to "display columns" rather than bytes, as
      required by Emacs.
      
      The discussion in that Emacs bug has some concerns about the encoding
      of these lines, and, indeed, the encoding of GCC's stderr in general:
      currently we emit a mixture of bytes and UTF-8; I believe we emit
      filenames as bytes, diagnostic messages as UTF-8, and quote source code
      in the original encoding (PR other/93067 covers converting it to UTF-8 on
      output).  This patch prints octal-escaped bytes for bytes within
      filenames and replacement text that aren't printable (as per
      -fdiagnostics-parseable-fixits).
      
      gcc/ChangeLog:
      	* diagnostic.c (diagnostic_initialize): Eliminate
      	parseable_fixits_p in favor of initializing extra_output_kind from
      	GCC_EXTRA_DIAGNOSTIC_OUTPUT.
      	(convert_column_unit): New function, split out from...
      	(diagnostic_converted_column): ...this.
      	(print_parseable_fixits): Add "column_unit" and "tabstop" params.
      	Use them to call convert_column_unit on the column values.
      	(diagnostic_report_diagnostic): Eliminate conditional on
      	parseable_fixits_p in favor of a switch statement on
      	extra_output_kind, passing the appropriate values to the new
      	params of print_parseable_fixits.
      	(selftest::test_print_parseable_fixits_none): Update for new
      	params of print_parseable_fixits.
      	(selftest::test_print_parseable_fixits_insert): Likewise.
      	(selftest::test_print_parseable_fixits_remove): Likewise.
      	(selftest::test_print_parseable_fixits_replace): Likewise.
      	(selftest::test_print_parseable_fixits_bytes_vs_display_columns):
      	New.
      	(selftest::diagnostic_c_tests): Call it.
      	* diagnostic.h (enum diagnostics_extra_output_kind): New.
      	(diagnostic_context::parseable_fixits_p): Delete field in favor
      	of...
      	(diagnostic_context::extra_output_kind): ...this new field.
      	* doc/invoke.texi (Environment Variables): Add
      	GCC_EXTRA_DIAGNOSTIC_OUTPUT.
      	* opts.c (common_handle_option): Update handling of
      	OPT_fdiagnostics_parseable_fixits for change to diagnostic_context
      	fields.
      
      gcc/testsuite/ChangeLog:
      	* gcc.dg/plugin/diagnostic-test-show-locus-GCC_EXTRA_DIAGNOSTIC_OUTPUT-fixits-v1.c:
      	New file.
      	* gcc.dg/plugin/diagnostic-test-show-locus-GCC_EXTRA_DIAGNOSTIC_OUTPUT-fixits-v2.c:
      	New file.
      	* gcc.dg/plugin/plugin.exp (plugin_test_list): Add them.
      f1096055
    • Tamar Christina's avatar
      slp: Add Tests for complex mul, mls and mla" · 59832db9
      Tamar Christina authored
      This adds the initial tests for the complex mul, mls and mla.
      These will be enabled in the commits that add the optabs.
      
      Committed as obvious variations of existing tests.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.dg/vect/complex/complex-mla-template.c: New test.
      	* gcc.dg/vect/complex/complex-mls-template.c: New test.
      	* gcc.dg/vect/complex/complex-mul-template.c: New test.
      	* gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-double.c: New test.
      	* gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-float.c: New test.
      	* gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-half-float.c: New test.
      	* gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-double.c: New test.
      	* gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-float.c: New test.
      	* gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-half-float.c: New test.
      	* gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-double.c: New test.
      	* gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-float.c: New test.
      	* gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-half-float.c: New test.
      	* gcc.dg/vect/complex/fast-math-complex-mla-double.c: New test.
      	* gcc.dg/vect/complex/fast-math-complex-mla-float.c: New test.
      	* gcc.dg/vect/complex/fast-math-complex-mla-half-float.c: New test.
      	* gcc.dg/vect/complex/fast-math-complex-mls-double.c: New test.
      	* gcc.dg/vect/complex/fast-math-complex-mls-float.c: New test.
      	* gcc.dg/vect/complex/fast-math-complex-mls-half-float.c: New test.
      	* gcc.dg/vect/complex/fast-math-complex-mul-double.c: New test.
      	* gcc.dg/vect/complex/fast-math-complex-mul-float.c: New test.
      	* gcc.dg/vect/complex/fast-math-complex-mul-half-float.c: New test.
      59832db9
    • Tamar Christina's avatar
      slp: Add complex operations class to share first match among all matchers · b50df1e7
      Tamar Christina authored
      This introduces a common class complex_operations_pattern which encapsulates
      the complex add, mul, fma and fms pattern in such a way so that the first match
      is shared.
      
      gcc/ChangeLog:
      
      	* tree-vect-slp-patterns.c (class complex_operations_pattern,
      	complex_operations_pattern::matches,
      	complex_operations_pattern::recognize,
      	complex_operations_pattern::build): New.
      	(slp_patterns): Use it.
      b50df1e7
    • Tamar Christina's avatar
      slp: support complex FMS and complex FMS conjugate · 478e571a
      Tamar Christina authored
      This adds support for FMS and FMS conjugated to the slp pattern matcher.
      
      Example of matches:
      
      #include <stdio.h>
      #include <complex.h>
      
      #define N 200
      #define ROT
      #define TYPE float
      #define TYPE2 float
      
      void g (TYPE2 complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
      {
        for (int i=0; i < N; i++)
          {
            c[i] -=  a[i] * (b[i] ROT);
          }
      }
      
      void g_f1 (TYPE2 complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
      {
        for (int i=0; i < N; i++)
          {
            c[i] -=  conjf (a[i]) * (b[i]);
          }
      }
      
      void g_s1 (TYPE2 complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
      {
        for (int i=0; i < N; i++)
          {
            c[i] -=  a[i] * conjf (b[i] ROT);
          }
      }
      
      void caxpy_sub(double complex * restrict y, double complex * restrict x, size_t N, double complex f) {
        for (size_t i = 0; i < N; ++i)
          y[i] -= x[i]* f;
      }
      
      gcc/ChangeLog:
      
      	* internal-fn.def (COMPLEX_FMS, COMPLEX_FMS_CONJ): New.
      	* optabs.def (cmls_optab, cmls_conj_optab): New.
      	* doc/md.texi: Document them.
      	* tree-vect-slp-patterns.c (class complex_fms_pattern,
      	complex_fms_pattern::matches, complex_fms_pattern::recognize,
      	complex_fms_pattern::build): New.
      478e571a
    • Tamar Christina's avatar
      slp: support complex FMA and complex FMA conjugate · 31fac318
      Tamar Christina authored
      This adds support for FMA and FMA conjugated to the slp pattern matcher.
      
      Example of instructions matched:
      
      #include <stdio.h>
      #include <complex.h>
      
      #define N 200
      #define ROT
      #define TYPE float
      #define TYPE2 float
      
      void g (TYPE2 complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
      {
        for (int i=0; i < N; i++)
          {
            c[i] +=  a[i] * (b[i] ROT);
          }
      }
      
      void g_f1 (TYPE2 complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
      {
        for (int i=0; i < N; i++)
          {
            c[i] +=  conjf (a[i]) * (b[i] ROT);
          }
      }
      
      void g_s1 (TYPE2 complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
      {
        for (int i=0; i < N; i++)
          {
            c[i] +=  a[i] * conjf (b[i] ROT);
          }
      }
      
      void caxpy_add(double complex * restrict y, double complex * restrict x, size_t N, double complex f) {
        for (size_t i = 0; i < N; ++i)
          y[i] += x[i]* f;
      }
      
      gcc/ChangeLog:
      
      	* internal-fn.def (COMPLEX_FMA, COMPLEX_FMA_CONJ): New.
      	* optabs.def (cmla_optab, cmla_conj_optab): New.
      	* doc/md.texi: Document them.
      	* tree-vect-slp-patterns.c (vect_match_call_p,
      	class complex_fma_pattern, vect_slp_reset_pattern,
      	complex_fma_pattern::matches, complex_fma_pattern::recognize,
      	complex_fma_pattern::build): New.
      31fac318
    • Tamar Christina's avatar
      slp: support complex multiply and complex multiply conjugate · e09173d8
      Tamar Christina authored
      This adds support for complex multiply and complex multiply and accumulate to
      the vect pattern detector.
      
      Example of instructions matched:
      
      #include <stdio.h>
      #include <complex.h>
      
      #define N 200
      #define ROT
      #define TYPE float
      #define TYPE2 float
      
      void g (TYPE2 complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
      {
        for (int i=0; i < N; i++)
          {
            c[i] =  a[i] * (b[i] ROT);
          }
      }
      
      void g_f1 (TYPE2 complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
      {
        for (int i=0; i < N; i++)
          {
            c[i] =  conjf (a[i]) * (b[i] ROT);
          }
      }
      
      void g_s1 (TYPE2 complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
      {
        for (int i=0; i < N; i++)
          {
            c[i] =  a[i] * conjf (b[i] ROT);
          }
      }
      
      gcc/ChangeLog:
      
      	* internal-fn.def (COMPLEX_MUL, COMPLEX_MUL_CONJ): New.
      	* optabs.def (cmul_optab, cmul_conj_optab): New.
      	* doc/md.texi: Document them.
      	* tree-vect-slp-patterns.c (vect_match_call_complex_mla,
      	vect_normalize_conj_loc, is_eq_or_top, vect_validate_multiplication,
      	vect_build_combine_node, class complex_mul_pattern,
      	complex_mul_pattern::matches, complex_mul_pattern::recognize,
      	complex_mul_pattern::build): New.
      e09173d8
    • Tamar Christina's avatar
      slp: Support optimizing load distribution · 500600c7
      Tamar Christina authored
      This introduces a post processing step for the pattern matcher to flatten
      permutes introduced by the complex multiplications patterns.
      
      This performs a blend early such that SLP is not cancelled by the LOAD_LANES
      permute.  This is a temporary workaround to the fact that loads are not CSEd
      during building and is required to produce efficient code.
      
      gcc/ChangeLog:
      
      	* tree-vect-slp.c (optimize_load_redistribution_1): New.
      	(optimize_load_redistribution, vect_is_slp_load_node): New.
      	(vect_match_slp_patterns): Use it.
      500600c7
    • Tamar Christina's avatar
      slp: elide intermediate nodes for complex add and avoid truncate · fe701195
      Tamar Christina authored
      This applies the same feedback received for MUL and the rest to
      ADD which was already committed.  In short it elides the intermediate
      nodes vec and avoids the use of truncate on the SLP child.
      
      gcc/ChangeLog:
      
      	* tree-vect-slp-patterns.c (complex_add_pattern::build):
      	Elide nodes.
      fe701195
    • David Malcolm's avatar
      analyzer: fixes to -fdump-analyzer-json · dea4a32b
      David Malcolm authored
      I've been implementing a PyGTK viewer for the output of
      -fdump-analyzer-json, to help me debug analyzer issues:
        https://github.com/davidmalcolm/gcc-analyzer-viewer
      The viewer is very much just a work in progress.
      
      This patch adds some fields that were missing from the dump, and
      fixes some mistakes I spotted whilst working on the viewer.
      
      gcc/analyzer/ChangeLog:
      	* engine.cc (strongly_connected_components::to_json): New.
      	(worklist::to_json): New.
      	(exploded_graph::to_json): JSON-ify the worklist.
      	* exploded-graph.h (strongly_connected_components::to_json): New
      	decl.
      	(worklist::to_json): New decl.
      	* store.cc (store::to_json): Fix comment.
      	* supergraph.cc (supernode::to_json): Fix reference to
      	"returning_call" in comment.  Add optional "fun" to JSON.
      	(edge_kind_to_string): New.
      	(superedge::to_json): Add "kind" to JSON.
      dea4a32b
    • David Malcolm's avatar
      analyzer: const fixes [PR98679] · 8a18261a
      David Malcolm authored
      gcc/analyzer/ChangeLog:
      	PR analyzer/98679
      	* analyzer.h (region_offset::operator==): Make const.
      	* pending-diagnostic.h (pending_diagnostic::equal_p): Likewise.
      	* store.h (binding_cluster::for_each_value): Likewise.
      	(binding_cluster::for_each_binding): Likewise.
      8a18261a
    • Marek Polacek's avatar
      c++: Tweak g++.dg/template/pr98372.C. · f6ffd449
      Marek Polacek authored
      This test was failing in C++11 because variable templates are only
      available in C++14.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/template/pr98372.C: Only run in C++14 and up.
      f6ffd449
    • Harald Anlauf's avatar
      PR fortran/93340 - fix missed substring simplifications · bdd1b1f5
      Harald Anlauf authored
      Substrings were not reduced early enough for use in initializations,
      such as DATA statements.  Add an early simplification for substrings
      with constant starting and ending points.
      
      gcc/fortran/ChangeLog:
      
      	* gfortran.h (gfc_resolve_substring): Add prototype.
      	* primary.c (match_string_constant): Simplify substrings with
      	constant starting and ending points.
      	* resolve.c: Rename resolve_substring to gfc_resolve_substring.
      	(gfc_resolve_ref): Use renamed function gfc_resolve_substring.
      
      gcc/testsuite/ChangeLog:
      
      	* substr_10.f90: New test.
      	* substr_9.f90: New test.
      bdd1b1f5
    • Alexandre Oliva's avatar
      calibrate intervals to avoid zero in futures poll test · 3651c1b5
      Alexandre Oliva authored
      We get occasional failures of 30_threads/future/members/poll.cc
      on some platforms whose high resolution clock doesn't have such a high
      resolution; wait_for_0 ends up as 0, and then some asserts fail as
      intervals measured as longer than zero are tested for less than
      several times zero.
      
      This patch adds some calibration in the iteration count to set a
      measurable base time interval with some additional margin.
      
      
      for  libstdc++-v3/ChangeLog
      
      	* testsuite/30_threads/future/members/poll.cc: Calibrate
      	iteration count.
      3651c1b5
    • Alexandre Oliva's avatar
      use sigjmp_buf for analyzer sigsetjmp tests · 6541fcad
      Alexandre Oliva authored
      The sigsetjmp analyzer tests use jmp_buf in sigsetjmp and siglongjmp
      calls.  Not every system that supports sigsetjmp uses the same data
      structure for setjmp and sigsetjmp, which results in type mismatches.
      
      This patch changes the tests to use sigjmp_buf, that is the
      POSIX-specific type for use with sigsetjmp and siglongjmp.
      
      
      for  gcc/testsuite/ChnageLog
      
      	* gcc.dg/analyzer/sigsetjmp-5.c: Use sigjmp_buf.
      	* gcc.dg/analyzer/sigsetjmp-6.c: Likewise.
      6541fcad
    • Alexandre Oliva's avatar
      declare getpass in analyzer/sensitive-1.c test · 088e46b8
      Alexandre Oliva authored
      The getpass function is not available on all systems; and not
      necessarily declared in unistd.h, as expected by the sensitive-1
      analyzer test.
      
      Since this is a compile-only test, it doesn't really matter if the
      function is defined in the system libraries.  All we need is a
      declaration, to avoid warnings from calling an undeclared function.
      This patch adds the declaration, in a way that is most unlikely to
      conflict with any existing declaration.
      
      
      for  gcc/testsuite/ChangeLog
      
      	* gcc.dg/analyzer/sensitive-1.c: Declare getpass.
      088e46b8
    • Thomas Schwinge's avatar
      [gcn offloading] Only supported in 64-bit configurations · 505caa72
      Thomas Schwinge authored
      Similar to nvptx offloading, see PR65099 "nvptx offloading: hard-coded 64-bit
      assumptions".
      
      	gcc/
      	* config/gcn/mkoffload.c (main): Create an offload image only in
      	64-bit configurations.
      505caa72
    • François Dumont's avatar
      libstdc++: Implement N3644 for _GLIBCXX_DEBUG iterators · 05a30af3
      François Dumont authored
      libstdc++-v3/ChangeLog:
      
      	PR libstdc++/98466
      	* include/bits/hashtable_policy.h (_Node_iterator_base()): Set _M_cur to nullptr.
      	(_Node_iterator()): Make default.
      	(_Node_const_iterator()): Make default.
      	* include/debug/macros.h (__glibcxx_check_erae_range_after): Add _M_singular
      	iterator checks.
      	* include/debug/safe_iterator.h
      	(_GLIBCXX_DEBUG_VERIFY_OPERANDS): Accept if both iterator are value initialized.
      	* include/debug/safe_local_iterator.h (_GLIBCXX_DEBUG_VERIFY_OPERANDS):
      	Likewise.
      	* include/debug/safe_iterator.tcc (_Safe_iterator<>::_M_valid_range): Add
      	_M_singular checks on input iterators.
      	* src/c++11/debug.cc (_Safe_iterator_base::_M_can_compare): Remove _M_singular
      	checks.
      	* testsuite/23_containers/deque/debug/98466.cc: New test.
      	* testsuite/23_containers/unordered_map/debug/98466.cc: New test.
      05a30af3
    • Harald Anlauf's avatar
      PR fortran/98661 - valgrind issues with error recovery · 9e1e6e63
      Harald Anlauf authored
      During error recovery after an invalid derived type specification it was
      possible to try to resolve an invalid array specification.  We now skip
      this if the component has the ALLOCATABLE or POINTER attribute and the
      shape is not deferred.
      
      gcc/fortran/ChangeLog:
      
      	PR fortran/98661
      	* resolve.c (resolve_component): Derived type components with
      	ALLOCATABLE or POINTER attribute shall have a deferred shape.
      
      gcc/testsuite/ChangeLog:
      
      	PR fortran/98661
      	* gfortran.dg/pr98661.f90: New test.
      9e1e6e63
    • Harald Anlauf's avatar
      Revert "PR fortran/98661 - valgrind issues with error recovery" · c1a2cf88
      Harald Anlauf authored
      This reverts commit d0d2becf.
      c1a2cf88
    • Harald Anlauf's avatar
      PR fortran/98661 - valgrind issues with error recovery · d0d2becf
      Harald Anlauf authored
      During error recovery after an invalid derived type specification it was
      possible to try to resolve an invalid array specification.  We now skip
      this if the component has the ALLOCATABLE or POINTER attribute and the
      shape is not deferred.
      
      gcc/fortran/ChangeLog:
      
      	PR fortran/98661
      	* resolve.c (resolve_component): Derived type components with
      	ALLOCATABLE or POINTER attribute shall have a deferred shape.
      
      gcc/testsuite/ChangeLog:
      
      	PR fortran/98661
      	* gfortran.dg/pr98661.f90: New test.
      d0d2becf
    • Ian Lance Taylor's avatar
      libgo: update hurd support · 9ac3e2fe
      Ian Lance Taylor authored
      Patch from Svante Signell.
      
      Fixes PR go/98496
      
      Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/283692
      9ac3e2fe
    • Thomas Schwinge's avatar
      [nvptx libgomp plugin] Build only in supported configurations · 6106dfb9
      Thomas Schwinge authored
      As recently again discussed in <https://gcc.gnu.org/PR97436> "[nvptx] -m32
      support", nvptx offloading other than for 64-bit host has never been
      implemented, tested, supported.  So we simply should buildn't the nvptx libgomp
      plugin in this case.
      
      This avoids build problems if, for example, in a (standard) bi-arch
      x86_64-pc-linux-gnu '-m64'/'-m32' build, libcuda is available only in a 64-bit
      variant but not in a 32-bit one, which, for example, is the case if you build
      GCC against the CUDA toolkit's 'stubs/libcuda.so' (see
      <https://stackoverflow.com/a/52784819>).
      
      This amends PR65099 commit a92defda (r225560)
      "[nvptx offloading] Only 64-bit configurations are currently supported" to
      match the way we're doing this for the HSA/GCN plugins.
      
      	libgomp/
      	PR libgomp/65099
      	* plugin/configfrag.ac (PLUGIN_NVPTX): Restrict to supported
      	configurations.
      	* configure: Regenerate.
      	* plugin/plugin-nvptx.c (nvptx_get_num_devices): Remove 64-bit
      	check.
      6106dfb9
    • Jonathan Wakely's avatar
      libstdc++: Define function to throw filesystem_error [PR 98471] · 57a4f5e4
      Jonathan Wakely authored
      Fix ordering problem on Windows targets where filesystem_error was used
      before being defined.
      
      libstdc++-v3/ChangeLog:
      
      	PR libstdc++/98471
      	* include/bits/fs_path.h (__throw_conversion_error): New
      	function to throw or abort on character conversion errors.
      	(__wstr_from_utf8): Move definition after filesystem_error has
      	been defined. Use __throw_conversion_error.
      	(path::_S_convert<_EcharT>): Use __throw_conversion_error.
      	(path::_S_str_convert<_CharT, _Traits, _Allocator>): Likewise.
      	(path::u8string): Likewise.
      57a4f5e4
    • Sebastian Huber's avatar
      RTEMS: Fix Ada build for riscv · aa3d33dc
      Sebastian Huber authored
      gcc/ada/
      
      	PR ada/98595
      	* Makefile.rtl (LIBGNAT_TARGET_PAIRS) <riscv*-*-rtems*>: Use
      	wraplf version of Aux_Long_Long_Float.
      aa3d33dc
    • Martin Liska's avatar
      gcov: add one more pytest · 7624c58c
      Martin Liska authored
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/gcov/gcov-17.C: New test.
      	* g++.dg/gcov/test-gcov-17.py: New test.
      7624c58c
    • Martin Liska's avatar
      mklog: skip unsupported files · 236d6a33
      Martin Liska authored
      This fixes an infinite loop one could see for:
      git show b87ec922 | ./contrib/mklog.py
      
      contrib/ChangeLog:
      
      	* mklog.py: Fix infinite loop for unsupported files.
      236d6a33
    • H.J. Lu's avatar
      x86: Error on -fcf-protection with incompatible target · 77d372ab
      H.J. Lu authored
      -fcf-protection with CF_BRANCH inserts ENDBR32 at function entries.
      ENDBR32 is NOP only on 64-bit processors and 32-bit TARGET_CMOV
      processors.  Issue an error for -fcf-protection with CF_BRANCH when
      compiling for 32-bit non-TARGET_CMOV targets.
      
      gcc/
      
      	PR target/98667
      	* config/i386/i386-options.c (ix86_option_override_internal):
      	Issue an error for -fcf-protection with CF_BRANCH when compiling
      	for 32-bit non-TARGET_CMOV targets.
      
      gcc/testsuite/
      
      	PR target/98667
      	* gcc.target/i386/pr98667-1.c: New file.
      	* gcc.target/i386/pr98667-2.c: Likewise.
      	* gcc.target/i386/pr98667-3.c: Likewise.
      77d372ab
    • Uros Bizjak's avatar
      i386: Resolve variable shadowing in i386-options.c [PR98671] · 5ebdd535
      Uros Bizjak authored
      Also change global variable pta_size to unsigned.
      
      2021-01-14  Uroš Bizjak  <ubizjak@gmail.com>
      
      gcc/
      	PR target/98671
      	* config/i386/i386-options.c (ix86_valid_target_attribute_inner_p):
      	Remove declaration and initialization of shadow variable "ret".
      	(ix86_option_override_internal): Remove delcaration of
      	shadow variable "i".  Redeclare shadowed variable to unsigned.
      	* common/config/i386/i386-common.c (pta_size): Redeclare to unsigned.
      	* config/i386/i386-builtins.c (get_builtin_code_for_version):
      	Update for redeclaration.
      	* config/i386/i386.h (pta_size): Ditto.
      5ebdd535
    • Richard Biener's avatar
      tree-optimization/98674 - improve dependence analysis · 2182274f
      Richard Biener authored
      This improves dependence analysis on refs that access the same
      array but with different typed but same sized accesses.  That's
      obviously safe for the case of types that cannot have any
      access function based off them.  For the testcase this is
      signed short vs. unsigned short.
      
      2021-01-14  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/98674
      	* tree-data-ref.c (base_supports_access_fn_components_p): New.
      	(initialize_data_dependence_relation): For two bases without
      	possible access fns resort to type size equality when determining
      	shape compatibility.
      
      	* gcc.dg/vect/pr98674.c: New testcase.
      2182274f
    • H.J. Lu's avatar
      i386: Update PR target/95021 tests · a512079e
      H.J. Lu authored
      Also pass -mpreferred-stack-boundary=4 -mno-stackrealign to avoid
      disabling STV by:
      
        /* Disable STV if -mpreferred-stack-boundary={2,3} or
           -mincoming-stack-boundary={2,3} or -mstackrealign - the needed
           stack realignment will be extra cost the pass doesn't take into
           account and the pass can't realign the stack.  */
        if (ix86_preferred_stack_boundary < 128
            || ix86_incoming_stack_boundary < 128
            || opts->x_ix86_force_align_arg_pointer)
          opts->x_target_flags &= ~MASK_STV;
      
      	PR target/98676
      	* gcc.target/i386/pr95021-1.c: Add -mpreferred-stack-boundary=4
      	-mno-stackrealign.
      	* gcc.target/i386/pr95021-3.c: Likewise.
      a512079e
    • Prathamesh Kulkarni's avatar
      arm: Replace calls to __builtin_vcge* by <=,>= in arm_neon.h [PR66791] · a802a2ef
      Prathamesh Kulkarni authored
      gcc/
      2021-01-14  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
      
      	PR target/66791
      	* config/arm/arm_neon.h: Replace calls to __builtin_vcge* by
      	<=, >= operators in vcle and vcge intrinsics respectively.
      	* config/arm/arm_neon_builtins.def: Remove entry for
      	vcge and vcgeu.
      a802a2ef
    • Jonathan Wakely's avatar
      libstdc++: Update copyright dates on new files · 194a9d67
      Jonathan Wakely authored
      The patch adding these files was approved in 2020 but it wasn't
      committed until 2021, so the copyright years were not updated along with
      the years in all the existing files.
      
      libstdc++-v3/ChangeLog:
      
      	* include/std/barrier: Update copyright years. Fix whitespace.
      	* include/std/version: Fix whitespace.
      	* testsuite/30_threads/barrier/1.cc: Update copyright years.
      	* testsuite/30_threads/barrier/2.cc: Likewise.
      	* testsuite/30_threads/barrier/arrive.cc: Likewise.
      	* testsuite/30_threads/barrier/arrive_and_drop.cc: Likewise.
      	* testsuite/30_threads/barrier/arrive_and_wait.cc: Likewise.
      	* testsuite/30_threads/barrier/completion.cc: Likewise.
      194a9d67
Loading