diff -Nrcpad gcc-14-20260109/LAST_UPDATED gcc-14-20260116/LAST_UPDATED
*** gcc-14-20260109/LAST_UPDATED	Fri Jan  9 22:32:19 2026
--- gcc-14-20260116/LAST_UPDATED	Fri Jan 16 22:32:18 2026
***************
*** 1 ****
! Obtained from git: releases/gcc-14 revision 9a11ee0771011a7f33bac5c11a04e497a4db73be
--- 1 ----
! Obtained from git: releases/gcc-14 revision c8d48e21442febd5a3ebb8d78b83d1383e3daa8e
diff -Nrcpad gcc-14-20260109/MD5SUMS gcc-14-20260116/MD5SUMS
*** gcc-14-20260109/MD5SUMS	Fri Jan  9 22:32:24 2026
--- gcc-14-20260116/MD5SUMS	Fri Jan 16 22:32:22 2026
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the
! # gcc-14-20260109.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-14-20260116.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
*************** fc9280b02bc68e4fb1ef8d51ccc25061  Change
*** 23,29 ****
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 5a730f1a5e3d9d51b68d271cca024cd6  LAST_UPDATED
  1671040823f8eb8436a06fdd18065e02  MAINTAINERS
  304c3887135aefa27c21292ec585b0a3  Makefile.def
  8dd93fbf2e32bcbd2faba10e3b8ba2b0  Makefile.in
--- 23,29 ----
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! df286bbbfa5dd491a31877015de01edf  LAST_UPDATED
  1671040823f8eb8436a06fdd18065e02  MAINTAINERS
  304c3887135aefa27c21292ec585b0a3  Makefile.def
  8dd93fbf2e32bcbd2faba10e3b8ba2b0  Makefile.in
*************** bc7394806417778d77541ba1ec0e4a70  gcc/BA
*** 505,511 ****
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! a30882fccde51010b68f51806fd20ef7  gcc/ChangeLog
  a3b63c675afa7a655cc2bfa8a907af79  gcc/ChangeLog-1997
  d9a88529352a010253c2e8fb1ed6023b  gcc/ChangeLog-1998
  240f08f81cb4699e8b49347db38233db  gcc/ChangeLog-1999
--- 505,511 ----
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! bb884228ec52d7d88f02b0a31ea817f9  gcc/ChangeLog
  a3b63c675afa7a655cc2bfa8a907af79  gcc/ChangeLog-1997
  d9a88529352a010253c2e8fb1ed6023b  gcc/ChangeLog-1998
  240f08f81cb4699e8b49347db38233db  gcc/ChangeLog-1999
*************** fb3fadb88e1d2b3b640cfaaa5ff11780  gcc/Ch
*** 541,547 ****
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 0b482e65720be6e0d9bb50c0d702d1d8  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
--- 541,547 ----
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 0a32ea4ca589c6f5257ab56e25c3589a  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
*************** be688e434793ea02a7f9ee52992ea34d  gcc/co
*** 3312,3318 ****
  32188ac2131c770df03339725367ae4e  gcc/compare-elim.cc
  d7b7be0853c1adedc2ef4b171f9d8522  gcc/conditions.h
  ce915e557866ffa3df9a5b35ed401ce0  gcc/config.build
! 19db7b0adf834602d18c4baffe9e6e0d  gcc/config.gcc
  a838f308e3dcdd63685c24e6ff2586be  gcc/config.host
  3b202d5bab614e2275378bef1f708574  gcc/config.in
  8e697813dc96ca90f5d0f4c196efe2cc  gcc/config/README
--- 3312,3318 ----
  32188ac2131c770df03339725367ae4e  gcc/compare-elim.cc
  d7b7be0853c1adedc2ef4b171f9d8522  gcc/conditions.h
  ce915e557866ffa3df9a5b35ed401ce0  gcc/config.build
! 361f55e991b72c939b094fb1226b5913  gcc/config.gcc
  a838f308e3dcdd63685c24e6ff2586be  gcc/config.host
  3b202d5bab614e2275378bef1f708574  gcc/config.in
  8e697813dc96ca90f5d0f4c196efe2cc  gcc/config/README
*************** cb343fc92a4017dd72ecf925e609e5b3  gcc/co
*** 4040,4046 ****
  99fea335b0d0e75274fb0d332965e1ee  gcc/config/i386/haswell.md
  9e0c1a273f1b48297e027d2b57fe6a5b  gcc/config/i386/host-cygwin.cc
  8aa8340199913a36316957cfca64c183  gcc/config/i386/host-i386-darwin.cc
! 9511f2cacd4e3753bbcef34478635941  gcc/config/i386/host-mingw32.cc
  4e2bbdb4e2a8e4ff852b573efffc33e4  gcc/config/i386/hresetintrin.h
  2ea007891ddab468cc4699c13996a23c  gcc/config/i386/i386-builtin-types.awk
  c1088807627bcbd8c85a659852f57ce9  gcc/config/i386/i386-builtin-types.def
--- 4040,4046 ----
  99fea335b0d0e75274fb0d332965e1ee  gcc/config/i386/haswell.md
  9e0c1a273f1b48297e027d2b57fe6a5b  gcc/config/i386/host-cygwin.cc
  8aa8340199913a36316957cfca64c183  gcc/config/i386/host-i386-darwin.cc
! 25dbbd0b4035da40caf49673abd987f4  gcc/config/i386/host-mingw32.cc
  4e2bbdb4e2a8e4ff852b573efffc33e4  gcc/config/i386/hresetintrin.h
  2ea007891ddab468cc4699c13996a23c  gcc/config/i386/i386-builtin-types.awk
  c1088807627bcbd8c85a659852f57ce9  gcc/config/i386/i386-builtin-types.def
*************** ba58451441e23c01b6eba20ce3c8eb9b  gcc/co
*** 4095,4101 ****
  e825582ef5d3d436130e77c41d8d9ff4  gcc/config/i386/mingw32.h
  cc9849ddfde01b94df2eeb13ec5bab0a  gcc/config/i386/mm3dnow.h
  90b9e7122f60a899bf229dc11f24000d  gcc/config/i386/mmintrin.h
