Add `is_trivial_abi` bit to Record IR.

Without a way to look up the Record for a given CcType/RsType, there is no way to make this influence code generation of actual calls which use this type. So this is currently unused.

However, this may be enough, by itself, to mark a type as trivially relocatable. A type with this bit can be passed through registers, which means that, by definition, its memory location doesn't matter, and it can be trivially relocated.

For example, see this godbolt link showing that marking a class as trivial_abi breaks it by causing it to get relocated!

https://godbolt.org/z/voMa5TPKq

PiperOrigin-RevId: 400123681
diff --git a/rs_bindings_from_cc/ir.h b/rs_bindings_from_cc/ir.h
index a670deb..bf94635 100644
--- a/rs_bindings_from_cc/ir.h
+++ b/rs_bindings_from_cc/ir.h
@@ -187,6 +187,16 @@
   // Size and alignment in bytes.
   int64_t size;
   int64_t alignment;
+
+  // Whether this type is passed by value as if it were a trivial type (the same
+  // as it would be if it were a struct in C).
+  //
+  // This can be either due to language rules (it *is* a trivial type), or due
+  // to the usage of a Clang attribute that forces trivial for calls:
+  //
+  //  * https://eel.is/c++draft/class.temporary#3
+  //  * https://clang.llvm.org/docs/AttributeReference.html#trivial-abi
+  bool is_trivial_abi = false;
 };
 
 // A complete intermediate representation of bindings for publicly accessible