 
   @inlinable // c-abi
   internal func append(_ arg: CVarArg) {
+    var arg = arg
+
+    // We may need to retain an object that provides a pointer value.
+    if let obj = arg as? _CVarArgObject {
+      arg = obj._cVarArgObject
+      retainer.append(arg)
+    }
+
     var encoded = arg._cVarArgEncoding
 
 #if arch(x86_64) || arch(arm64)

  @usableFromInline // c-abi
  internal var storage: UnsafeMutablePointer<Int>?

  internal static var alignedStorageForEmptyVaLists: Double = 0
}


  @usableFromInline // c-abi
  internal var storage: ContiguousArray<Int>

  @usableFromInline // c-abi
  internal var retainer = [CVarArg]()

  @inlinable // c-abi
  internal init() {
    // prepare the register save area