! aa5b9b3bb27f19ff3832c9960dd9312f  gcc/config/i386/mmx.md
  ea7d7799efdd0d920495d7aaa4e3b7a2  gcc/config/i386/movdirintrin.h
  e576d2eed73a4571de7093a92f6dd156  gcc/config/i386/msformat-c.cc
  a0576d502ba7007ac2cebdc16b79ea32  gcc/config/i386/mwaitintrin.h
--- 4095,4101 ----
  e825582ef5d3d436130e77c41d8d9ff4  gcc/config/i386/mingw32.h
  cc9849ddfde01b94df2eeb13ec5bab0a  gcc/config/i386/mm3dnow.h
  90b9e7122f60a899bf229dc11f24000d  gcc/config/i386/mmintrin.h
! 80dcb047bf1ef9a18a0bda318fad8105  gcc/config/i386/mmx.md
  ea7d7799efdd0d920495d7aaa4e3b7a2  gcc/config/i386/movdirintrin.h
  e576d2eed73a4571de7093a92f6dd156  gcc/config/i386/msformat-c.cc
  a0576d502ba7007ac2cebdc16b79ea32  gcc/config/i386/mwaitintrin.h
*************** ea6cc43b3fa3313db4228947eed2152e  gcc/co
*** 4307,4315 ****
  3ce5af4b5c069929ba519548d5342e90  gcc/config/loongarch/loongarch-protos.h
  3b7b410fd2ede1c56c692fa390a8d415  gcc/config/loongarch/loongarch-str.h
  2088d1b3164d3464806a7627d2fd6e52  gcc/config/loongarch/loongarch-tune.h
! cb2d81b4311645ba3a28a86167631fb3  gcc/config/loongarch/loongarch.cc
  39c8662694bff1c4d52f90cba43e5048  gcc/config/loongarch/loongarch.h
! 979b7bb4986f91fe92c3ac05a83f249c  gcc/config/loongarch/loongarch.md
  b62396c60e7bd1b4de8956c5869d45f2  gcc/config/loongarch/loongarch.opt
  93b3f21362e888da73ecb40a067439a3  gcc/config/loongarch/loongarch.opt.urls
  080a7a7e80353157fce6b9d03531ce14  gcc/config/loongarch/lsx.md
--- 4307,4315 ----
  3ce5af4b5c069929ba519548d5342e90  gcc/config/loongarch/loongarch-protos.h
  3b7b410fd2ede1c56c692fa390a8d415  gcc/config/loongarch/loongarch-str.h
  2088d1b3164d3464806a7627d2fd6e52  gcc/config/loongarch/loongarch-tune.h
! 2081f0bf79ae3d3f6dda7ac0e25de821  gcc/config/loongarch/loongarch.cc
  39c8662694bff1c4d52f90cba43e5048  gcc/config/loongarch/loongarch.h
! 2bf401adae6dfb1d853a71961fec58c9  gcc/config/loongarch/loongarch.md
  b62396c60e7bd1b4de8956c5869d45f2  gcc/config/loongarch/loongarch.opt
  93b3f21362e888da73ecb40a067439a3  gcc/config/loongarch/loongarch.opt.urls
  080a7a7e80353157fce6b9d03531ce14  gcc/config/loongarch/lsx.md
*************** c30ab99edc39750d88872cd2cf4bda14  gcc/gi
*** 6088,6095 ****
  b8854cd80bb187319a41cc07e71d2cd4  gcc/gimple-range-edge.h
  9ebde70f49d9ee959748f601372d3421  gcc/gimple-range-fold.cc
  b4fac90ec25f720d30ee5890677475fd  gcc/gimple-range-fold.h
! 85e4bf91e0170553e3dea12ba3c47fb6  gcc/gimple-range-gori.cc
! 49512dcbe7855a1ca5ed1aa17a3af656  gcc/gimple-range-gori.h
  f94d5d9d416368499396b5af95c640a1  gcc/gimple-range-infer.cc
  59a4e75211652f0f0985dde451461c62  gcc/gimple-range-infer.h
  1bdc02d72c591ed0e1c733aea008bf3d  gcc/gimple-range-op.cc
--- 6088,6095 ----
  b8854cd80bb187319a41cc07e71d2cd4  gcc/gimple-range-edge.h
  9ebde70f49d9ee959748f601372d3421  gcc/gimple-range-fold.cc
  b4fac90ec25f720d30ee5890677475fd  gcc/gimple-range-fold.h
! 68a5b050418b8f44c335239368452be8  gcc/gimple-range-gori.cc
! 9b1df29c360a25800cf1f12713f12357  gcc/gimple-range-gori.h
  f94d5d9d416368499396b5af95c640a1  gcc/gimple-range-infer.cc
  59a4e75211652f0f0985dde451461c62  gcc/gimple-range-infer.h
  1bdc02d72c591ed0e1c733aea008bf3d  gcc/gimple-range-op.cc
*************** e8d0df13d424467daa46e40c39a8362f  gcc/lr
*** 6434,6440 ****
  70a8abdd45bcea7a12630d9341f827e4  gcc/lra-eliminations.cc
  5534388e8801fd9d3f82413c23fdc5f4  gcc/lra-int.h
  642aa6eb2e4f0f3bddc8b0c181835618  gcc/lra-lives.cc
! eb3641a7ce74f604269685133e3394fe  gcc/lra-remat.cc
  f82e226fe4d03cd57487f05c70be1ebd  gcc/lra-spills.cc
  1548c4418fa356fa5b47b356107dbcbf  gcc/lra.cc
  fa24e9dabcdec01373321b3a591203db  gcc/lra.h
--- 6434,6440 ----
  70a8abdd45bcea7a12630d9341f827e4  gcc/lra-eliminations.cc
  5534388e8801fd9d3f82413c23fdc5f4  gcc/lra-int.h
  642aa6eb2e4f0f3bddc8b0c181835618  gcc/lra-lives.cc
! 1ccd56402dc4bcc562ca99b1265060ad  gcc/lra-remat.cc
  f82e226fe4d03cd57487f05c70be1ebd  gcc/lra-spills.cc
  1548c4418fa356fa5b47b356107dbcbf  gcc/lra.cc
  fa24e9dabcdec01373321b3a591203db  gcc/lra.h
