diff --git a/gcc/cp/module.cc b/gcc/cp/module.cc
index a8517569a1b..8b820f97fee 100644
--- a/gcc/cp/module.cc
+++ b/gcc/cp/module.cc
@@ -12619,12 +12619,14 @@ trees_in::is_matching_decl (tree existing, tree decl, bool is_typedef)
       tree d_spec = TYPE_RAISES_EXCEPTIONS (d_type);
       if (DECL_MAYBE_DELETED (e_inner) || DEFERRED_NOEXCEPT_SPEC_P (e_spec))
 	{
-	  if (!DEFERRED_NOEXCEPT_SPEC_P (d_spec)
+	  if (!(DECL_MAYBE_DELETED (d_inner)
+		|| DEFERRED_NOEXCEPT_SPEC_P (d_spec))
 	      || (UNEVALUATED_NOEXCEPT_SPEC_P (e_spec)
 		  && !UNEVALUATED_NOEXCEPT_SPEC_P (d_spec)))
 	    {
 	      dump (dumper::MERGE)
 		&& dump ("Propagating instantiated noexcept to %N", existing);
+	      gcc_checking_assert (existing == e_inner);
 	      TREE_TYPE (existing) = d_type;
 
 	      /* Propagate to existing clones.  */
diff --git a/gcc/testsuite/g++.dg/modules/noexcept-5.h b/gcc/testsuite/g++.dg/modules/noexcept-5.h
new file mode 100644
index 00000000000..78d91322a1a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/noexcept-5.h
@@ -0,0 +1,4 @@
+// PR c++/124785
+template <typename T> struct Iterator {
+  constexpr friend auto operator<=>(const Iterator&, const Iterator&) = default;
+};
diff --git a/gcc/testsuite/g++.dg/modules/noexcept-5_a.C b/gcc/testsuite/g++.dg/modules/noexcept-5_a.C
new file mode 100644
index 00000000000..72085717e60
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/noexcept-5_a.C
@@ -0,0 +1,7 @@
+// PR c++/124785
+// { dg-do compile { target c++20 } }
+// { dg-additional-options "-fmodules" }
+// { dg-module-cmi M:A }
+
+export module M:A;
+#include "noexcept-5.h"
diff --git a/gcc/testsuite/g++.dg/modules/noexcept-5_b.C b/gcc/testsuite/g++.dg/modules/noexcept-5_b.C
new file mode 100644
index 00000000000..928980b6c1d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/noexcept-5_b.C
@@ -0,0 +1,7 @@
+// PR c++/124785
+// { dg-do compile { target c++20 } }
+// { dg-additional-options "-fmodules" }
+// { dg-module-cmi M:B }
+
+export module M:B;
+#include "noexcept-5.h"
diff --git a/gcc/testsuite/g++.dg/modules/noexcept-5_c.C b/gcc/testsuite/g++.dg/modules/noexcept-5_c.C
new file mode 100644
index 00000000000..d9349147766
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/noexcept-5_c.C
@@ -0,0 +1,11 @@
+// PR c++/124785
+// { dg-do compile { target c++20 } }
+// { dg-additional-options "-fmodules -fdump-lang-module-alias" }
+// { dg-module-cmi M }
+
+export module M;
+export import :A;
+export import :B;
+
+// The noexcept-specifiers are equivalent, no need to merge.
+// { dg-final { scan-lang-dump-not {Propagating instantiated noexcept} module } }
