Index: lib/AST/Expr.cpp
===================================================================
--- lib/AST/Expr.cpp	(revision 234484)
+++ lib/AST/Expr.cpp	(working copy)
@@ -2896,11 +2896,16 @@
   #include "clang/AST/StmtNodes.inc"
     llvm_unreachable("unexpected Expr kind");
 
+  case UnresolvedLookupExprClass:
+  case UnresolvedMemberExprClass:
+    // It is possible to receieve unresolved nodes here, but we treat those as
+    // not having side effects because we do not know what the expression will
+    // resolve to. For instance: void f(); void f(int); noexcept(f);
+    return false;
+
   case DependentScopeDeclRefExprClass:
   case CXXUnresolvedConstructExprClass:
   case CXXDependentScopeMemberExprClass:
-  case UnresolvedLookupExprClass:
-  case UnresolvedMemberExprClass:
   case PackExpansionExprClass:
   case SubstNonTypeTemplateParmPackExprClass:
   case FunctionParmPackExprClass:
Index: test/SemaCXX/warn-unused-value-cxx11.cpp
===================================================================
--- test/SemaCXX/warn-unused-value-cxx11.cpp	(revision 234484)
+++ test/SemaCXX/warn-unused-value-cxx11.cpp	(working copy)
@@ -40,5 +40,12 @@
   (void)sizeof(s.f() = 5); // expected-warning {{expression with side effects has no effect in an unevaluated context}}
   (void)noexcept(s.g() = 5); // Ok
 }
+}
 
-}
\ No newline at end of file
+namespace PR22072 {
+template <class T> void t();
+
+void f() {
+  (void)noexcept(&t); // Ok
+}
+}