*************** e8a9eb01b9451a357155e7152df1c669  gcc/ta
*** 8061,8067 ****
  a05663c52c607143c607d3ecf1391979  gcc/targhooks.cc
  51d240e574a3f9ecec346d64a04ac634  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 38f5840e38377bed2574b22e9a869df4  gcc/testsuite/ChangeLog
  862f04afbd87da2cc6bc432c3f28430f  gcc/testsuite/ChangeLog-1993-2007
  029a5d8dacd25eb5d4711452ac448e5b  gcc/testsuite/ChangeLog-2008
  13ac28c41d51b66b4ec40dba6bd50f39  gcc/testsuite/ChangeLog-2009
--- 8061,8067 ----
  a05663c52c607143c607d3ecf1391979  gcc/targhooks.cc
  51d240e574a3f9ecec346d64a04ac634  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! cf738a92a2d7cd84e0ab8459916c4792  gcc/testsuite/ChangeLog
  862f04afbd87da2cc6bc432c3f28430f  gcc/testsuite/ChangeLog-1993-2007
  029a5d8dacd25eb5d4711452ac448e5b  gcc/testsuite/ChangeLog-2008
  13ac28c41d51b66b4ec40dba6bd50f39  gcc/testsuite/ChangeLog-2009
*************** a3d075dd1b96232581aa40c9e02294e1  gcc/te
*** 46987,46992 ****
--- 46987,46993 ----
  7032b52dc2dd1e6cab514293c2d0b276  gcc/testsuite/gcc.dg/pr121322.c
  3675df2622072bf0e5cccbf94e93a50f  gcc/testsuite/gcc.dg/pr122126_vextr.c
  b975ebfa27ac446e553bacbb75421590  gcc/testsuite/gcc.dg/pr122126_vset.c
+ 5653206b785e83314fab2ad87cd4c262  gcc/testsuite/gcc.dg/pr123300.c
  bc5ddfbbc46f4e0cce1629d1b58d3090  gcc/testsuite/gcc.dg/pr12603.c
  72a2fca76cb69617ae36bab93c7ec0d7  gcc/testsuite/gcc.dg/pr12625-1.c
  6f0ef61e5a12db5f11da839b2988c5e1  gcc/testsuite/gcc.dg/pr13519-1.c
*************** d4ebe08b4cb963582547d8bb5712e712  gcc/te
*** 75307,75313 ****
--- 75308,75316 ----
  5064c3ab2b92e2f20dcd604d557d738c  gcc/testsuite/gcc.target/i386/pr121208-3b.c
  12e796120a8d76792772ddd159f57f3f  gcc/testsuite/gcc.target/i386/pr121274.c
  600ff3c5da35f468b87a23e0d1678a3e  gcc/testsuite/gcc.target/i386/pr122104.c
+ dc0ac30205a49a37f80c833e996ed4d2  gcc/testsuite/gcc.target/i386/pr123121.c
  f99f88a6e994ad6e55e065e41bc58f8f  gcc/testsuite/gcc.target/i386/pr12329.c
+ fd0c95fcad577a49c3553f21604c3b61  gcc/testsuite/gcc.target/i386/pr123484.c
  8951a1fa31f2d45ef9eacfff6a733f77  gcc/testsuite/gcc.target/i386/pr13366.c
  9a752a4b3b77930d91d3c8b0c8897b90  gcc/testsuite/gcc.target/i386/pr13685.c
  31ead0ee84b382ba03e3561931bc6e40  gcc/testsuite/gcc.target/i386/pr14289-1.c
*************** a6d76184ab8ab5eabc181a864d04aac5  gcc/te
*** 78406,78411 ****
--- 78409,78415 ----
  a7210513dd89b8e683a00184ee4478a4  gcc/testsuite/gcc.target/loongarch/attr-model-3.c
  9d4f972a3175f736a746ae031fb25e7a  gcc/testsuite/gcc.target/loongarch/attr-model-4.c
  02f1973aec4f57a84c09f2b6bc6eaf79  gcc/testsuite/gcc.target/loongarch/attr-model-5.c
+ eaedeb33f4a944f6ddcb113a7cd3ed14  gcc/testsuite/gcc.target/loongarch/attr-model-6.c
  f9bd26f98b04e99789925370214a2a06  gcc/testsuite/gcc.target/loongarch/attr-model-diag.c
  b0da33fc443024e77c7b605056bff4ae  gcc/testsuite/gcc.target/loongarch/attr-model-test.c
  10a58b0c68aafdaa8704cc0ab8a37e3c  gcc/testsuite/gcc.target/loongarch/avg-ceil-lasx.c
*************** eb7720d1ee0f7dde86471e1b8ad3b82f  gcc/te
*** 78807,78812 ****
--- 78811,78817 ----
  41959494be952fe2706930c383d4bb72  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvsubwod-2.c
  601d1dad0996e42f64abfcea74b57e97  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvxor.c
  2b866f80af5cafa566ed2bbd75936c79  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvxori.c
+ 970835a22a2eef8dad1be6ea6edc6402  gcc/testsuite/gcc.target/loongarch/vector/lasx/pr123521.c
  26a64124f8d3c5fe928c05f610a5de04  gcc/testsuite/gcc.target/loongarch/vector/loongarch-vector.exp
  5d55305c4d66b32dd004f424d4a0a0fb  gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-abs.c
  e9f9a02f0c23d753d9f3a17d45f85db1  gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-builtin.c
*************** a5c65c0281a1b6faf6652682936ae74e  gcc/tr
*** 110530,110536 ****
  250ce9e7ca93bb776afda377af2c190d  gcc/tree-vector-builder.h
  c5a03f7f18d4c4b5f0a74529e044ddfe  gcc/tree-vectorizer.cc
  e96b2bb5c70a7f94b0863d7050f1677b  gcc/tree-vectorizer.h
! b770086f834d7fe1bbdf334f1907c7a4  gcc/tree-vrp.cc
  01b6633a647a8aeca196fc6d0021e4cf  gcc/tree-vrp.h
  4f0447483aae0976f2fd51d889e2ff25  gcc/tree.cc
  110668da7614fc11045af4d047706a7a  gcc/tree.def
--- 110535,110541 ----
  250ce9e7ca93bb776afda377af2c190d  gcc/tree-vector-builder.h
  c5a03f7f18d4c4b5f0a74529e044ddfe  gcc/tree-vectorizer.cc
  e96b2bb5c70a7f94b0863d7050f1677b  gcc/tree-vectorizer.h
