diff -Nrcpad gcc-17-20260726/LAST_UPDATED gcc-17-20260727/LAST_UPDATED
*** gcc-17-20260726/LAST_UPDATED	Sun Jul 26 22:32:24 2026
--- gcc-17-20260727/LAST_UPDATED	Mon Jul 27 02:16:24 2026
***************
*** 1 ****
! Obtained from git: master revision 4d9a71ceec40da31f781a495368250a1b92d5acb
--- 1 ----
! Obtained from git: master revision f94bbe06bea3e73e47e3eabbc6ceea81f507d9ad
diff -Nrcpad gcc-17-20260726/MD5SUMS gcc-17-20260727/MD5SUMS
*** gcc-17-20260726/MD5SUMS	Sun Jul 26 22:32:30 2026
--- gcc-17-20260727/MD5SUMS	Mon Jul 27 02:16:30 2026
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the
! # gcc-17-20260726.tar.xz tarball.
  #
  # Besides verifying that all files in the tarball were correctly expanded,
  # it also can be used to determine if any files have changed since the
--- 1,5 ----
  # This file contains the MD5 checksums of the files in the
! # gcc-17-20260727.tar.xz tarball.
  #
  # Besides verifying that all files in the tarball were correctly expanded,
  # it also can be used to determine if any files have changed since the
*************** d32239bcb673463ab874e80d47fae504  COPYIN
*** 28,34 ****
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! c9aaf0bc79f68f6821d671143374c097  LAST_UPDATED
  8aed0c9088e9f47a8bf0bd972973935f  MAINTAINERS
  f949dc9475f463da0eeb2943fbc68f3d  MAINTAINERS.yml
  f1b0fe5b41f7272f173407bd21947846  Makefile.def
--- 28,34 ----
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! e39f460ad8629672a90736fc43149483  LAST_UPDATED
  8aed0c9088e9f47a8bf0bd972973935f  MAINTAINERS
  f949dc9475f463da0eeb2943fbc68f3d  MAINTAINERS.yml
  f1b0fe5b41f7272f173407bd21947846  Makefile.def
*************** f15bc3c5de22eac0bdd4f611502139a0  gcc/AB
*** 534,540 ****
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! 914ddd2e9b69b0aecedeb5186844b814  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
--- 534,540 ----
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! dcb755c81c7b3df3d0e4dcaf037e89b6  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
*************** fb3fadb88e1d2b3b640cfaaa5ff11780  gcc/Ch
*** 572,578 ****
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! cc850ee7116e4a3f9deab0a39f36efe2  gcc/DATESTAMP
  deb513e591f23901188e22323bd3b1d4  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
--- 572,578 ----
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! ea45216125b5d2dc9172426927be609e  gcc/DATESTAMP
  deb513e591f23901188e22323bd3b1d4  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
*************** d662c0c5ca1bc4d52a83fa1d89e0db14  gcc/co
*** 3417,3426 ****
  c646c4f0f9d1c7b5e73df2311ec3c886  gcc/cobol/gcobol.1
  7a73ffe93cdd304879a42f225aa554ee  gcc/cobol/gcobol.3
  6c87ff946886a67b55671336b1424703  gcc/cobol/gcobolspec.cc
! db3ac350deb3029a6035f5c7e5e1b346  gcc/cobol/genapi.cc
  bf1f3209a68da408b87c6b8921d3c641  gcc/cobol/genapi.h
! 926207c629ee8f5d569aaa7d746dfc2f  gcc/cobol/gengen.cc
! 8d0ab0fc1957927b07dd60145858e817  gcc/cobol/gengen.h
  a89ae19c1e81dcbb7086fd601f1b74af  gcc/cobol/genmath.cc
  78d263e35c67698f367e118c95157cb4  gcc/cobol/genmath.h
  fee158af1cfa5022eac60abef361a3da  gcc/cobol/genutil.cc
--- 3417,3426 ----
  c646c4f0f9d1c7b5e73df2311ec3c886  gcc/cobol/gcobol.1
  7a73ffe93cdd304879a42f225aa554ee  gcc/cobol/gcobol.3
  6c87ff946886a67b55671336b1424703  gcc/cobol/gcobolspec.cc
! a25f2346ce37aa53bcbbe0c8559371a0  gcc/cobol/genapi.cc
  bf1f3209a68da408b87c6b8921d3c641  gcc/cobol/genapi.h
! 095b2ed454f8b8f789c9cf20557a7722  gcc/cobol/gengen.cc
! 56a3e27a2a359aac3fafe3bd38e08075  gcc/cobol/gengen.h
  a89ae19c1e81dcbb7086fd601f1b74af  gcc/cobol/genmath.cc
  78d263e35c67698f367e118c95157cb4  gcc/cobol/genmath.h
  fee158af1cfa5022eac60abef361a3da  gcc/cobol/genutil.cc
