diff --git a/lib/IRGen/LoadableByAddress.cpp b/lib/IRGen/LoadableByAddress.cpp
index 7210b26..4e4d582 100644
--- a/lib/IRGen/LoadableByAddress.cpp
+++ b/lib/IRGen/LoadableByAddress.cpp
@@ -2542,6 +2542,10 @@
           SILFunction *RefF = FRI->getReferencedFunction();
           if (modFuncs.count(RefF) != 0) {
             // Go over the uses and add them to lists to modify
+            //
+            // FIXME: Why aren't function_ref uses processed transitively?  And
+            // why is it necessary to visit uses at all if they will be visited
+            // later in this loop?
             for (auto *user : FRI->getUses()) {
               SILInstruction *currInstr = user->getUser();
               switch (currInstr->getKind()) {
@@ -2584,6 +2588,14 @@
           if (modifiableFunction(CanSILFunctionType(fType))) {
             conversionInstrs.insert(CFI);
           }
+        } else if (auto *TTI = dyn_cast<ThinToThickFunctionInst>(&I)) {
+
+          CanType canType = TTI->getCallee()->getType().getSwiftRValueType();
+          auto *fType = canType->castTo<SILFunctionType>();
+
+          if (modifiableFunction(CanSILFunctionType(fType)))
+            conversionInstrs.insert(TTI);
+
         } else if (auto *LI = dyn_cast<LoadInst>(&I)) {
           SILType currType = LI->getType();
           if (auto *fType = getInnerFunctionType(currType)) {
diff --git a/test/IRGen/big_types_corner_cases.sil b/test/IRGen/big_types_corner_cases.sil
index 92688f5..5f78c99 100644
--- a/test/IRGen/big_types_corner_cases.sil
+++ b/test/IRGen/big_types_corner_cases.sil
@@ -259,6 +259,26 @@
   return %99 : $()
 }
 
+sil @convertToThickHelper : $@convention(thin) (@owned BigStruct) -> ()
+
+// CHECK-LABAL: define {{.*}} swiftcc void @convertToThick(%T22big_types_corner_cases9BigStructV* noalias nocapture dereferenceable({{.*}})) #0 {
+// CHECK: entry:
+// CHECK:   [[ALLOC:%.*]] = alloca %T22big_types_corner_cases9BigStructV, align 4
+// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64
+// CHECK:   call swiftcc void bitcast (void (%T22big_types_corner_cases9BigStructV*)* @convertToThickHelper to void (%T22big_types_corner_cases9BigStructV*, %swift.refcounted*)*)(%T22big_types_corner_cases9BigStructV* noalias nocapture dereferenceable({{.*}}) [[ALLOC]], %swift.refcounted* swiftself null)
+// CHECK:   ret void
+// CHECK-LABEL: }
+sil @convertToThick : $@convention(thin) (@in BigStruct) -> () {
+bb0(%0 : $*BigStruct):
+  %3 = function_ref @convertToThickHelper : $@convention(thin) (@owned BigStruct) -> ()
+  %4 = convert_function %3 : $@convention(thin) (@owned BigStruct) -> () to $@convention(thin) @noescape (@owned BigStruct) -> ()
+  %5 = thin_to_thick_function %4 : $@convention(thin) @noescape (@owned BigStruct) -> () to $@noescape @callee_owned (@owned BigStruct) -> ()
+  %8 = load %0 : $*BigStruct
+  %10 = apply %5(%8) : $@noescape @callee_owned (@owned BigStruct) -> ()
+  %12 = tuple ()
+  return %12 : $()
+}
+
 sil_vtable SuperBase {
 }
 