! e9db72a7b615c73d68d28097a0696ef0  gcc/tree-vrp.cc
  01b6633a647a8aeca196fc6d0021e4cf  gcc/tree-vrp.h
  4f0447483aae0976f2fd51d889e2ff25  gcc/tree.cc
  110668da7614fc11045af4d047706a7a  gcc/tree.def
diff -Nrcpad gcc-14-20260109/gcc/ChangeLog gcc-14-20260116/gcc/ChangeLog
*** gcc-14-20260109/gcc/ChangeLog	Fri Jan  9 22:32:06 2026
--- gcc-14-20260116/gcc/ChangeLog	Fri Jan 16 22:32:05 2026
***************
*** 1,3 ****
--- 1,36 ----
+ 2026-01-15  DengJianbo  <dengjianbo@loongson.cn>
+ 
+ 	Backported from master:
+ 	2026-01-15  DengJianbo  <dengjianbo@loongson.cn>
+ 
+ 	* config/loongarch/loongarch.md: Remove condition in template
+ 	movdi_symbolic_off64.
+ 
+ 2026-01-14  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/123300
+ 	* gimple-range-gori.cc (gori_map::exports_and_deps): New.
+ 	* gimple-range-gori.h (exports_and_deps): New prototype.
+ 	(FOR_EACH_GORI_EXPORT_AND_DEP_NAME): New macro.
+ 	* tree-vrp.cc (remove_unreachable:remove_unreachable): Initialize
+ 	m_tmp bitmap.
+ 	(remove_unreachable:~remove_unreachable): Dispose of m_tmp bitmap.
+ 	(remove_unreachable:fully_replaceable): Move from static function
+ 	and check reachability of exports and dependencies.
+ 
+ 2026-01-13  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	Backported from master:
+ 	2026-01-13  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/123484
+ 	* config/i386/mmx.md (divv4hf3): Add TARGET_MMX_WITH_SSE to
+ 	the condition.
+ 	(cmlav4hf4): Ditto.
+ 	(cmla_conjv4hf4): Ditto.
+ 	(cmulv4hf3): Ditto.
+ 	(cmul_conjv4hf3): Ditto.
+ 
  2025-12-19  Yury Khrustalev  <yury.khrustalev@arm.com>
  
  	Backported from master:
diff -Nrcpad gcc-14-20260109/gcc/DATESTAMP gcc-14-20260116/gcc/DATESTAMP
*** gcc-14-20260109/gcc/DATESTAMP	Fri Jan  9 22:32:06 2026
--- gcc-14-20260116/gcc/DATESTAMP	Fri Jan 16 22:32:05 2026
***************
*** 1 ****
! 20260108
--- 1 ----
! 20260116
diff -Nrcpad gcc-14-20260109/gcc/config/i386/host-mingw32.cc gcc-14-20260116/gcc/config/i386/host-mingw32.cc
*** gcc-14-20260109/gcc/config/i386/host-mingw32.cc	Fri Jan  9 22:32:07 2026
--- gcc-14-20260116/gcc/config/i386/host-mingw32.cc	Fri Jan 16 22:32:06 2026
*************** mingw32_gt_pch_use_address (void *&addr,
*** 135,141 ****
       and earlier, backslashes are invalid in object name.  So, we need
       to check if we are on Windows2000 or higher.  */
    OSVERSIONINFO version_info;
-   int r;
  
    version_info.dwOSVersionInfoSize = sizeof (version_info);
  
--- 135,140 ----
*************** mingw32_gt_pch_use_address (void *&addr,
*** 169,193 ****
        return -1; 
      }
  
!   /* Retry five times, as here might occure a race with multiple gcc's
!      instances at same time.  */
!   for (r = 0; r < 5; r++)
!    {
!       mmap_addr = MapViewOfFileEx (mmap_handle, FILE_MAP_COPY, 0, offset,
! 				   size, addr);
!       if (mmap_addr == addr)
! 	break;
!       if (r != 4)
!         Sleep (500);
!    }
!       
!   if (mmap_addr != addr)
      {
!       w32_error (__FUNCTION__, __FILE__, __LINE__, "MapViewOfFileEx");
!       CloseHandle(mmap_handle);
!       return  -1;
      }
  
    return 1;
  }
  
--- 168,191 ----
        return -1; 
      }
  
!   /* Try mapping the file at `addr`.  */
!   mmap_addr = MapViewOfFileEx (mmap_handle, FILE_MAP_COPY, 0, offset,
! 			       size, addr);
!   if (mmap_addr == NULL)
      {
!       /* We could not map the file at its original address, so let the
! 	 system choose a different one. The PCH can be relocated later.  */
!       mmap_addr = MapViewOfFileEx (mmap_handle, FILE_MAP_COPY, 0, offset,
! 				   size, NULL);
!       if (mmap_addr == NULL)
! 	{
! 	  w32_error (__FUNCTION__, __FILE__, __LINE__, "MapViewOfFileEx");
! 	  CloseHandle(mmap_handle);
! 	  return  -1;
! 	}
      }
  
+   addr = mmap_addr;
    return 1;
  }
  
diff -Nrcpad gcc-14-20260109/gcc/config/i386/mmx.md gcc-14-20260116/gcc/config/i386/mmx.md
*** gcc-14-20260109/gcc/config/i386/mmx.md	Fri Jan  9 22:32:07 2026
--- gcc-14-20260116/gcc/config/i386/mmx.md	Fri Jan 16 22:32:06 2026
***************
*** 1998,2004 ****
  	(div:V4HF
  	  (match_operand:V4HF 1 "nonimmediate_operand")
  	  (match_operand:V4HF 2 "register_operand")))]
!   "TARGET_AVX512FP16 && TARGET_AVX512VL && ix86_partial_vec_fp_math"
  {
    rtx op2 = gen_reg_rtx (V8HFmode);
    rtx op1 = gen_reg_rtx (V8HFmode);
--- 1998,2005 ----
  	(div:V4HF
  	  (match_operand:V4HF 1 "nonimmediate_operand")
  	  (match_operand:V4HF 2 "register_operand")))]
!   "TARGET_AVX512FP16 && TARGET_AVX512VL && ix86_partial_vec_fp_math
!   && TARGET_MMX_WITH_SSE"
  {
    rtx op2 = gen_reg_rtx (V8HFmode);
    rtx op1 = gen_reg_rtx (V8HFmode);
***************
*** 2678,2684 ****
     (match_operand:V4HF 1 "vector_operand")
     (match_operand:V4HF 2 "vector_operand")
     (match_operand:V4HF 3 "vector_operand")]
