diff -Nrcpad gcc-12-20250625/LAST_UPDATED gcc-12-20250702/LAST_UPDATED
*** gcc-12-20250625/LAST_UPDATED	Wed Jun 25 22:33:35 2025
--- gcc-12-20250702/LAST_UPDATED	Wed Jul  2 22:33:08 2025
***************
*** 1 ****
! Obtained from git: releases/gcc-12 revision ee04d1554aa87d6155bd96e38c91351871273b51
--- 1 ----
! Obtained from git: releases/gcc-12 revision 14d40a2c5616e0a7225a95c801c0af78523b352e
diff -Nrcpad gcc-12-20250625/MD5SUMS gcc-12-20250702/MD5SUMS
*** gcc-12-20250625/MD5SUMS	Wed Jun 25 22:33:45 2025
--- gcc-12-20250702/MD5SUMS	Wed Jul  2 22:33:23 2025
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the
! # gcc-12-20250625.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-12-20250702.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
*** 21,27 ****
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 2cc0915acfee20dc1e93d762d1285e96  LAST_UPDATED
  e854cb1e639422e089031eba0c689e15  MAINTAINERS
  5b26d0dff99e7a528342ab4d77a284df  Makefile.def
  e2f1751d40a9663c173f048c1179539e  Makefile.in
--- 21,27 ----
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 4f274f73d280b5a73cf2bed0582bbe01  LAST_UPDATED
  e854cb1e639422e089031eba0c689e15  MAINTAINERS
  5b26d0dff99e7a528342ab4d77a284df  Makefile.def
  e2f1751d40a9663c173f048c1179539e  Makefile.in
*************** a22e70b3f29292d0e628450f4bb11e62  fixinc
*** 471,477 ****
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! b5152831e23ce253dba8701332cfd0ec  gcc/ChangeLog
  a3b63c675afa7a655cc2bfa8a907af79  gcc/ChangeLog-1997
  d9a88529352a010253c2e8fb1ed6023b  gcc/ChangeLog-1998
  240f08f81cb4699e8b49347db38233db  gcc/ChangeLog-1999
--- 471,477 ----
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! 0330cdfa11ad7cfdd4df8087b0850b03  gcc/ChangeLog
  a3b63c675afa7a655cc2bfa8a907af79  gcc/ChangeLog-1997
  d9a88529352a010253c2e8fb1ed6023b  gcc/ChangeLog-1998
  240f08f81cb4699e8b49347db38233db  gcc/ChangeLog-1999
*************** fb3fadb88e1d2b3b640cfaaa5ff11780  gcc/Ch
*** 505,511 ****
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! c2b049aafeb16d45271039b11ba0213e  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
--- 505,511 ----
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! ecc61cbf47e5df64dfd2176ef473c4e9  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
*************** cedfeeeb6a89b08187da0a55778ff05c  gcc/gi
*** 5798,5804 ****
  b1f2597055332f7a009df2374360eee2  gcc/gimple.h
  1a79444af2bcf0c019b20c37cb346635  gcc/gimplify-me.cc
  489260dcd67a90caca7adf7b361f9078  gcc/gimplify-me.h
! adc06b7bc4e15aaf432bdf822037fa7f  gcc/gimplify.cc
  acbd4cf19da012507fa6f90cc988cc15  gcc/gimplify.h
  4b707ba8acc84c0c2c69cd7d11b0b878  gcc/ginclude/float.h
  5e92ed0886d68a4cce339044cf03cd57  gcc/ginclude/iso646.h
--- 5798,5804 ----
  b1f2597055332f7a009df2374360eee2  gcc/gimple.h
  1a79444af2bcf0c019b20c37cb346635  gcc/gimplify-me.cc
  489260dcd67a90caca7adf7b361f9078  gcc/gimplify-me.h
! 84cbbf230c30eb137d19c257ba9b3d37  gcc/gimplify.cc
  acbd4cf19da012507fa6f90cc988cc15  gcc/gimplify.h
  4b707ba8acc84c0c2c69cd7d11b0b878  gcc/ginclude/float.h
  5e92ed0886d68a4cce339044cf03cd57  gcc/ginclude/iso646.h
*************** e3a631a3659e24702ef403fc44290218  gcc/ip
*** 5952,5958 ****
  1fa2c0c59dc4da56860cc6f2a97f7f83  gcc/ipa-inline.h
  df25330f62b3dfe116e3d208d97382c0  gcc/ipa-modref-tree.cc
  e232a9fa53a9e55ca7d904fd6d08cfd3  gcc/ipa-modref-tree.h