*************** c5ad0142a191862e3e81ecd3573754b3  gcc/co
*** 5652,5658 ****
  a424415c72a544d25e6518e1cf699300  gcc/coroutine-passes.cc
  11fc0e33834de003c7fdd80427589041  gcc/coverage.cc
  d27317cee558d7c78afbdb6529e36649  gcc/coverage.h
! ad7543ef2d045f6d18e760357834dca4  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
--- 5652,5658 ----
  a424415c72a544d25e6518e1cf699300  gcc/coroutine-passes.cc
  11fc0e33834de003c7fdd80427589041  gcc/coverage.cc
  d27317cee558d7c78afbdb6529e36649  gcc/coverage.h
! 300f99be28d6f5ad70375b5d04a86ad0  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
*************** f8396c35f56710f2dd577b8f6644d380  gcc/fo
*** 6278,6284 ****
  0fabcafd30e4b3ab34cafc5c6dfcee4c  gcc/fold-const.cc
  1c4ecad775c097fbffaf36b9320cf1db  gcc/fold-const.h
  87bf3dcaf0fa670e88b5693e7ece16d6  gcc/fold-mem-offsets.cc
! 0c74f3a9f5512243ed9f2f7e25aab5e1  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
--- 6278,6284 ----
  0fabcafd30e4b3ab34cafc5c6dfcee4c  gcc/fold-const.cc
  1c4ecad775c097fbffaf36b9320cf1db  gcc/fold-const.h
  87bf3dcaf0fa670e88b5693e7ece16d6  gcc/fold-mem-offsets.cc
! ff8732d31d848ad5db927b32828a6025  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
*************** f24751f278bee1ac8dc861467d9f96a3  gcc/ta
*** 8750,8756 ****
  8dfc7c2c4f5fcc8bae4e56f4908de008  gcc/targhooks.cc
  dcedef5930550e30cc9ea611bbffde5b  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! b0d78b973d9b61d94317551851e7d602  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
--- 8750,8756 ----
  8dfc7c2c4f5fcc8bae4e56f4908de008  gcc/targhooks.cc
  dcedef5930550e30cc9ea611bbffde5b  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 6f1c6509cc84cb1723d1c75fe7ef7ec6  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
*************** f7f3ede57639856878087542116a625d  libgco
*** 135873,135879 ****
  72f6d694311f4eb82bd18968a55dfc0f  libgcobol/valconv.cc
  3466db9e6fc5748c08c947e71a566c07  libgcobol/valconv.h
  8485adf73f6988a83d317bb42594aa15  libgcobol/xmlparse.cc
! 0c19e7f7ea41535dacc6bbf3f778d84c  libgfortran/ChangeLog
  d99469a76bfe825683f8d94fe07b508c  libgfortran/ChangeLog-2002
  522fdb2df6cefe6bcaed3c7c7311eae1  libgfortran/ChangeLog-2003
  5a3a93e76d878d063aba66079340cfe0  libgfortran/ChangeLog-2004
--- 135873,135879 ----
  72f6d694311f4eb82bd18968a55dfc0f  libgcobol/valconv.cc
  3466db9e6fc5748c08c947e71a566c07  libgcobol/valconv.h
  8485adf73f6988a83d317bb42594aa15  libgcobol/xmlparse.cc
! 74a14bd15bef51e6288c56754bac9bd9  libgfortran/ChangeLog
  d99469a76bfe825683f8d94fe07b508c  libgfortran/ChangeLog-2002
  522fdb2df6cefe6bcaed3c7c7311eae1  libgfortran/ChangeLog-2003
  5a3a93e76d878d063aba66079340cfe0  libgfortran/ChangeLog-2004
*************** a73d560a3ba317c5ad0a7919d87b4b6d  libssp
*** 148158,148164 ****
  7d75fa0d30318408fe4cd91d9cbe3ac7  libssp/vsnprintf-chk.c
  e9ff0f4bdd1be75a507480ed1267459d  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! 2f998ed621d8cb62c241e5334a963ab0  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
--- 148158,148164 ----
  7d75fa0d30318408fe4cd91d9cbe3ac7  libssp/vsnprintf-chk.c
  e9ff0f4bdd1be75a507480ed1267459d  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! 9c27e91d1538f6df482c14048cfc2af2  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