!   "TARGET_AVX512FP16 && TARGET_AVX512VL"
  {
    rtx op3 = gen_reg_rtx (V8HFmode);
    rtx op2 = gen_reg_rtx (V8HFmode);
--- 2679,2686 ----
     (match_operand:V4HF 1 "vector_operand")
     (match_operand:V4HF 2 "vector_operand")
     (match_operand:V4HF 3 "vector_operand")]
!   "TARGET_AVX512FP16 && TARGET_AVX512VL
!   && TARGET_MMX_WITH_SSE"
  {
    rtx op3 = gen_reg_rtx (V8HFmode);
    rtx op2 = gen_reg_rtx (V8HFmode);
***************
*** 2700,2706 ****
     (match_operand:V4HF 1 "vector_operand")
     (match_operand:V4HF 2 "vector_operand")
     (match_operand:V4HF 3 "vector_operand")]
!   "TARGET_AVX512FP16 && TARGET_AVX512VL"
  {
    rtx op3 = gen_reg_rtx (V8HFmode);
    rtx op2 = gen_reg_rtx (V8HFmode);
--- 2702,2709 ----
     (match_operand:V4HF 1 "vector_operand")
     (match_operand:V4HF 2 "vector_operand")
     (match_operand:V4HF 3 "vector_operand")]
