diff --git a/.gcc.metadata b/.gcc.metadata
index 1b620d3..2647001 100644
--- a/.gcc.metadata
+++ b/.gcc.metadata
@@ -1,3 +1,3 @@
-e83739fffae5c3bbb1784cadb72ead8384de74e0 SOURCES/gcc-8.3.1-20191121.tar.xz
+6d0269f5a6a1907dfb48cb6d8b64538bde7f1f6d SOURCES/gcc-8.4.1-20200928.tar.xz
 3bdb3cc01fa7690a0e20ea5cfffcbe690f7665eb SOURCES/nvptx-newlib-aadc8eb0ec43b7cd0dd2dfb484bae63c8b05ef24.tar.xz
 ce8eb83be0ac37fb5d5388df455a980fe37b4f13 SOURCES/nvptx-tools-c28050f60193b3b95a18866a96f03334e874e78f.tar.xz
diff --git a/.gitignore b/.gitignore
index fd61c9b..526d1a0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,3 @@
-SOURCES/gcc-8.3.1-20191121.tar.xz
+SOURCES/gcc-8.4.1-20200928.tar.xz
 SOURCES/nvptx-newlib-aadc8eb0ec43b7cd0dd2dfb484bae63c8b05ef24.tar.xz
 SOURCES/nvptx-tools-c28050f60193b3b95a18866a96f03334e874e78f.tar.xz
diff --git a/SOURCES/gcc8-libstdc++-docs.patch b/SOURCES/gcc8-libstdc++-docs.patch
index 5f6a2ae..b2a27d4 100644
--- a/SOURCES/gcc8-libstdc++-docs.patch
+++ b/SOURCES/gcc8-libstdc++-docs.patch
@@ -4,7 +4,7 @@
        <a class="link" href="https://www.fsf.org" target="_top">FSF
        </a>
      </p><p>
-+      Release 8.3.1
++      Release 8.4.1
 +    </p><p>
        Permission is granted to copy, distribute and/or modify this
        document under the terms of the GNU Free Documentation
@@ -17,7 +17,7 @@
  </p><p>
 -  The API documentation, rendered into HTML, can be viewed online
 +  The API documentation, rendered into HTML, can be viewed locally
-+  <a class="link" href="api/index.html" target="_top">for the 8.3.1 release</a>,
++  <a class="link" href="api/index.html" target="_top">for the 8.4.1 release</a>,
 +  online
    <a class="link" href="http://gcc.gnu.org/onlinedocs/" target="_top">for each GCC release</a>
    and