! 126441c3cc34afc6a7879bc1532876bb  gcc/ipa-modref.cc
  a1998332fb371fefb1d136e55f251318  gcc/ipa-modref.h
  a3ac337da07de091ab3c184819c1c37e  gcc/ipa-param-manipulation.cc
  1642ce52f56ac97998826713b05f7f8e  gcc/ipa-param-manipulation.h
--- 5952,5958 ----
  1fa2c0c59dc4da56860cc6f2a97f7f83  gcc/ipa-inline.h
  df25330f62b3dfe116e3d208d97382c0  gcc/ipa-modref-tree.cc
  e232a9fa53a9e55ca7d904fd6d08cfd3  gcc/ipa-modref-tree.h
! 6bcef7c284c11575ef0242a4d7bc6c88  gcc/ipa-modref.cc
  a1998332fb371fefb1d136e55f251318  gcc/ipa-modref.h
  a3ac337da07de091ab3c184819c1c37e  gcc/ipa-param-manipulation.cc
  1642ce52f56ac97998826713b05f7f8e  gcc/ipa-param-manipulation.h
*************** d50cfc924c3c6bfe48d010f49b0320c5  gcc/te
*** 23542,23547 ****
--- 23542,23548 ----
  ff90a96b0f5bda64aea35147770302e1  gcc/testsuite/g++.dg/pr65240.h
  225c688c4f2ead1be77c30e05bf4245c  gcc/testsuite/g++.dg/pr65242.C
  c987d521d6ec4222a0bbaff58ae0df77  gcc/testsuite/g++.dg/pr65295.C
+ 2909098d71cb5efcd254025c0c520d24  gcc/testsuite/g++.dg/pr66279.C
  20bcb78b164336c6b42304de362d905a  gcc/testsuite/g++.dg/pr66655.C
  575d8cfa0f7cc7a30ac74c14eec274d2  gcc/testsuite/g++.dg/pr66655.h
  9b717eabe7d22f65a71673e3ffc1470b  gcc/testsuite/g++.dg/pr66655_1.cc
*************** e9fae9939f9a5d14b26478a649025c7f  gcc/tr
*** 92388,92394 ****
  a4f99ae3557e1161cd896d23217b56a4  gcc/tree-ssa-address.cc
  4233bdbcb0d4183c9631eebafa6f4820  gcc/tree-ssa-address.h
  5daf63c693503c3da59da196d885d1e6  gcc/tree-ssa-alias-compare.h
! ed4dd5acb48903e43ccc6a0ec8a84ee9  gcc/tree-ssa-alias.cc
  9693c083b57172a5de1c03311467b54f  gcc/tree-ssa-alias.h
  23fb697a5ea55d90dd0c107ea0e9fda7  gcc/tree-ssa-ccp.cc
  038e40c57d9c925b2f2ab27ce65aec68  gcc/tree-ssa-ccp.h
--- 92389,92395 ----
  a4f99ae3557e1161cd896d23217b56a4  gcc/tree-ssa-address.cc
  4233bdbcb0d4183c9631eebafa6f4820  gcc/tree-ssa-address.h
  5daf63c693503c3da59da196d885d1e6  gcc/tree-ssa-alias-compare.h
! dc0aa437d25ec8ade9764d659b50b101  gcc/tree-ssa-alias.cc
  9693c083b57172a5de1c03311467b54f  gcc/tree-ssa-alias.h
  23fb697a5ea55d90dd0c107ea0e9fda7  gcc/tree-ssa-ccp.cc
  038e40c57d9c925b2f2ab27ce65aec68  gcc/tree-ssa-ccp.h
diff -Nrcpad gcc-12-20250625/gcc/ChangeLog gcc-12-20250702/gcc/ChangeLog
*** gcc-12-20250625/gcc/ChangeLog	Wed Jun 25 22:32:16 2025
--- gcc-12-20250702/gcc/ChangeLog	Wed Jul  2 22:32:05 2025
***************
*** 1,3 ****
--- 1,9 ----
+ 2025-06-25  Haochen Jiang  <haochen.jiang@intel.com>
+ 
+ 	* config/i386/i386.h (PTA_ALDERLAKE): Use PTA_GOLDMONT_PLUS
+ 	as base to remove PTA_CLDEMOTE.
+ 	* doc/invoke.texi: Update texi file.
+ 
  2025-06-24  Richard Biener  <rguenther@suse.de>
  
  	Backported from master:
