diff --git a/lib/Semantics/resolve-names.cpp b/lib/Semantics/resolve-names.cpp
index a62b7c3..0aca2cd 100644
--- a/lib/Semantics/resolve-names.cpp
+++ b/lib/Semantics/resolve-names.cpp
@@ -235,7 +235,7 @@
   Attrs GetAttrs();
   Attrs EndAttrs();
   bool SetPassNameOn(Symbol &);
-  bool SetBindNameOn(Symbol &);
+  void SetBindNameOn(Symbol &);
   void Post(const parser::LanguageBindingSpec &);
   bool Pre(const parser::IntentSpec &);
   bool Pre(const parser::Pass &);
@@ -1529,28 +1529,26 @@
   return true;
 }
 
-bool AttrsVisitor::SetBindNameOn(Symbol &symbol) {
+void AttrsVisitor::SetBindNameOn(Symbol &symbol) {
   if (!attrs_ || !attrs_->test(Attr::BIND_C)) {
-    return false;
+    return;
   }
   std::optional<std::string> label{evaluate::GetScalarConstantValue<
       evaluate::Type<TypeCategory::Character, 1>>(bindName_)};
   // 18.9.2(2): discard leading and trailing blanks, ignore if all blank
   if (label) {
     auto first{label->find_first_not_of(" ")};
-    auto last{label->find_last_not_of(" ")};
     if (first == std::string::npos) {
+      // Empty NAME= means no binding at all (18.10.2p2)
       Say(currStmtSource().value(), "Blank binding label ignored"_en_US);
-      label.reset();
-    } else {
-      label = label->substr(first, last - first + 1);
+      return;
     }
-  }
-  if (!label) {
+    auto last{label->find_last_not_of(" ")};
+    label = label->substr(first, last - first + 1);
+  } else {
     label = parser::ToLowerCaseLetters(symbol.name().ToString());
   }
   symbol.SetBindName(std::move(*label));
-  return true;
 }
 
 void AttrsVisitor::Post(const parser::LanguageBindingSpec &x) {