diff --git a/SOURCES/gcc8-pr86747.patch b/SOURCES/gcc8-pr86747.patch
deleted file mode 100644
index 78e4a76..0000000
--- a/SOURCES/gcc8-pr86747.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-2018-12-06  Alexandre Oliva <aoliva@redhat.com>
- 
-	PR c++/86747
-	* pt.c (tsubst_friend_class): Enter tsubsted class context.
-
---- gcc/cp/pt.c
-+++ gcc/cp/pt.c
-@@ -10558,7 +10558,10 @@ tsubst_friend_class (tree friend_tmpl, tree args)
-   if (TREE_CODE (context) == NAMESPACE_DECL)
-     push_nested_namespace (context);
-   else
--    push_nested_class (context);
-+    {
-+      context = tsubst (context, args, tf_error, NULL_TREE);
-+      push_nested_class (context);
-+    }
- 
-   tmpl = lookup_name_real (DECL_NAME (friend_tmpl), /*prefer_type=*/false,
- 			   /*non_class=*/false, /*block_p=*/false,
---- /dev/null
-+++ gcc/testsuite/g++.dg/pr86747.C
-@@ -0,0 +1,8 @@
-+// { dg-do compile }
-+
-+template <typename T> class A {
-+  template <void (A::*p)()> class C; // #1
-+  template <void (A::*q)()> friend class C; // #2
-+};
-+
-+A<double> a;
diff --git a/SOURCES/gcc8-pr91601.patch b/SOURCES/gcc8-pr91601.patch
deleted file mode 100644
index ec058b8..0000000
--- a/SOURCES/gcc8-pr91601.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-2020-03-29  Martin Liska  <mliska@suse.cz>
-
-	Backport from mainline
-	2019-09-02  Martin Liska  <mliska@suse.cz>
-
-	PR gcov-profile/91601
-	* gcov.c (path_contains_zero_cycle_arc): Rename to ...
-	(path_contains_zero_or_negative_cycle_arc): ... this and handle
-	also negative edges.
-	(circuit): Handle also negative edges as they can happen
-	in some situations.
-
---- gcc/gcov.c
-+++ gcc/gcov.c
-@@ -653,10 +653,10 @@ unblock (const block_info *u, block_vector_t &blocked,
- /* Return true when PATH contains a zero cycle arc count.  */
- 
- static bool
--path_contains_zero_cycle_arc (arc_vector_t &path)
-+path_contains_zero_or_negative_cycle_arc (arc_vector_t &path)
- {
-   for (unsigned i = 0; i < path.size (); i++)
--    if (path[i]->cs_count == 0)
-+    if (path[i]->cs_count <= 0)
-       return true;
-   return false;
- }
-@@ -682,7 +682,7 @@ circuit (block_info *v, arc_vector_t &path, block_info *start,
-     {
-       block_info *w = arc->dst;
-       if (w < start
--	  || arc->cs_count == 0
-+	  || arc->cs_count <= 0
- 	  || !linfo.has_block (w))
- 	continue;
- 
-@@ -693,7 +693,7 @@ circuit (block_info *v, arc_vector_t &path, block_info *start,
- 	  handle_cycle (path, count);
- 	  loop_found = true;
- 	}
--      else if (!path_contains_zero_cycle_arc (path)
-+      else if (!path_contains_zero_or_negative_cycle_arc (path)
- 	       &&  find (blocked.begin (), blocked.end (), w) == blocked.end ())
- 	loop_found |= circuit (w, path, start, blocked, block_lists, linfo,
- 			       count);
-@@ -708,7 +708,7 @@ circuit (block_info *v, arc_vector_t &path, block_info *start,
-       {
- 	block_info *w = arc->dst;
- 	if (w < start
--	    || arc->cs_count == 0
-+	    || arc->cs_count <= 0
- 	    || !linfo.has_block (w))
- 	  continue;
- 
diff --git a/SOURCES/gcc8-pr92775.patch b/SOURCES/gcc8-pr92775.patch
deleted file mode 100644
index 2a0fa59..0000000
--- a/SOURCES/gcc8-pr92775.patch
+++ /dev/null
@@ -1,115 +0,0 @@
-2020-03-30  Jakub Jelinek  <jakub@redhat.com>
-
-	Backported from mainline
-	2019-12-06  Jakub Jelinek  <jakub@redhat.com>
-
-	PR fortran/92775
-	* trans.h (struct lang_type, struct lang_decl): Remove span member.
-	(GFC_DECL_SPAN, GFC_TYPE_ARRAY_SPAN): Remove macros.
-	* trans-array.h (gfc_get_descriptor_offsets_for_info): Add another
-	argument.
-	* trans-array.c (gfc_get_descriptor_offsets_for_info): Add SPAN_OFF
-	argument and initialize *SPAN_OFF to the offset of span field.
-	* trans-types.c (gfc_get_array_descr_info): Adjust
-	gfc_get_descriptor_offsets_for_info caller.  Compute elem_size
-	as base->span instead of TYPE_SIZE_UNIT (etype) constant.
-
---- gcc/fortran/trans-array.c
-+++ gcc/fortran/trans-array.c
-@@ -503,9 +503,10 @@ gfc_conv_shift_descriptor_lbound (stmtblock_t* block, tree desc,
- 
- void
- gfc_get_descriptor_offsets_for_info (const_tree desc_type, tree *data_off,
--				     tree *dtype_off, tree *dim_off,
--				     tree *dim_size, tree *stride_suboff,
--				     tree *lower_suboff, tree *upper_suboff)
-+				     tree *dtype_off, tree *span_off,
-+				     tree *dim_off, tree *dim_size,
-+				     tree *stride_suboff, tree *lower_suboff,
-+				     tree *upper_suboff)
- {
-   tree field;
-   tree type;
-@@ -515,6 +516,8 @@ gfc_get_descriptor_offsets_for_info (const_tree desc_type, tree *data_off,
-   *data_off = byte_position (field);
-   field = gfc_advance_chain (TYPE_FIELDS (type), DTYPE_FIELD);
-   *dtype_off = byte_position (field);
-+  field = gfc_advance_chain (TYPE_FIELDS (type), SPAN_FIELD);
-+  *span_off = byte_position (field);
-   field = gfc_advance_chain (TYPE_FIELDS (type), DIMENSION_FIELD);
-   *dim_off = byte_position (field);
-   type = TREE_TYPE (TREE_TYPE (field));
---- gcc/fortran/trans-array.h
-+++ gcc/fortran/trans-array.h
-@@ -159,7 +159,7 @@ void gfc_trans_array_cobounds (tree, stmtblock_t *, const gfc_symbol *);
- 
- /* Build expressions for accessing components of an array descriptor.  */
- void gfc_get_descriptor_offsets_for_info (const_tree, tree *, tree *, tree *, tree *,
--					  tree *, tree *, tree *);
-+					  tree *, tree *, tree *, tree *);
- 
- tree gfc_conv_descriptor_data_get (tree);
- tree gfc_conv_descriptor_data_addr (tree);
---- gcc/fortran/trans-types.c
-+++ gcc/fortran/trans-types.c
-@@ -3344,7 +3344,7 @@ gfc_get_array_descr_info (const_tree type, struct array_descr_info *info)
-   int rank, dim;
-   bool indirect = false;
-   tree etype, ptype, t, base_decl;
--  tree data_off, dim_off, dtype_off, dim_size, elem_size;
-+  tree data_off, span_off, dim_off, dtype_off, dim_size, elem_size;
-   tree lower_suboff, upper_suboff, stride_suboff;
-   tree dtype, field, rank_off;
- 
-@@ -3401,12 +3401,13 @@ gfc_get_array_descr_info (const_tree type, struct array_descr_info *info)
-   if (indirect)
-     base_decl = build1 (INDIRECT_REF, ptype, base_decl);
- 
--  elem_size = fold_convert (gfc_array_index_type, TYPE_SIZE_UNIT (etype));
--
--  gfc_get_descriptor_offsets_for_info (type, &data_off, &dtype_off, &dim_off,
--				       &dim_size, &stride_suboff,
-+  gfc_get_descriptor_offsets_for_info (type, &data_off, &dtype_off, &span_off,
-+				       &dim_off, &dim_size, &stride_suboff,
- 				       &lower_suboff, &upper_suboff);
- 
-+  t = fold_build_pointer_plus (base_decl, span_off);
-+  elem_size = build1 (INDIRECT_REF, gfc_array_index_type, t);
-+
-   t = base_decl;
-   if (!integer_zerop (data_off))
-     t = fold_build_pointer_plus (t, data_off);
---- gcc/fortran/trans.h
-+++ gcc/fortran/trans.h
-@@ -953,7 +953,6 @@ struct GTY(())	lang_type	 {
-   tree offset;
-   tree dtype;
-   tree dataptr_type;
--  tree span;
-   tree base_decl[2];
-   tree nonrestricted_type;
-   tree caf_token;
-@@ -969,7 +968,6 @@ struct GTY(()) lang_decl {
-      address of target label.  */
-   tree stringlen;
-   tree addr;
--  tree span;
-   /* For assumed-shape coarrays.  */
-   tree token, caf_offset;
-   unsigned int scalar_allocatable : 1;
-@@ -979,7 +977,6 @@ struct GTY(()) lang_decl {
- 
- #define GFC_DECL_ASSIGN_ADDR(node) DECL_LANG_SPECIFIC(node)->addr
- #define GFC_DECL_STRING_LEN(node) DECL_LANG_SPECIFIC(node)->stringlen
--#define GFC_DECL_SPAN(node) DECL_LANG_SPECIFIC(node)->span
- #define GFC_DECL_TOKEN(node) DECL_LANG_SPECIFIC(node)->token
- #define GFC_DECL_CAF_OFFSET(node) DECL_LANG_SPECIFIC(node)->caf_offset
- #define GFC_DECL_SAVED_DESCRIPTOR(node) \
-@@ -1028,7 +1025,6 @@ struct GTY(()) lang_decl {
- #define GFC_TYPE_ARRAY_DTYPE(node) (TYPE_LANG_SPECIFIC(node)->dtype)
- #define GFC_TYPE_ARRAY_DATAPTR_TYPE(node) \
-   (TYPE_LANG_SPECIFIC(node)->dataptr_type)
--#define GFC_TYPE_ARRAY_SPAN(node) (TYPE_LANG_SPECIFIC(node)->span)
- #define GFC_TYPE_ARRAY_BASE_DECL(node, internal) \
-   (TYPE_LANG_SPECIFIC(node)->base_decl[(internal)])
- 
diff --git a/SOURCES/gcc8-pr92950.patch b/SOURCES/gcc8-pr92950.patch
deleted file mode 100644
index 9116f3d..0000000
--- a/SOURCES/gcc8-pr92950.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-Fix PR92950: Wrong code emitted for movv1qi
-    
-The backend emits 16 bit memory loads for single element character
-vector.  As a result the character will not be right justified in the
-GPR.
-    
-2019-12-17  Andreas Krebbel  <krebbel@linux.ibm.com>
-
-	Backport from mainline
-	2019-12-16  Andreas Krebbel  <krebbel@linux.ibm.com>
-
-	PR target/92950
-	* config/s390/vector.md ("mov<mode>" for V_8): Replace lh, lhy,
-	and lhrl with llc.
-
---- gcc/config/s390/vector.md
-+++ gcc/config/s390/vector.md
-@@ -289,9 +289,9 @@
- ; However, this would probably be slower.
- 
- (define_insn "mov<mode>"
--  [(set (match_operand:V_8 0 "nonimmediate_operand" "=v,v,d,v,R,  v,  v,  v,  v,d,  Q,  S,  Q,  S,  d,  d,d,d,d,R,T")
--        (match_operand:V_8 1 "general_operand"      " v,d,v,R,v,j00,jm1,jyy,jxx,d,j00,j00,jm1,jm1,j00,jm1,R,T,b,d,d"))]
--  ""
-+  [(set (match_operand:V_8 0 "nonimmediate_operand" "=v,v,d,v,R,  v,  v,  v,  v,d,  Q,  S,  Q,  S,  d,  d,d,R,T")
-+        (match_operand:V_8 1 "general_operand"      " v,d,v,R,v,j00,jm1,jyy,jxx,d,j00,j00,jm1,jm1,j00,jm1,T,d,d"))]
-+  "TARGET_VX"
-   "@
-    vlr\t%v0,%v1
-    vlvgb\t%v0,%1,0
-@@ -309,12 +309,10 @@
-    mviy\t%0,-1
-    lhi\t%0,0
-    lhi\t%0,-1
--   lh\t%0,%1
--   lhy\t%0,%1
--   lhrl\t%0,%1
-+   llc\t%0,%1
-    stc\t%1,%0
-    stcy\t%1,%0"
--  [(set_attr "op_type"      "VRR,VRS,VRS,VRX,VRX,VRI,VRI,VRI,VRI,RR,SI,SIY,SI,SIY,RI,RI,RX,RXY,RIL,RX,RXY")])
-+  [(set_attr "op_type"      "VRR,VRS,VRS,VRX,VRX,VRI,VRI,VRI,VRI,RR,SI,SIY,SI,SIY,RI,RI,RXY,RX,RXY")])
- 
- (define_insn "mov<mode>"
-   [(set (match_operand:V_16 0 "nonimmediate_operand" "=v,v,d,v,R,  v,  v,  v,  v,d,  Q,  Q,  d,  d,d,d,d,R,T,b")
---- /dev/null
-+++ gcc/testsuite/gcc.target/s390/vector/pr92950.c
-@@ -0,0 +1,24 @@
-+/* { dg-do run } */
-+/* { dg-options "-O3 -mzarch -march=z13" } */
-+
-+struct a {
-+  int b;
-+  char c;
-+};
-+struct a d = {1, 16};
-+struct a *e = &d;
-+
-+int f = 0;
-+
-+int main() {
-+  struct a g = {0, 0 };
-+  f = 0;
-+
-+  for (; f <= 1; f++) {
-+    g = d;
-+    *e = g;
-+  }
-+
-+  if (d.c != 16)
-+    __builtin_abort();
-+}
diff --git a/SOURCES/gcc8-pr95614-revert.patch b/SOURCES/gcc8-pr95614-revert.patch
new file mode 100644
index 0000000..c3f9e26
--- /dev/null
+++ b/SOURCES/gcc8-pr95614-revert.patch
@@ -0,0 +1,96 @@
+2020-09-28  Jakub Jelinek  <jakub@redhat.com>
+
+	Revert:
+	2020-09-27  Steven G. Kargl  <kargl@gcc.gnu.org>
+		    Mark Eggleston  <markeggleston@gcc.gnu.org>
+
+	PR fortran/95614
+	* decl.c (gfc_get_common): Use gfc_match_common_name instead
+	of match_common_name.
+	* decl.c (gfc_bind_idents): Use gfc_match_common_name instead
+	of match_common_name.
+	* match.c : Rename match_common_name to gfc_match_common_name.
+	* match.c (gfc_match_common): Use gfc_match_common_name instead
+	of match_common_name.
+	* match.h : Rename match_common_name to gfc_match_common_name.
+	* resolve.c (resolve_common_vars): Check each symbol in a
+	common block has a global symbol.  If there is a global symbol
+	issue an error if the symbol type is known as is not a common
+	block name.
+
+--- gcc/fortran/decl.c
++++ gcc/fortran/decl.c
+@@ -5789,7 +5789,7 @@ get_bind_c_idents (void)
+       found_id = MATCH_YES;
+       gfc_get_ha_symbol (name, &tmp_sym);
+     }
+-  else if (gfc_match_common_name (name) == MATCH_YES)
++  else if (match_common_name (name) == MATCH_YES)
+     {
+       found_id = MATCH_YES;
+       com_block = gfc_get_common (name, 0);
+@@ -5834,7 +5834,7 @@ get_bind_c_idents (void)
+ 	      found_id = MATCH_YES;
+ 	      gfc_get_ha_symbol (name, &tmp_sym);
+ 	    }
+-	  else if (gfc_match_common_name (name) == MATCH_YES)
++	  else if (match_common_name (name) == MATCH_YES)
+ 	    {
+ 	      found_id = MATCH_YES;
+ 	      com_block = gfc_get_common (name, 0);
+--- gcc/fortran/match.c
++++ gcc/fortran/match.c
+@@ -5028,8 +5028,7 @@ gfc_get_common (const char *name, int from_module)
+ 
+ /* Match a common block name.  */
+ 
+-match
+-gfc_match_common_name (char *name)
++match match_common_name (char *name)
+ {
+   match m;
+ 
+@@ -5073,7 +5072,7 @@ gfc_match_common (void)
+ 
+   for (;;)
+     {
+-      m = gfc_match_common_name (name);
++      m = match_common_name (name);
+       if (m == MATCH_ERROR)
+ 	goto cleanup;
+ 
+--- gcc/fortran/match.h
++++ gcc/fortran/match.h
+@@ -103,9 +103,11 @@ match gfc_match_call (void);
+ 
+ /* We want to use this function to check for a common-block-name
+    that can exist in a bind statement, so removed the "static"
+-   declaration of the function in match.c. */
++   declaration of the function in match.c.
+  
+-match gfc_match_common_name (char *name);
++   TODO: should probably rename this now that it'll be globally seen to
++   gfc_match_common_name.  */
++match match_common_name (char *name);
+ 
+ match gfc_match_common (void);
+ match gfc_match_block_data (void);
+--- gcc/fortran/resolve.c
++++ gcc/fortran/resolve.c
+@@ -932,16 +932,9 @@ static void
+ resolve_common_vars (gfc_common_head *common_block, bool named_common)
+ {
+   gfc_symbol *csym = common_block->head;
+-  gfc_gsymbol *gsym;
+ 
+   for (; csym; csym = csym->common_next)
+     {
+-      gsym = gfc_find_gsymbol (gfc_gsym_root, csym->name);
+-      if (gsym && gsym->type != GSYM_UNKNOWN && gsym->type != GSYM_COMMON)
+-	gfc_error_now ("Global entity %qs at %L cannot appear in a "
+-			"COMMON block at %L", gsym->name,
+-			&gsym->where, &csym->common_block->where);
+-
+       /* gfc_add_in_common may have been called before, but the reported errors
+ 	 have been ignored to continue parsing.
+ 	 We do the checks again here.  */
diff --git a/SPECS/gcc.spec b/SPECS/gcc.spec
index 3aaeb83..47b03f0 100644
--- a/SPECS/gcc.spec
+++ b/SPECS/gcc.spec
@@ -1,10 +1,10 @@
-%global DATE 20191121
-%global SVNREV 278589
-%global gcc_version 8.3.1
+%global DATE 20200928
+%global gitrev 8ed81e8ef69a535cbc168f55d06941bf3e4ef8ee
+%global gcc_version 8.4.1
 %global gcc_major 8
 # Note, gcc_release must be integer, if you want to add suffixes to
 # %%{release}, append them after %%{gcc_release} on Release: line.
-%global gcc_release 5
+%global gcc_release 1
 %global nvptx_tools_gitrev c28050f60193b3b95a18866a96f03334e874e78f
 %global nvptx_newlib_gitrev aadc8eb0ec43b7cd0dd2dfb484bae63c8b05ef24
 %global _unpackaged_files_terminate_build 0
@@ -104,29 +104,30 @@
 Summary: Various compilers (C, C++, Objective-C, ...)
 Name: gcc
 Version: %{gcc_version}
-Release: %{gcc_release}.1%{?dist}
+Release: %{gcc_release}%{?dist}
 # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have
 # GCC Runtime Exception.
 License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD
 Group: Development/Languages
 # The source for this package was pulled from upstream's vcs.  Use the
 # following commands to generate the tarball:
-# svn export svn://gcc.gnu.org/svn/gcc/branches/redhat/gcc-8-branch@%%{SVNREV} gcc-%%{version}-%%{DATE}
-# tar cf - gcc-%%{version}-%%{DATE} | xz -9e > gcc-%%{version}-%%{DATE}.tar.xz
+# git clone --depth 1 git://gcc.gnu.org/git/gcc.git gcc-dir.tmp
+# git --git-dir=gcc-dir.tmp/.git fetch --depth 1 origin %%{gitrev}
+# git --git-dir=gcc-dir.tmp/.git archive --prefix=%%{name}-%%{version}-%%{DATE}/ %%{gitrev} | xz -9e > %%{name}-%%{version}-%%{DATE}.tar.xz
+# rm -rf gcc-dir.tmp
 Source0: gcc-%{version}-%{DATE}.tar.xz
 # The source for nvptx-tools package was pulled from upstream's vcs.  Use the
 # following commands to generate the tarball:
-# git clone https://github.com/MentorEmbedded/nvptx-tools.git
-# cd nvptx-tools
-# git archive origin/master --prefix=nvptx-tools-%%{nvptx_tools_gitrev}/ | xz -9e > ../nvptx-tools-%%{nvptx_tools_gitrev}.tar.xz
-# cd ..; rm -rf nvptx-tools
+# git clone --depth 1 git://github.com/MentorEmbedded/nvptx-tools.git nvptx-tools-dir.tmp
+# git --git-dir=nvptx-tools-dir.tmp/.git fetch --depth 1 origin %%{nvptx_tools_gitrev}
+# git --git-dir=nvptx-tools-dir.tmp/.git archive --prefix=nvptx-tools-%%{nvptx_tools_gitrev}/ %%{nvptx_tools_gitrev} | xz -9e > nvptx-tools-%%{nvptx_tools_gitrev}.tar.xz
+# rm -rf nvptx-tools-dir.tmp
 Source1: nvptx-tools-%{nvptx_tools_gitrev}.tar.xz
 # The source for nvptx-newlib package was pulled from upstream's vcs.  Use the
 # following commands to generate the tarball:
-# git clone https://github.com/MentorEmbedded/nvptx-newlib.git
-# cd nvptx-newlib
-# git archive origin/master --prefix=nvptx-newlib-%%{nvptx_newlib_gitrev}/ | xz -9 > ../nvptx-newlib-%%{nvptx_newlib_gitrev}.tar.xz
-# cd ..; rm -rf nvptx-newlib
+# git clone git://sourceware.org/git/newlib-cygwin.git newlib-cygwin-dir.tmp
+# git --git-dir=newlib-cygwin-dir.tmp/.git archive --prefix=newlib-cygwin-%%{newlib_cygwin_gitrev}/ %%{newlib_cygwin_gitrev} ":(exclude)newlib/libc/sys/linux/include/rpc/*.[hx]" | xz -9e > newlib-cygwin-%%{newlib_cygwin_gitrev}.tar.xz
+# rm -rf newlib-cygwin-dir.tmp
 Source2: nvptx-newlib-%{nvptx_newlib_gitrev}.tar.xz
 %global isl_version 0.16.1
 URL: http://gcc.gnu.org
@@ -269,12 +270,9 @@ Patch12: gcc8-mcet.patch
 Patch13: gcc8-rh1574936.patch
 Patch14: gcc8-libgcc-hardened.patch
 Patch15: gcc8-rh1670535.patch
-Patch17: gcc8-libgomp-20190503.patch
-Patch18: gcc8-pr86747.patch
-Patch19: gcc8-libgomp-testsuite.patch
-Patch20: gcc8-pr91601.patch
-Patch21: gcc8-pr92775.patch
-Patch22: gcc8-pr92950.patch
+Patch16: gcc8-libgomp-20190503.patch
+Patch17: gcc8-libgomp-testsuite.patch
+Patch18: gcc8-pr95614-revert.patch
 
 Patch30: gcc8-rh1668903-1.patch
 Patch31: gcc8-rh1668903-2.patch
@@ -849,12 +847,10 @@ to NVidia PTX capable devices if available.
 %patch14 -p0 -b .libgcc-hardened~
 %endif
 %patch15 -p0 -b .rh1670535~
-%patch17 -p0 -b .libgomp-20190503~
-%patch18 -p0 -b .pr86747~
-%patch19 -p0 -b .libgomp-testsuite~
-%patch20 -p0 -b .pr91601~
-%patch21 -p0 -b .pr92775~
-%patch22 -p0 -b .pr92950~
+%patch16 -p0 -b .libgomp-20190503~
+%patch17 -p0 -b .libgomp-testsuite~
+%patch18 -p0 -b .pr95614-revert~
+rm -f gcc/testsuite/gfortran.dg/pr95614_*.f90
 
 %patch30 -p0 -b .rh1668903-1~
 %patch31 -p0 -b .rh1668903-2~
@@ -2440,11 +2436,11 @@ fi
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgomp.a
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgomp.so
 %if %{build_libquadmath}
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libquadmath.a
+#%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libquadmath.a
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libquadmath.so
 %endif
 %if %{build_libitm}
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libitm.a
+#%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libitm.a
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libitm.so
 %endif
 %if %{build_libatomic}
@@ -2452,12 +2448,12 @@ fi
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libatomic.so
 %endif
 %if %{build_libasan}
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libasan.a
+#%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libasan.a
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libasan.so
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libasan_preinit.o
 %endif
 %if %{build_libubsan}
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libubsan.a
+#%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libubsan.a
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libubsan.so
 %endif
 %if %{build_libmpx}
@@ -2711,7 +2707,7 @@ fi
 %ifarch %{multilib_64_archs}
 %dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libcaf_single.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgfortran.a
+#%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgfortran.a
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgfortran.so
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/finclude
 %endif
@@ -3171,6 +3167,14 @@ fi
 %endif
 
 %changelog
+* Tue Sep 29 2020 Marek Polacek <polacek@redhat.com> 8.4.1-1
+- update from GCC 8.4 release (#1868446)
+- remove symlinks to 32-bit versions of these static libraries: libasan.a,
+  libitm.a, libquadmath.a, libubsan.a, libgfortran.a (#1779597)
+
+* Wed Jul 15 2020 Marek Polacek <polacek@redhat.com> 8.3.1-5.2
+- backport aarch64 LSE atomics (#1821994)
+
 * Tue May 12 2020 Marek Polacek <polacek@redhat.com> 8.3.1-5.1
 - consider negative edges in cycle detection (#1817991, PR gcov-profile/91601)
 - fix Fortran debug info for arrays with descriptors (#1655624,