diff -Nrcpad gcc-12-20250625/gcc/DATESTAMP gcc-12-20250702/gcc/DATESTAMP
*** gcc-12-20250625/gcc/DATESTAMP	Wed Jun 25 22:32:17 2025
--- gcc-12-20250702/gcc/DATESTAMP	Wed Jul  2 22:32:05 2025
***************
*** 1 ****
! 20250625
--- 1 ----
! 20250702
diff -Nrcpad gcc-12-20250625/gcc/gimplify.cc gcc-12-20250702/gcc/gimplify.cc
*** gcc-12-20250625/gcc/gimplify.cc	Wed Jun 25 22:32:18 2025
--- gcc-12-20250702/gcc/gimplify.cc	Wed Jul  2 22:32:07 2025
*************** gimplify_asm_expr (tree *expr_p, gimple_
*** 6659,6664 ****
--- 6659,6665 ----
  	  /* Turn the in/out constraint into an output constraint.  */
  	  char *p = xstrdup (constraint);
  	  p[0] = '=';
+ 	  TREE_PURPOSE (link) = unshare_expr (TREE_PURPOSE (link));
  	  TREE_VALUE (TREE_PURPOSE (link)) = build_string (constraint_len, p);
  
  	  /* And add a matching input constraint.  */
diff -Nrcpad gcc-12-20250625/gcc/ipa-modref.cc gcc-12-20250702/gcc/ipa-modref.cc
*** gcc-12-20250625/gcc/ipa-modref.cc	Wed Jun 25 22:32:18 2025
--- gcc-12-20250702/gcc/ipa-modref.cc	Wed Jul  2 22:32:08 2025
*************** analyze_function (bool ipa)
*** 3294,3300 ****
  		    fprintf (dump_file, "  Flags for param %i improved:",
  			     (int)i);
  		  else
! 		    gcc_unreachable ();
  		  dump_eaf_flags (dump_file, old_flags, false);
  		  fprintf (dump_file, " -> ");
  		  dump_eaf_flags (dump_file, new_flags, true);
--- 3294,3301 ----
  		    fprintf (dump_file, "  Flags for param %i improved:",
  			     (int)i);
  		  else
! 		    fprintf (dump_file, "  Flags for param %i changed:",
! 			     (int)i);
  		  dump_eaf_flags (dump_file, old_flags, false);
  		  fprintf (dump_file, " -> ");
  		  dump_eaf_flags (dump_file, new_flags, true);
*************** analyze_function (bool ipa)
*** 3310,3316 ****
  		  || (summary->retslot_flags & EAF_UNUSED))
  		fprintf (dump_file, "  Flags for retslot improved:");
  	      else
! 		gcc_unreachable ();
  	      dump_eaf_flags (dump_file, past_retslot_flags, false);
  	      fprintf (dump_file, " -> ");
  	      dump_eaf_flags (dump_file, summary->retslot_flags, true);
--- 3311,3317 ----
  		  || (summary->retslot_flags & EAF_UNUSED))
  		fprintf (dump_file, "  Flags for retslot improved:");
  	      else
! 		fprintf (dump_file, "  Flags for retslot changed:");
  	      dump_eaf_flags (dump_file, past_retslot_flags, false);
  	      fprintf (dump_file, " -> ");
  	      dump_eaf_flags (dump_file, summary->retslot_flags, true);
*************** analyze_function (bool ipa)
*** 3325,3331 ****
  		  || (summary->static_chain_flags & EAF_UNUSED))
  		fprintf (dump_file, "  Flags for static chain improved:");
  	      else
! 		gcc_unreachable ();
  	      dump_eaf_flags (dump_file, past_static_chain_flags, false);
  	      fprintf (dump_file, " -> ");
  	      dump_eaf_flags (dump_file, summary->static_chain_flags, true);
--- 3326,3332 ----
  		  || (summary->static_chain_flags & EAF_UNUSED))
  		fprintf (dump_file, "  Flags for static chain improved:");
  	      else
! 		fprintf (dump_file, "  Flags for static chain changed:");
  	      dump_eaf_flags (dump_file, past_static_chain_flags, false);
  	      fprintf (dump_file, " -> ");
  	      dump_eaf_flags (dump_file, summary->static_chain_flags, true);