diff -Nrcpad gcc-17-20260726/gcc/ChangeLog gcc-17-20260727/gcc/ChangeLog
*** gcc-17-20260726/gcc/ChangeLog	Sun Jul 26 22:32:05 2026
--- gcc-17-20260727/gcc/ChangeLog	Mon Jul 27 02:16:03 2026
***************
*** 1,3 ****
--- 1,9 ----
+ 2026-07-26  Pan Li  <pan2.li@intel.com>
+ 
+ 	* config/riscv/riscv-v.cc (riscv_v_widen_constraint_ok): Return
+ 	false when wide_mode and mode are same.
+ 	* config/riscv/vector.md: Leverage Wvr constraint.
+ 
  2026-07-25  Andrea Pinski  <andrew.pinski@oss.qualcomm.com>
  
  	PR tree-optimization/126138
diff -Nrcpad gcc-17-20260726/gcc/DATESTAMP gcc-17-20260727/gcc/DATESTAMP
*** gcc-17-20260726/gcc/DATESTAMP	Sun Jul 26 22:32:05 2026
--- gcc-17-20260727/gcc/DATESTAMP	Mon Jul 27 02:16:03 2026
***************
*** 1 ****
! 20260726
--- 1 ----
! 20260727
diff -Nrcpad gcc-17-20260726/gcc/cobol/genapi.cc gcc-17-20260727/gcc/cobol/genapi.cc
*** gcc-17-20260726/gcc/cobol/genapi.cc	Sun Jul 26 22:32:06 2026
--- gcc-17-20260727/gcc/cobol/genapi.cc	Mon Jul 27 02:16:04 2026
*************** parser_initialize_programs( size_t nprog
*** 884,918 ****
      }
    }
  
! static
! tree
! array_of_long_long(const char *name, const std::vector<uint64_t>& vals)
    {
!   // We need to create a file-static static array of 64-bit integers:
!   tree array_of_ulonglong_type = build_array_type_nelts(ULONGLONG, vals.size()+1);
!   tree array_of_ulonglong = gg_define_variable( array_of_ulonglong_type,
!                                                 name,
!                                                 vs_file_static);
!   // We have the array.  Now we need to build the constructor for it
!   tree constr = make_node(CONSTRUCTOR);
!   TREE_TYPE(constr) = array_of_ulonglong_type;
!   TREE_STATIC(constr)    = 1;
!   TREE_CONSTANT(constr)  = 1;
  
!   // The first element of the array contains the number of elements to follow
!   CONSTRUCTOR_APPEND_ELT( CONSTRUCTOR_ELTS(constr),
!                           build_int_cst_type(SIZE_T, 0),
!                           build_int_cst_type(ULONGLONG, vals.size()) );
!   for(size_t i=0; i<vals.size(); i++)
      {
!     CONSTRUCTOR_APPEND_ELT( CONSTRUCTOR_ELTS(constr),
!                             build_int_cst_type(SIZE_T, i+1),
!                             build_int_cst_type(ULONGLONG, vals[i]) );
      }
!   DECL_INITIAL(array_of_ulonglong) = constr;
    return array_of_ulonglong;
    }
  
  /*
   * As ECs are enabled and disabled with >>TURN, the compiler updates its list
   * of enabled ECs (and any files they apply to). It encodes this list as an
--- 884,982 ----
      }
    }
  
! static tree
! array_of_long_long(const char *name,
!                    const std::vector<uint64_t> &vals)
    {
!   /*
!    * Create:
!    *
!    *   static const unsigned long long name[] =
!    *     {
!    *     vals.size(),
!    *     vals[0],
!    *     vals[1],
!    *     ...
!    *     };
!    */
!   tree const_ulonglong_type =
!     build_qualified_type( ULONGLONG,
!                           TYPE_QUAL_CONST );
!   tree array_of_ulonglong_type =
!     build_array_type_nelts( const_ulonglong_type,
!                             vals.size()+1 );
!   tree array_of_ulonglong =
!     gg_define_variable( array_of_ulonglong_type,
!                         name,
!                         vs_file_static );
!   vec<constructor_elt, va_gc> *elts = NULL;
!   /*
!    * The first element contains the number of elements that follow.
!    */
!   CONSTRUCTOR_APPEND_ELT(
!     elts,
!     bitsize_int( 0 ),
!     build_int_cstu( ULONGLONG, vals.size() ) );
  
!   for( size_t i=0; i<vals.size(); i++ )
      {
!     CONSTRUCTOR_APPEND_ELT(
!       elts,
!       bitsize_int( i+1 ),
!       build_int_cstu( ULONGLONG, vals[i] ) );
      }
