diff --git a/tools/gn/label.h b/tools/gn/label.h
index 88336ea..33cac56 100644
--- a/tools/gn/label.h
+++ b/tools/gn/label.h
@@ -71,14 +71,12 @@
     return !operator==(other);
   }
   bool operator<(const Label& other) const {
-    // TODO(brettw) could be optimized to avoid an extra full string check
-    // (one for operator==, one for <).
-    if (dir_ != other.dir_)
-      return dir_ < other.dir_;
-    if (name_ != other.name_)
-      return name_ < other.name_;
-    if (toolchain_dir_ != other.toolchain_dir_)
-      return toolchain_dir_ < other.toolchain_dir_;
+    if (int c = dir_.value().compare(other.dir_.value()))
+      return c < 0;
+    if (int c = name_.compare(other.name_))
+      return c < 0;
+    if (int c = toolchain_dir_.value().compare(other.toolchain_dir_.value()))
+      return c < 0;
     return toolchain_name_ < other.toolchain_name_;
   }
 
diff --git a/tools/gn/location.cc b/tools/gn/location.cc
index 7a18786..59b99d6 100644
--- a/tools/gn/location.cc
+++ b/tools/gn/location.cc
@@ -4,6 +4,8 @@
 
 #include "tools/gn/location.h"
 
+#include <tuple>
+
 #include "base/logging.h"
 #include "base/strings/string_number_conversions.h"
 #include "tools/gn/input_file.h"
@@ -36,9 +38,8 @@
 
 bool Location::operator<(const Location& other) const {
   DCHECK(file_ == other.file_);
-  if (line_number_ != other.line_number_)
-    return line_number_ < other.line_number_;
-  return char_offset_ < other.char_offset_;
+  return std::tie(line_number_, char_offset_) <
+         std::tie(other.line_number_, other.char_offset_);
 }
 
 std::string Location::Describe(bool include_char_offset) const {
