Mark absl::Status as ABSL_ATTRIBUTE_TRIVIAL_ABI

This should make it more efficient to pass absl::Status parameters and return values, allowing them to be passed in a register.

PiperOrigin-RevId: 571213728
Change-Id: I2a0183aedc08c270d0af0e7a30a07590ea116896
diff --git a/absl/status/internal/status_internal.h b/absl/status/internal/status_internal.h
index e91fa4f..7655709 100644
--- a/absl/status/internal/status_internal.h
+++ b/absl/status/internal/status_internal.h
@@ -37,9 +37,9 @@
 // TODO(b/176172494): ABSL_MUST_USE_RESULT should expand to the more strict
 // [[nodiscard]]. For now, just use [[nodiscard]] directly when it is available.
 #if ABSL_HAVE_CPP_ATTRIBUTE(nodiscard)
-class [[nodiscard]] Status;
+class [[nodiscard]] ABSL_ATTRIBUTE_TRIVIAL_ABI Status;
 #else
-class ABSL_MUST_USE_RESULT Status;
+class ABSL_MUST_USE_RESULT ABSL_ATTRIBUTE_TRIVIAL_ABI Status;
 #endif
 ABSL_NAMESPACE_END
 }  // namespace absl
diff --git a/absl/status/status.h b/absl/status/status.h
index dc37493..d4f7414 100644
--- a/absl/status/status.h
+++ b/absl/status/status.h
@@ -427,7 +427,7 @@
 // Returned Status objects may not be ignored. status_internal.h has a forward
 // declaration of the form
 // class ABSL_MUST_USE_RESULT Status;
-class Status final {
+class ABSL_ATTRIBUTE_TRIVIAL_ABI Status final {
  public:
   // Constructors