!   tree constr =
!     build_constructor( array_of_ulonglong_type,
!                        elts );
!   /*
!    * build_constructor() determines TREE_CONSTANT from its elements.
!    * All of these elements are INTEGER_CST nodes.
!    */
!   gcc_assert( TREE_CONSTANT( constr ) );
!   /*
!    * The constructor represents a value suitable for static storage.
!    */
!   TREE_STATIC( constr ) = 1;
!   /*
!    * Record the const qualification on the declaration itself.
!    */
!   TREE_READONLY( array_of_ulonglong ) = 1;
!   DECL_INITIAL( array_of_ulonglong ) = constr;
    return array_of_ulonglong;
    }
  
+ tree
+ gg_array_of_size_t(const std::vector<size_t> &values)
+   {
+   gcc_assert( !values.empty() );
+   tree const_size_t_type = build_qualified_type( SIZE_T, TYPE_QUAL_CONST );
+   tree array_type = build_array_type_nelts( const_size_t_type, values.size() );
+ 
+   vec<constructor_elt, va_gc> *elts = NULL;
+   for( size_t i = 0; i < values.size(); i++ )
+     {
+     CONSTRUCTOR_APPEND_ELT(
+       elts,
+       bitsize_int( i ),
+       build_int_cstu( SIZE_T, values[i] ) );
+     }
+   tree constr = build_constructor( array_type, elts );
+   /*
+    * This marks the constant constructor as suitable for static
+    * allocation.  It does not give the VAR_DECL static storage
+    * duration.
+    */
+   TREE_STATIC( constr ) = 1;
+   tree array_decl = gg_define_variable( array_type );
+   /*
+    * Represent the const qualification on the object as well as on
+    * its array element type.
+    */
+   TREE_READONLY( array_decl ) = 1;
+   DECL_INITIAL( array_decl ) = constr;
+   return gg_pointer_to_array(array_decl);
+   }
+ 
  /*
   * As ECs are enabled and disabled with >>TURN, the compiler updates its list
   * of enabled ECs (and any files they apply to). It encodes this list as an
*************** parser_bsearch_end( cbl_label_t* name )
*** 11592,11611 ****
    }
  
  tree
! gg_array_of_field_pointers( size_t N,
!                             cbl_field_t **fields )
    {
!   tree retval = gg_define_variable(build_pointer_type(cblc_field_p_type_node));
!   gg_assign(retval, gg_cast(build_pointer_type(cblc_field_p_type_node),
!                             gg_malloc(build_int_cst_type(SIZE_T,
!                                                          N * int_size_in_bytes(VOID_P)))));
!   for(size_t i=0; i<N; i++)
      {
!     gg_assign(gg_array_value(retval, i), gg_get_address_of(fields[i]->var_decl_node));
      }
    return retval;
    }
  
  static void
  push_program_state()
    {
--- 11656,11738 ----
    }
  
  tree
! gg_array_of_field_pointers( const std::vector<const cbl_field_t *> &fields )
    {
!   size_t N = fields.size();
!   gcc_assert(N);
! 
!   tree const_field_pointer_type =
!     build_qualified_type( cblc_field_p_type_node,
!                           TYPE_QUAL_CONST );
! 
!   tree array_type =
!     build_array_type_nelts( const_field_pointer_type, N );
! 
!   vec<constructor_elt, va_gc> *elts = NULL;
!   vec_alloc( elts, N );
! 
!   for( size_t i=0; i<N; i++ )
      {
!     gcc_assert( fields[i] != NULL );
!     gcc_assert( fields[i]->var_decl_node != NULL_TREE );
! 
!     tree field_pointer =
!       gg_cast( cblc_field_p_type_node,
!                gg_get_address_of( fields[i]->var_decl_node ) );
! 
!     CONSTRUCTOR_APPEND_ELT( elts,
!                             bitsize_int( i ),
!                             field_pointer );
      }
+ 
+   tree constr = build_constructor( array_type, elts );
+ 
+   tree retval = gg_define_variable( array_type );
+ 
+   TREE_READONLY( retval ) = 1;
+   DECL_INITIAL( retval ) = constr;
+ 
    return retval;
    }
  
+ tree
+ gg_array_of_uchar_p( const std::vector<tree> &uchar_p )
+   {
+   size_t N = uchar_p.size();
+   if( !N )
+     {
+     return null_pointer_node;
+     }
+ 
+   tree const_uchar_p_type =
+     build_qualified_type( UCHAR_P,
+                           TYPE_QUAL_CONST );
+ 
+   tree array_type =
+     build_array_type_nelts( const_uchar_p_type, N );
+ 
+   vec<constructor_elt, va_gc> *elts = NULL;
+   vec_alloc( elts, N );
+ 
+   for( size_t i=0; i<N; i++ )
+     {
+     CONSTRUCTOR_APPEND_ELT( elts,
+                             bitsize_int( i ),
+                             uchar_p[i] );
+     }
+ 
+   tree constr = build_constructor( array_type, elts );
+ 
+   tree retval = gg_define_variable( array_type );
+ 
+   TREE_READONLY( retval ) = 1;
+   DECL_INITIAL( retval ) = constr;
+ 
+   // Return a pointer to the first element:
+   return gg_pointer_to_array(retval);
+   }
+ 
+ 
  static void
  push_program_state()
    {
*************** parser_sort(cbl_refer_t tableref,
*** 11648,11682 ****
              __func__,
              tableref.field->name);
      }
-   size_t total_keys = std::accumulate( keys.begin(), keys.end(), 0,
-                                        [](size_t n, const cbl_key_t& key ) {
-                                          return n + key.fields.size();
-                                        } );
-   typedef const cbl_field_t * const_field_t;
-   const_field_t *flattened_fields =
-      static_cast<const_field_t *>(xmalloc(total_keys * sizeof(cbl_field_t *)));
-   gcc_assert(flattened_fields);
-   size_t *flattened_ascending =
-                    static_cast<size_t *>(xmalloc(total_keys * sizeof(size_t)));
-   gcc_assert(flattened_ascending);
  
!   size_t key_index = 0;
    for( size_t i=0; i<keys.size(); i++ )
      {
      for( size_t j=0; j<keys[i].fields.size(); j++ )
        {
!       flattened_fields[key_index]    = keys[i].fields[j];
!       flattened_ascending[key_index] = keys[i].ascending ? 1 : 0;
!       key_index += 1;
        }
      }
  
!   // Create the array of cbl_field_t pointers for the keys
!   tree all_keys = gg_array_of_field_pointers( total_keys,
!                                               const_cast<cbl_field_t**>(flattened_fields));
  
    // Create the array of integers that are the flags for ASCENDING:
!   tree ascending = gg_array_of_size_t( total_keys, flattened_ascending );
  
    tree depending_on = gg_define_variable(LONG, "_sort_size");
    depending_on_value(depending_on, table);
--- 11775,11797 ----
              __func__,
              tableref.field->name);
      }
  
!   std::vector<const cbl_field_t *>flattened_fields_2;
!   std::vector<size_t>flattened_ascending_2;
    for( size_t i=0; i<keys.size(); i++ )
      {
      for( size_t j=0; j<keys[i].fields.size(); j++ )
        {
!       flattened_fields_2.push_back(keys[i].fields[j]);
!       flattened_ascending_2.push_back(keys[i].ascending ? 1 : 0);
        }
      }
  
!   tree all_keys = gg_pointer_to_array(
!                      gg_array_of_field_pointers(flattened_fields_2));
  
    // Create the array of integers that are the flags for ASCENDING:
!   tree ascending = gg_array_of_size_t(flattened_ascending_2 );
  
    tree depending_on = gg_define_variable(LONG, "_sort_size");
    depending_on_value(depending_on, table);
*************** parser_sort(cbl_refer_t tableref,
*** 11691,11697 ****
            gg_get_address_of(tableref.field->var_decl_node),
            refer_offset(tableref),
            gg_cast(SIZE_T, depending_on),
!           build_int_cst_type(SIZE_T, key_index),
            all_keys,
            ascending,
            duplicates ? integer_one_node : integer_zero_node,
--- 11806,11812 ----
            gg_get_address_of(tableref.field->var_decl_node),
            refer_offset(tableref),
            gg_cast(SIZE_T, depending_on),
!           build_int_cst_type(SIZE_T, flattened_fields_2.size()),
            all_keys,
            ascending,
            duplicates ? integer_one_node : integer_zero_node,
*************** parser_sort(cbl_refer_t tableref,
*** 11700,11711 ****
      {
      pop_program_state();
      }
- 
-   free(flattened_ascending);
-   free(flattened_fields);
- 
-   gg_free(ascending);
-   gg_free(all_keys);
    }
  
  void
--- 11815,11820 ----
*************** parser_file_sort(   cbl_file_t *workfile
*** 11789,11823 ****
    // clone of the code for handling multiple keys, each of which can have
    // multiple fields.
  
!   size_t total_keys = std::accumulate( keys.begin(), keys.end(), 0,
!                                        []( size_t n, const cbl_key_t& key ) {
!                                          return n + key.fields.size();
!                                        } );
!   typedef const cbl_field_t * const_field_t;
!   auto flattened_fields
!    = static_cast<const_field_t *>(xmalloc(total_keys * sizeof(cbl_field_t *)));
!   gcc_assert(flattened_fields);
!   size_t *flattened_ascending =
!                    static_cast<size_t *>(xmalloc(total_keys * sizeof(size_t)));
!   gcc_assert(flattened_ascending);
! 
!   size_t key_index = 0;
    for( size_t i=0; i<keys.size(); i++ )
      {
      for( size_t j=0; j<keys[i].fields.size(); j++ )
        {
!       flattened_fields[key_index]    = keys[i].fields[j];
!       flattened_ascending[key_index] = keys[i].ascending ? 1 : 0;
!       key_index += 1;
        }
      }
  
    // Create the array of cbl_field_t pointers for the keys
!   tree all_keys = gg_array_of_field_pointers( total_keys,
!                                               const_cast<cbl_field_t**>(flattened_fields));
  
    // Create the array of integers that are the flags for ASCENDING:
!   tree ascending = gg_array_of_size_t( total_keys, flattened_ascending );
  
    // We need to open the workfile for the sorting routine:
    parser_file_open(workfile, 'r');
--- 11898,11920 ----
    // clone of the code for handling multiple keys, each of which can have
    // multiple fields.
  
!   std::vector<const cbl_field_t *>flattened_fields_2;
!   std::vector<size_t>flattened_ascending_2;
    for( size_t i=0; i<keys.size(); i++ )
      {
      for( size_t j=0; j<keys[i].fields.size(); j++ )
        {
!       flattened_fields_2.push_back(keys[i].fields[j]);
!       flattened_ascending_2.push_back(keys[i].ascending ? 1 : 0);
        }
      }
  
    // Create the array of cbl_field_t pointers for the keys
!   tree all_keys = gg_pointer_to_array(
!                      gg_array_of_field_pointers(flattened_fields_2));
  
    // Create the array of integers that are the flags for ASCENDING:
!   tree ascending = gg_array_of_size_t(flattened_ascending_2 );
  
    // We need to open the workfile for the sorting routine:
    parser_file_open(workfile, 'r');
*************** parser_file_sort(   cbl_file_t *workfile
*** 11837,11843 ****
    gg_call(VOID,
            "__gg__sort_workfile",
            gg_get_address_of(workfile->var_decl_node),
!           build_int_cst_type(SIZE_T, key_index),
            all_keys,
            ascending,
            duplicates ? integer_one_node : integer_zero_node,
--- 11934,11940 ----
    gg_call(VOID,
            "__gg__sort_workfile",
            gg_get_address_of(workfile->var_decl_node),
!           build_int_cst_type(SIZE_T, flattened_fields_2.size()),
            all_keys,
            ascending,
            duplicates ? integer_one_node : integer_zero_node,
*************** parser_file_sort(   cbl_file_t *workfile
*** 11848,11858 ****
      }
    parser_file_close(workfile);
  
-   free(flattened_ascending);
-   free(flattened_fields);
-   gg_free(ascending);
-   gg_free(all_keys);
- 
    // The workfile is sorted.  We move to Phase 3 -- transferring the workfile
    // to the output.
  
--- 11945,11950 ----
*************** parser_file_merge(  cbl_file_t *workfile
*** 12141,12177 ****
                  build_int_cst_type(INT, file_sequential_e));
      }
  
!   size_t total_keys = std::accumulate( keys.begin(), keys.end(), 0,
!                                        []( size_t i, const cbl_key_t& key ) {
!                                          return i + key.fields.size();
!                                        } );
!   typedef const cbl_field_t * const_field_t;
!   const_field_t *flattened_fields
!                  = static_cast<const_field_t *>
!                    (xmalloc(total_keys * sizeof(cbl_field_t *)));
!   gcc_assert(flattened_fields);
!   size_t *flattened_ascending
!             = static_cast<size_t *>(xmalloc(total_keys * sizeof(size_t)));
!   gcc_assert(flattened_ascending);
! 
!   size_t key_index = 0;
    for( size_t i=0; i<keys.size(); i++ )
      {
      for( size_t j=0; j<keys[i].fields.size(); j++ )
        {
!       flattened_fields[key_index]    = keys[i].fields[j];
!       flattened_ascending[key_index] = keys[i].ascending ? 1 : 0;
!       key_index += 1;
        }
      }
  
    // Create the array of cbl_field_t pointers for the keys
!   tree all_keys = gg_array_of_field_pointers(
!                                  total_keys,
!                                  const_cast<cbl_field_t**>(flattened_fields));
  
    // Create the array of integers that are the flags for ASCENDING:
!   tree ascending = gg_array_of_size_t(total_keys, flattened_ascending);
  
    tree all_files = gg_array_of_file_pointers(ninputs, inputs);
  
--- 12233,12255 ----
                  build_int_cst_type(INT, file_sequential_e));
      }
  
!   std::vector<const cbl_field_t *>flattened_fields_2;
!   std::vector<size_t>flattened_ascending_2;
    for( size_t i=0; i<keys.size(); i++ )
      {
      for( size_t j=0; j<keys[i].fields.size(); j++ )
        {
!       flattened_fields_2.push_back(keys[i].fields[j]);
!       flattened_ascending_2.push_back(keys[i].ascending ? 1 : 0);
        }
      }
  
    // Create the array of cbl_field_t pointers for the keys
!   tree all_keys = gg_pointer_to_array(
!                      gg_array_of_field_pointers(flattened_fields_2));
  
    // Create the array of integers that are the flags for ASCENDING:
!   tree ascending = gg_array_of_size_t(flattened_ascending_2 );
  
    tree all_files = gg_array_of_file_pointers(ninputs, inputs);
  
*************** parser_file_merge(  cbl_file_t *workfile
*** 12249,12259 ****
      pop_program_state();
      }
  
-   free(flattened_ascending);
-   free(flattened_fields);
-   gg_free(ascending);
-   gg_free(all_keys);
- 
    parser_file_close(workfile);
    for(size_t i=0; i<ninputs; i++)
      {
--- 12327,12332 ----
diff -Nrcpad gcc-17-20260726/gcc/cobol/gengen.cc gcc-17-20260727/gcc/cobol/gengen.cc
*** gcc-17-20260726/gcc/cobol/gengen.cc	Sun Jul 26 22:32:06 2026
--- gcc-17-20260727/gcc/cobol/gengen.cc	Mon Jul 27 02:16:04 2026
*************** gg_sizeof(tree node)
*** 3415,3433 ****
    }
  
  tree
- gg_array_of_size_t( size_t N, size_t *values)
-   {
-   tree retval = gg_define_variable(build_pointer_type(SIZE_T));
-   tree sz = build_int_cst_type(SIZE_T, N * int_size_in_bytes(SIZE_T));
-   gg_assign(retval, gg_cast(build_pointer_type(SIZE_T), gg_malloc(sz)));
-   for(size_t i=0; i<N; i++)
-     {
-     gg_assign(gg_array_value(retval, i), build_int_cst_type(SIZE_T, values[i]));
-     }
-   return retval;
-   }
- 
- tree
  gg_array_of_bytes( size_t N, unsigned char *values)
    {
    tree retval = gg_define_variable(UCHAR_P);
--- 3415,3420 ----
diff -Nrcpad gcc-17-20260726/gcc/cobol/gengen.h gcc-17-20260727/gcc/cobol/gengen.h
*** gcc-17-20260726/gcc/cobol/gengen.h	Sun Jul 26 22:32:06 2026
--- gcc-17-20260727/gcc/cobol/gengen.h	Mon Jul 27 02:16:04 2026
*************** extern void gg_free(tree pointer);
*** 563,571 ****
  extern tree gg_strlen(tree psz);
  extern size_t gg_sizeof(tree decl_node);
  
! extern tree gg_array_of_field_pointers( size_t N,
!                                         cbl_field_t **fields );
! extern tree gg_array_of_size_t( size_t N, size_t *values);
  extern tree gg_array_of_bytes( size_t N, unsigned char *values);
  extern tree gg_indirect(tree pointer, tree byte_offset = NULL_TREE);
  extern tree gg_indirect_i(tree pointer, size_t offset=0);
--- 563,569 ----
  extern tree gg_strlen(tree psz);
  extern size_t gg_sizeof(tree decl_node);
  
! extern tree gg_array_of_field_pointers( const std::vector<cbl_field_t *> &fields );
  extern tree gg_array_of_bytes( size_t N, unsigned char *values);
  extern tree gg_indirect(tree pointer, tree byte_offset = NULL_TREE);
  extern tree gg_indirect_i(tree pointer, size_t offset=0);
diff -Nrcpad gcc-17-20260726/gcc/cp/ChangeLog gcc-17-20260727/gcc/cp/ChangeLog
*** gcc-17-20260726/gcc/cp/ChangeLog	Sun Jul 26 22:32:07 2026
--- gcc-17-20260727/gcc/cp/ChangeLog	Mon Jul 27 02:16:05 2026
***************
*** 1,3 ****
--- 1,15 ----
+ 2026-07-26  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/96645
+ 	* parser.cc (cp_parser_early_parsing_nsdmi): New.
+ 	(cp_parser_member_declaration): Call it.
+ 
+ 2026-07-26  Odysseas Georgoudis  <odygrd@hotmail.com>
+ 
+ 	PR c++/126323
+ 	* parser.cc (cp_parser_pragma): Reject GCC loop pragmas outside
+ 	statement contexts.
+ 
  2026-07-25  Patrick Palka  <ppalka@redhat.com>
  
  	PR c++/126280
diff -Nrcpad gcc-17-20260726/gcc/fortran/ChangeLog gcc-17-20260727/gcc/fortran/ChangeLog
*** gcc-17-20260726/gcc/fortran/ChangeLog	Sun Jul 26 22:32:07 2026
--- gcc-17-20260727/gcc/fortran/ChangeLog	Mon Jul 27 02:16:06 2026
***************
*** 1,3 ****
--- 1,9 ----
+ 2026-07-26  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/126386
+ 	* frontend-passes.cc (matmul_lhs_realloc):  Fix size calculation of
+ 	A2B1 case.
+ 
  2026-07-22  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
  
  	PR fortran/78718
diff -Nrcpad gcc-17-20260726/gcc/testsuite/ChangeLog gcc-17-20260727/gcc/testsuite/ChangeLog
*** gcc-17-20260726/gcc/testsuite/ChangeLog	Sun Jul 26 22:32:09 2026
--- gcc-17-20260727/gcc/testsuite/ChangeLog	Mon Jul 27 02:16:09 2026
***************
*** 1,3 ****
--- 1,67 ----
+ 2026-07-26  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	* gfortran.dg/reduce_5.f90: Verify the previously dead
+ 	code error message occurs.
+ 
+ 2026-07-26  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/96645
+ 	* g++.dg/cpp0x/nsdmi10.C: Distinguish simple case.
+ 	* g++.dg/ext/is_constructible7.C: New.
+ 
+ 2026-07-26  Odysseas Georgoudis  <odygrd@hotmail.com>
+ 
+ 	PR c++/126323
+ 	* g++.dg/parse/pr126323.C: New test.
+ 
+ 2026-07-26  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/126386
+ 	* gfortran.dg/inline_matmul_28.f90: New test.
+ 
+ 2026-07-26  Pan Li  <pan2.li@intel.com>
+ 
+ 	* gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul8-11.c: Remove
+ 	xfail.
+ 
+ 2026-07-26  Pan Li  <pan2.li@intel.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_wv-u16-m1.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_wv-u16-m2.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_wv-u16-m4.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_wv-u16-mf2.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_wv-u16-mf4.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_wv-u32-m1.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_wv-u32-m2.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_wv-u32-m4.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_wv-u32-mf2.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_wv-u8-m1.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_wv-u8-m2.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_wv-u8-m4.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_wv-u8-mf2.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_wv-u8-mf4.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_wv-u8-mf8.c: New test.
+ 
+ 2026-07-26  Pan Li  <pan2.li@intel.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/group_overlap.h:
+ 	Add test helper macros.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwadd_wv-i16-m1.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwadd_wv-i16-m2.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwadd_wv-i16-m4.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwadd_wv-i16-mf2.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwadd_wv-i16-mf4.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwadd_wv-i32-m1.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwadd_wv-i32-m2.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwadd_wv-i32-m4.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwadd_wv-i32-mf2.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwadd_wv-i8-m1.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwadd_wv-i8-m2.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwadd_wv-i8-m4.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwadd_wv-i8-mf2.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwadd_wv-i8-mf4.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwadd_wv-i8-mf8.c: New test.
+ 
  2026-07-25  Andrea Pinski  <andrew.pinski@oss.qualcomm.com>
  
  	PR tree-optimization/126138
diff -Nrcpad gcc-17-20260726/libgfortran/ChangeLog gcc-17-20260727/libgfortran/ChangeLog
*** gcc-17-20260726/libgfortran/ChangeLog	Sun Jul 26 22:32:19 2026
--- gcc-17-20260727/libgfortran/ChangeLog	Mon Jul 27 02:16:18 2026
***************
*** 1,3 ****
--- 1,7 ----
+ 2026-07-26  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	* intrinsics/reduce.c (reduce): Fix the mask_present.
+ 
  2026-07-25  John David Anglin  <danglin@gcc.gnu.org>
  
  	* intrinsics/ceill_16.c: Fix whitespace.
diff -Nrcpad gcc-17-20260726/libstdc++-v3/ChangeLog gcc-17-20260727/libstdc++-v3/ChangeLog
*** gcc-17-20260726/libstdc++-v3/ChangeLog	Sun Jul 26 22:32:20 2026
--- gcc-17-20260727/libstdc++-v3/ChangeLog	Mon Jul 27 02:16:20 2026
***************
*** 1,3 ****
--- 1,9 ----
+ 2026-07-26  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	* testsuite/23_containers/flat_map/1.cc (test14): Reserve
+ 	sufficient capacity for the underlying containers before
+ 	calling insert_range.
+ 
  2026-07-25  Patrick Palka  <ppalka@redhat.com>
  
  	* include/std/ranges (__detail::__compatible_joinable_ranges):