diff -Nrcpad gcc-12-20250625/gcc/testsuite/g++.dg/pr66279.C gcc-12-20250702/gcc/testsuite/g++.dg/pr66279.C
*** gcc-12-20250625/gcc/testsuite/g++.dg/pr66279.C	Thu Jan  1 00:00:00 1970
--- gcc-12-20250702/gcc/testsuite/g++.dg/pr66279.C	Wed Jul  2 22:32:11 2025
***************
*** 0 ****
--- 1,23 ----
+ // { dg-do run }
+ 
+ struct A {};
+ 
+ struct B : public virtual A
+ {
+   B();
+ };
+ 
+ B::B()
+ {
+   unsigned int x = 42;
+ 
+   __asm__ __volatile__ ("" : "+r"(x));
+ 
+   if (x != 42)
+     __builtin_abort ();
+ }
+ 
+ int main()
+ {
+   B b;
+ }
diff -Nrcpad gcc-12-20250625/gcc/tree-ssa-alias.cc gcc-12-20250702/gcc/tree-ssa-alias.cc
*** gcc-12-20250625/gcc/tree-ssa-alias.cc	Wed Jun 25 22:32:47 2025
--- gcc-12-20250702/gcc/tree-ssa-alias.cc	Wed Jul  2 22:32:36 2025
*************** along with GCC; see the file COPYING3.
*** 87,96 ****
  
       This function tries to disambiguate two reference trees.
  
!    bool ptr_deref_may_alias_global_p (tree)
  
       This function queries if dereferencing a pointer variable may
!      alias global memory.
  
     More low-level disambiguators are available and documented in
     this file.  Low-level disambiguators dealing with points-to
--- 87,97 ----
  
       This function tries to disambiguate two reference trees.
  
!    bool ptr_deref_may_alias_global_p (tree, bool)
  
       This function queries if dereferencing a pointer variable may
!      alias global memory.  If bool argument is true, global memory
!      is considered to also include function local memory that escaped.
  
     More low-level disambiguators are available and documented in
     this file.  Low-level disambiguators dealing with points-to
*************** stmt_kills_ref_p (gimple *stmt, ao_ref *
*** 3346,3356 ****
        && TREE_CODE (gimple_get_lhs (stmt)) != SSA_NAME
        /* The assignment is not necessarily carried out if it can throw
  	 and we can catch it in the current function where we could inspect
! 	 the previous value.
  	 ???  We only need to care about the RHS throwing.  For aggregate
  	 assignments or similar calls and non-call exceptions the LHS
! 	 might throw as well.  */
!       && !stmt_can_throw_internal (cfun, stmt))
      {
        tree lhs = gimple_get_lhs (stmt);
        /* If LHS is literally a base of the access we are done.  */
--- 3347,3364 ----
        && TREE_CODE (gimple_get_lhs (stmt)) != SSA_NAME
        /* The assignment is not necessarily carried out if it can throw
  	 and we can catch it in the current function where we could inspect
! 	 the previous value.  Similarly if the function can throw externally
! 	 and the ref does not die on the function return.
  	 ???  We only need to care about the RHS throwing.  For aggregate
  	 assignments or similar calls and non-call exceptions the LHS
! 	 might throw as well.
! 	 ???  We also should care about possible longjmp, but since we
! 	 do not understand that longjmp is not using global memory we will
! 	 not consider a kill here since the function call will be considered
! 	 as possibly using REF.	 */
!       && !stmt_can_throw_internal (cfun, stmt)
!       && (!stmt_can_throw_external (cfun, stmt)
! 	  || !ref_may_alias_global_p (ref, false)))
      {
        tree lhs = gimple_get_lhs (stmt);
        /* If LHS is literally a base of the access we are done.  */
*************** stmt_kills_ref_p (gimple *stmt, ao_ref *
*** 3447,3454 ****
  	  && node->binds_to_current_def_p ()
  	  && (summary = get_modref_function_summary (node)) != NULL
  	  && summary->kills.length ()
  	  && (!cfun->can_throw_non_call_exceptions
! 	      || !stmt_can_throw_internal (cfun, stmt)))
  	{
  	  for (auto kill : summary->kills)
  	    {
--- 3455,3466 ----
  	  && node->binds_to_current_def_p ()
  	  && (summary = get_modref_function_summary (node)) != NULL
  	  && summary->kills.length ()
+ 	  /* Check that we can not trap while evaulating function
+ 	     parameters.  This check is overly conservative.  */
  	  && (!cfun->can_throw_non_call_exceptions
! 	      || (!stmt_can_throw_internal (cfun, stmt)
! 		  && (!stmt_can_throw_external (cfun, stmt)
! 		      || !ref_may_alias_global_p (ref, false)))))
  	{
  	  for (auto kill : summary->kills)
  	    {