!   "TARGET_AVX512FP16 && TARGET_AVX512VL
!   && TARGET_MMX_WITH_SSE"
  {
    rtx op3 = gen_reg_rtx (V8HFmode);
    rtx op2 = gen_reg_rtx (V8HFmode);
***************
*** 2721,2727 ****
    [(match_operand:V4HF 0 "register_operand")
     (match_operand:V4HF 1 "vector_operand")
     (match_operand:V4HF 2 "vector_operand")]
!   "TARGET_AVX512FP16 && TARGET_AVX512VL"
  {
    rtx op2 = gen_reg_rtx (V8HFmode);
    rtx op1 = gen_reg_rtx (V8HFmode);
--- 2724,2731 ----
    [(match_operand:V4HF 0 "register_operand")
     (match_operand:V4HF 1 "vector_operand")
     (match_operand:V4HF 2 "vector_operand")]
!   "TARGET_AVX512FP16 && TARGET_AVX512VL
!   && TARGET_MMX_WITH_SSE"
  {
    rtx op2 = gen_reg_rtx (V8HFmode);
    rtx op1 = gen_reg_rtx (V8HFmode);
***************
*** 2739,2745 ****
    [(match_operand:V4HF 0 "register_operand")
     (match_operand:V4HF 1 "vector_operand")
     (match_operand:V4HF 2 "vector_operand")]
!   "TARGET_AVX512FP16 && TARGET_AVX512VL"
  {
    rtx op2 = gen_reg_rtx (V8HFmode);
    rtx op1 = gen_reg_rtx (V8HFmode);
--- 2743,2750 ----
    [(match_operand:V4HF 0 "register_operand")
     (match_operand:V4HF 1 "vector_operand")
     (match_operand:V4HF 2 "vector_operand")]
!   "TARGET_AVX512FP16 && TARGET_AVX512VL
!   && TARGET_MMX_WITH_SSE"
  {
    rtx op2 = gen_reg_rtx (V8HFmode);
    rtx op1 = gen_reg_rtx (V8HFmode);
diff -Nrcpad gcc-14-20260109/gcc/config/loongarch/loongarch.cc gcc-14-20260116/gcc/config/loongarch/loongarch.cc
*** gcc-14-20260109/gcc/config/loongarch/loongarch.cc	Fri Jan  9 22:32:07 2026
--- gcc-14-20260116/gcc/config/loongarch/loongarch.cc	Fri Jan 16 22:32:06 2026
*************** loongarch_expand_vector_init_same (rtx t
*** 10021,10052 ****
  	}
      }
  
!   if (imode == GET_MODE (same))
!     temp = same;
!   else if (GET_MODE_SIZE (imode) >= UNITS_PER_WORD)
!     {
!       if (GET_CODE (same) == MEM)
! 	{
! 	  rtx reg_tmp = gen_reg_rtx (GET_MODE (same));
! 	  loongarch_emit_move (reg_tmp, same);
! 	  temp = simplify_gen_subreg (imode, reg_tmp, GET_MODE (reg_tmp), 0);
! 	}
!       else
! 	temp = simplify_gen_subreg (imode, same, GET_MODE (same), 0);
!     }
!   else
!     {
!       if (GET_CODE (same) == MEM)
! 	{
! 	  rtx reg_tmp = gen_reg_rtx (GET_MODE (same));
! 	  loongarch_emit_move (reg_tmp, same);
! 	  temp = lowpart_subreg (imode, reg_tmp, GET_MODE (reg_tmp));
! 	}
!       else
! 	temp = lowpart_subreg (imode, same, GET_MODE (same));
!     }
! 
!   temp = force_reg (imode, temp);
  
    switch (vmode)
      {
--- 10021,10027 ----
  	}
      }
  
!   temp = force_reg (imode, same);
  
    switch (vmode)
      {
diff -Nrcpad gcc-14-20260109/gcc/config/loongarch/loongarch.md gcc-14-20260116/gcc/config/loongarch/loongarch.md
*** gcc-14-20260109/gcc/config/loongarch/loongarch.md	Fri Jan  9 22:32:07 2026
--- gcc-14-20260116/gcc/config/loongarch/loongarch.md	Fri Jan 16 22:32:06 2026
***************
*** 2205,2211 ****
    (unspec:DI [(const_int 0)]
      UNSPEC_LOAD_SYMBOL_OFFSET64)
    (clobber (match_operand:DI 2 "register_operand" "=&r,r"))]
!  "TARGET_64BIT && TARGET_CMODEL_EXTREME"
  {
    if (which_alternative == 1)
      return "#";
--- 2205,2211 ----
    (unspec:DI [(const_int 0)]
      UNSPEC_LOAD_SYMBOL_OFFSET64)
    (clobber (match_operand:DI 2 "register_operand" "=&r,r"))]
!  "TARGET_64BIT"
  {
    if (which_alternative == 1)
      return "#";
diff -Nrcpad gcc-14-20260109/gcc/config.gcc gcc-14-20260116/gcc/config.gcc
*** gcc-14-20260109/gcc/config.gcc	Fri Jan  9 22:32:07 2026
--- gcc-14-20260116/gcc/config.gcc	Fri Jan 16 22:32:06 2026
*************** case "${target}" in
*** 4277,4283 ****
  				  echo "Unknown extension used in --with-$which=$val" 1>&2
  				  exit 1
  				fi
! 				ext_val=`echo $ext_val | sed -E -e 's/[a-z0-9]+//'`
  			  done
  
  			  true
--- 4277,4283 ----
  				  echo "Unknown extension used in --with-$which=$val" 1>&2
  				  exit 1
  				fi
! 				ext_val=`echo $ext_val | sed -E -e 's/[a-z0-9-]+//'`
  			  done
  
  			  true
diff -Nrcpad gcc-14-20260109/gcc/gimple-range-gori.cc gcc-14-20260116/gcc/gimple-range-gori.cc
*** gcc-14-20260109/gcc/gimple-range-gori.cc	Fri Jan  9 22:32:07 2026
--- gcc-14-20260116/gcc/gimple-range-gori.cc	Fri Jan 16 22:32:07 2026
*************** gori_map::exports (basic_block bb)
*** 383,388 ****
--- 383,410 ----
    return m_outgoing[bb->index];
  }
  
+ // Return the bitmap vector of all exports AND their dependencies from BB
+ // in TMPBIT.  Calculate if necessary.  Return TMPBIT.
+ 
+ bitmap
+ gori_map::exports_and_deps (basic_block bb, bitmap tmpbit)
+ {
+   if (bb->index >= (signed int)m_outgoing.length () || !m_outgoing[bb->index])
+     calculate_gori (bb);
+   bitmap_copy (tmpbit, m_outgoing[bb->index]);
+   if (!bitmap_empty_p (tmpbit))
+     {
+       tree name;
+       FOR_EACH_GORI_EXPORT_NAME (*this, bb, name)
+ 	{
+ 	  bitmap dep = get_def_chain (name);
+ 	  if (dep)
+ 	    bitmap_ior_into (tmpbit, dep);
+ 	}
+     }
+   return tmpbit;
+ }
+ 
  // Return the bitmap vector of all imports to BB.  Calculate if necessary.
  
  bitmap
diff -Nrcpad gcc-14-20260109/gcc/gimple-range-gori.h gcc-14-20260116/gcc/gimple-range-gori.h
*** gcc-14-20260109/gcc/gimple-range-gori.h	Fri Jan  9 22:32:07 2026
--- gcc-14-20260116/gcc/gimple-range-gori.h	Fri Jan 16 22:32:07 2026
*************** public:
*** 99,104 ****
--- 99,105 ----
    bool is_export_p (tree name, basic_block bb = NULL);
    bool is_import_p (tree name, basic_block bb);
    bitmap exports (basic_block bb);
+   bitmap exports_and_deps (basic_block bb, bitmap tmpbit);
    bitmap imports (basic_block bb);
    void set_range_invariant (tree name, bool invariant = true);
  
*************** bool gori_on_edge (class ssa_cache &r, e
*** 224,230 ****
  bool gori_name_on_edge (vrange &r, tree name, edge e, range_query *q = NULL);
  
  // For each name that is an import into BB's exports..
! #define FOR_EACH_GORI_IMPORT_NAME(gori, bb, name)			\
    for (gori_export_iterator iter ((gori).imports ((bb)));	\
         ((name) = iter.get_name ());				\
         iter.next ())
--- 225,231 ----
  bool gori_name_on_edge (vrange &r, tree name, edge e, range_query *q = NULL);
  
  // For each name that is an import into BB's exports..
! #define FOR_EACH_GORI_IMPORT_NAME(gori, bb, name)		\
    for (gori_export_iterator iter ((gori).imports ((bb)));	\
         ((name) = iter.get_name ());				\
         iter.next ())
*************** bool gori_name_on_edge (vrange &r, tree
*** 235,240 ****
--- 236,247 ----
         ((name) = iter.get_name ());				\
         iter.next ())
  
+ // For each name and all their dependencies possibly exported from block BB.
+ #define FOR_EACH_GORI_EXPORT_AND_DEP_NAME(gori, bb, name, bm)	   \
+   for (gori_export_iterator iter ((gori).exports_and_deps ((bb),(bm))); \
+        ((name) = iter.get_name ());					   \
+        iter.next ())
+ 
  // Used to assist with iterating over the GORI export list in various ways
  class gori_export_iterator {
  public:
diff -Nrcpad gcc-14-20260109/gcc/lra-remat.cc gcc-14-20260116/gcc/lra-remat.cc
*** gcc-14-20260109/gcc/lra-remat.cc	Fri Jan  9 22:32:07 2026
--- gcc-14-20260116/gcc/lra-remat.cc	Fri Jan 16 22:32:07 2026
*************** typedef const struct cand *const_cand_t;
*** 81,88 ****
  
  /* Insn candidates for rematerialization.  The candidate insn should
     have the following properies:
!    o no any memory (as access to memory is non-profitable)
     o no INOUT regs (it means no non-paradoxical subreg of output reg)
     o one output spilled pseudo (or reload pseudo of a spilled pseudo)
     o all other pseudos are with assigned hard regs.  */
  struct cand
--- 81,90 ----
  
  /* Insn candidates for rematerialization.  The candidate insn should
     have the following properies:
!    o no any memory (as access to memory is non-profitable) or
!      div/mod operations (as they are usually more expensive than loads)
     o no INOUT regs (it means no non-paradoxical subreg of output reg)
+    o no multiple output pseudos
     o one output spilled pseudo (or reload pseudo of a spilled pseudo)
     o all other pseudos are with assigned hard regs.  */
  struct cand
*************** finish_cand_table (void)
*** 249,260 ****
  
  
  
! /* Return true if X contains memory or some UNSPEC.  We cannot just
!    check insn operands as memory or unspec might be not an operand
!    itself but contain an operand.  Insn with memory access is not
!    profitable for rematerialization.  Rematerialization of UNSPEC
!    might result in wrong code generation as the UNPEC effect is
!    unknown (e.g. generating a label).  */
  static bool
  bad_for_rematerialization_p (rtx x)
  {
--- 251,262 ----
  
  
  
! /* Return true if X contains memory, some UNSPEC, or expensive operations.  We
!    cannot just check insn operands as memory or unspec might be not an operand
!    itself but contain an operand.  Insns with memory access or expensive ones
!    are not profitable for rematerialization.  Rematerialization of UNSPEC might
!    result in wrong code generation as the UNPEC effect is unknown
!    (e.g. generating a label).  */
  static bool
  bad_for_rematerialization_p (rtx x)
  {
*************** bad_for_rematerialization_p (rtx x)
*** 262,268 ****
    const char *fmt;
    enum rtx_code code;
  
!   if (MEM_P (x) || GET_CODE (x) == UNSPEC || GET_CODE (x) == UNSPEC_VOLATILE)
      return true;
    code = GET_CODE (x);
    fmt = GET_RTX_FORMAT (code);
--- 264,274 ----
    const char *fmt;
    enum rtx_code code;
  
!   if (MEM_P (x) || GET_CODE (x) == UNSPEC || GET_CODE (x) == UNSPEC_VOLATILE
!       /* Usually the following operations are expensive and does not worth to
! 	 rematerialize: */
!       || GET_CODE(x) == DIV || GET_CODE(x) == UDIV
!       || GET_CODE(x) == MOD || GET_CODE(x) == UMOD)
      return true;
    code = GET_CODE (x);
    fmt = GET_RTX_FORMAT (code);
*************** operand_to_remat (rtx_insn *insn)
*** 308,315 ****
  	 cannot know sp offset at a rematerialization place.  */
        if (reg->regno == STACK_POINTER_REGNUM && frame_pointer_needed)
  	return -1;
!       else if (reg->type == OP_OUT && ! reg->subreg_p
! 	       && find_regno_note (insn, REG_UNUSED, reg->regno) == NULL)
  	{
  	  /* We permits only one spilled reg.  */
  	  if (found_reg != NULL)
--- 314,320 ----
  	 cannot know sp offset at a rematerialization place.  */
        if (reg->regno == STACK_POINTER_REGNUM && frame_pointer_needed)
  	return -1;
!       else if (reg->type == OP_OUT)
  	{
  	  /* We permits only one spilled reg.  */
  	  if (found_reg != NULL)
diff -Nrcpad gcc-14-20260109/gcc/testsuite/ChangeLog gcc-14-20260116/gcc/testsuite/ChangeLog
*** gcc-14-20260109/gcc/testsuite/ChangeLog	Fri Jan  9 22:32:08 2026
--- gcc-14-20260116/gcc/testsuite/ChangeLog	Fri Jan 16 22:32:07 2026
***************
*** 1,3 ****
--- 1,22 ----
+ 2026-01-15  DengJianbo  <dengjianbo@loongson.cn>
+ 
+ 	Backported from master:
+ 	2026-01-15  DengJianbo  <dengjianbo@loongson.cn>
+ 
+ 	* gcc.target/loongarch/attr-model-6.c: New test.
+ 
+ 2026-01-14  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/123300
+ 	* gcc.dg/pr123300.c: New.
+ 
+ 2026-01-13  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	Backported from master:
+ 	2026-01-13  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	* gcc.target/i386/pr123484.c: New test.
+ 
  2025-12-26  Eric Botcazou  <ebotcazou@gcc.gnu.org>
  
  	* gnat.dg/specs/aggr9.ads: New test.
diff -Nrcpad gcc-14-20260109/gcc/testsuite/gcc.dg/pr123300.c gcc-14-20260116/gcc/testsuite/gcc.dg/pr123300.c
*** gcc-14-20260109/gcc/testsuite/gcc.dg/pr123300.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20260116/gcc/testsuite/gcc.dg/pr123300.c	Fri Jan 16 22:32:09 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-vrp1" } */
+ [[gnu::noipa]] void
+ bar (int a, int b)
+ {
+   if (a < 0)
+     __builtin_abort ();
+ }
+ 
+ [[gnu::noipa]] void
+ foo (int n, int p)
+ {
+   for (int i = n; i-- > 0;)
+     {
+       const int x = 1 << i;
+       if (x <= 0)
+ 	__builtin_unreachable ();
+       if (p)
+ 	bar (i, x);
+     }
+ }
+ 
+ int
+ main ()
+ {
+   foo (4, 1);
+ }
+ /* { dg-final { scan-tree-dump "__builtin_unreachable" "vrp1" } } */
+ 
diff -Nrcpad gcc-14-20260109/gcc/testsuite/gcc.target/i386/pr123121.c gcc-14-20260116/gcc/testsuite/gcc.target/i386/pr123121.c
*** gcc-14-20260109/gcc/testsuite/gcc.target/i386/pr123121.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20260116/gcc/testsuite/gcc.target/i386/pr123121.c	Fri Jan 16 22:32:11 2026
***************
*** 0 ****
--- 1,57 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target lp64 } */
+ /* { dg-options "-O3 -fno-ipa-cp -fschedule-insns" } */
+ 
+ int a[256], d, e, f, g, h, j, v[] = {0, -6, 0};;
+ unsigned c;
+ unsigned k(int l, unsigned m) { return (l & 6777215) ^ a[(l ^ m) & 55]; }
+ int n(int l, int m[]) {
+   int i = 0;
+   for (; i < l; ++i) {
+     e = c >> 8 ^ a[m[i] & 255];
+     d = e;
+     d = k(d, m[i] >> 8 & 255);
+     d = k(d, m[i] >> 6);
+     f = (d & 6777215) ^ a[d & 5];
+     c = f;
+   }
+   return f;
+ }
+ int o() {
+   n(8, (int[]){g});
+   return n(6, (int[]){h});
+ }
+ int p(int l, int m[], int q, int r) {
+   int s = r = j + 1;
+   s = -(4 % q - 1);
+   if (r)
+     goto t;
+  ad:
+   l = 6 - l;
+   if (l)
+     goto ae;
+  t:
+   m[0] = s;
+   j = r;
+   goto af;
+  ae:
+   if (o())
+     goto ad;
+  af:
+   r = -s - m[1] - 8;
+   s = 1 % m[0] - s;
+   m[1] = 1 / r;
+   int a[] = {l, m[0], m[1], m[2], q, r, r, s};
+   return n(8, a);
+ }
+ int main() {
+   for (int i = 0; i < 256; i++) {
+     unsigned b = i;
+     if (i & 1)
+       b = b >> 1 ^ 3988292384;
+     a[i] = b;
+   }
+   if (p(1, v, 5, 0) / 100000)
+     p(1, 0, 5, 0);
+   return 0;
+ }
diff -Nrcpad gcc-14-20260109/gcc/testsuite/gcc.target/i386/pr123484.c gcc-14-20260116/gcc/testsuite/gcc.target/i386/pr123484.c
*** gcc-14-20260109/gcc/testsuite/gcc.target/i386/pr123484.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20260116/gcc/testsuite/gcc.target/i386/pr123484.c	Fri Jan 16 22:32:11 2026
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mavx512vl -mavx512fp16 " }*/
+ typedef __attribute__((__vector_size__ (8))) _Float16 F;
+ int a, b;
+ F f, *p;
+ 
+ void
+ foo ()
+ {
+   do
+     {
+       f /= b ? *p : (F) {40};
+ l:
+     }
+   while (a);
+   goto l;
+ }
diff -Nrcpad gcc-14-20260109/gcc/testsuite/gcc.target/loongarch/attr-model-6.c gcc-14-20260116/gcc/testsuite/gcc.target/loongarch/attr-model-6.c
*** gcc-14-20260109/gcc/testsuite/gcc.target/loongarch/attr-model-6.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20260116/gcc/testsuite/gcc.target/loongarch/attr-model-6.c	Fri Jan 16 22:32:11 2026
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-do compile } */
+ /* { dg-options "-mexplicit-relocs=none -mcmodel=normal -O2 -fno-pic" } */
+ /* { dg-final { scan-assembler "la.local\t\\\$r\[0-9\]+,\\\$r\[0-9\]+,x" } } */
+ /* { dg-final { scan-assembler "la.local\t\\\$r\[0-9\]+,y" } } */
+ /* { dg-final { scan-assembler "la.local\t\\\$r\[0-9\]+,\\\$r\[0-9\]+,counter" } } */
+ 
+ #define ATTR_MODEL_TEST
+ #include "attr-model-test.c"
diff -Nrcpad gcc-14-20260109/gcc/testsuite/gcc.target/loongarch/vector/lasx/pr123521.c gcc-14-20260116/gcc/testsuite/gcc.target/loongarch/vector/lasx/pr123521.c
*** gcc-14-20260109/gcc/testsuite/gcc.target/loongarch/vector/lasx/pr123521.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20260116/gcc/testsuite/gcc.target/loongarch/vector/lasx/pr123521.c	Fri Jan 16 22:32:11 2026
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O1 -msimd=lasx" } */
+ 
+ typedef long long v4i64 __attribute__ ((vector_size (32), aligned (32)));
+ extern long long *x_si;
+ v4i64
+ test (void)
+ {
+   v4i64 a = { x_si[1], x_si[0], 0x411, 0x411 };
+   return a;
+ }
diff -Nrcpad gcc-14-20260109/gcc/tree-vrp.cc gcc-14-20260116/gcc/tree-vrp.cc
*** gcc-14-20260109/gcc/tree-vrp.cc	Fri Jan  9 22:32:14 2026
--- gcc-14-20260116/gcc/tree-vrp.cc	Fri Jan 16 22:32:12 2026
*************** along with GCC; see the file COPYING3.
*** 86,99 ****
  class remove_unreachable {
  public:
    remove_unreachable (gimple_ranger &r, bool all) : m_ranger (r), final_p (all)
!     { m_list.create (30); }
!   ~remove_unreachable () { m_list.release (); }
    void handle_early (gimple *s, edge e);
    void maybe_register (gimple *s);
    bool remove_and_update_globals ();
    vec<std::pair<int, int> > m_list;
    gimple_ranger &m_ranger;
    bool final_p;
  };
  
  // Check if block BB has a __builtin_unreachable () call on one arm, and
--- 86,101 ----
  class remove_unreachable {
  public:
    remove_unreachable (gimple_ranger &r, bool all) : m_ranger (r), final_p (all)
!     { m_list.create (30); m_tmp = BITMAP_ALLOC (NULL); }
!   ~remove_unreachable () { BITMAP_FREE (m_tmp); m_list.release (); }
    void handle_early (gimple *s, edge e);
    void maybe_register (gimple *s);
    bool remove_and_update_globals ();
+   bool fully_replaceable (tree name, basic_block bb);
    vec<std::pair<int, int> > m_list;
    gimple_ranger &m_ranger;
    bool final_p;
+   bitmap m_tmp;
  };
  
  // Check if block BB has a __builtin_unreachable () call on one arm, and
*************** remove_unreachable::maybe_register (gimp
*** 139,146 ****
  //    goto <bb 3>; [0.00%]
  //  Any additional use of _1 or _2 in this block invalidates early replacement.
  
! static bool
! fully_replaceable (tree name, basic_block bb)
  {
    use_operand_p use_p;
    imm_use_iterator iter;
--- 141,148 ----
  //    goto <bb 3>; [0.00%]
  //  Any additional use of _1 or _2 in this block invalidates early replacement.
  
! bool
! remove_unreachable::fully_replaceable (tree name, basic_block bb)
  {
    use_operand_p use_p;
    imm_use_iterator iter;
*************** remove_unreachable::handle_early (gimple
*** 208,216 ****
    gcc_checking_assert (gimple_outgoing_range_stmt_p (e->src) == s);
    gcc_checking_assert (!final_p);
  
!   // Check if every export use is dominated by this branch.
    tree name;
!   FOR_EACH_GORI_EXPORT_NAME (m_ranger.gori (), e->src, name)
      {
        if (!fully_replaceable (name, e->src))
  	return;
--- 210,220 ----
    gcc_checking_assert (gimple_outgoing_range_stmt_p (e->src) == s);
    gcc_checking_assert (!final_p);
  
!   // Check if every export and its dependencies are dominated by this branch.
!   // Dependencies are required as it needs to dominate potential
!   // recalculations.  See PR 123300.
    tree name;
!   FOR_EACH_GORI_EXPORT_AND_DEP_NAME (m_ranger.gori (), e->src, name, m_tmp)
      {
        if (!fully_replaceable (name, e->src))
  	return;
