@@ -3534,16 +3534,6 @@ namespace {
35343534
35353535 if (HasDependentMetadata)
35363536 asImpl ().emitInitializeMetadata (IGF, metadata, false , collector);
3537-
3538- if (layoutStringsEnabled (IGM)) {
3539- if (auto *layoutString = getLayoutString ()) {
3540- auto layoutStringCast = IGF.Builder .CreateBitCast (layoutString,
3541- IGM.Int8PtrTy );
3542- IGF.Builder .CreateCall (
3543- IGM.getGenericInstantiateLayoutStringFunctionPointer (),
3544- {layoutStringCast, metadata});
3545- }
3546- }
35473537 });
35483538 }
35493539
@@ -5719,11 +5709,24 @@ namespace {
57195709 descriptor = emitPointerAuthSign (IGF, descriptor, authInfo);
57205710 }
57215711
5722- return IGF.Builder .CreateCall (
5723- getLayoutString () ?
5724- IGM.getAllocateGenericValueMetadataWithLayoutStringFunctionPointer () :
5725- IGM.getAllocateGenericValueMetadataFunctionPointer (),
5726- {descriptor, arguments, templatePointer, extraSizeV});
5712+ if (layoutStringsEnabled (IGM)) {
5713+ auto *call = IGF.Builder .CreateCall (
5714+ IGM.getAllocateGenericValueMetadataWithLayoutStringFunctionPointer (),
5715+ {descriptor, arguments, templatePointer, extraSizeV});
5716+
5717+ if (auto *layoutString = getLayoutString ()) {
5718+ auto layoutStringCast =
5719+ IGF.Builder .CreateBitCast (layoutString, IGM.Int8PtrTy );
5720+ IGF.Builder .CreateCall (
5721+ IGM.getGenericInstantiateLayoutStringFunctionPointer (),
5722+ {layoutStringCast, call});
5723+ }
5724+ return call;
5725+ } else {
5726+ return IGF.Builder .CreateCall (
5727+ IGM.getAllocateGenericValueMetadataFunctionPointer (),
5728+ {descriptor, arguments, templatePointer, extraSizeV});
5729+ }
57275730 }
57285731
57295732 void flagUnfilledFieldOffset () {
@@ -6191,11 +6194,24 @@ namespace {
61916194 descriptor = emitPointerAuthSign (IGF, descriptor, authInfo);
61926195 }
61936196
6194- return IGF.Builder .CreateCall (
6195- getLayoutString () ?
6196- IGM.getAllocateGenericValueMetadataWithLayoutStringFunctionPointer () :
6197+ if (layoutStringsEnabled (IGM)) {
6198+ auto *call = IGF.Builder .CreateCall (
6199+ IGM.getAllocateGenericValueMetadataWithLayoutStringFunctionPointer (),
6200+ {descriptor, arguments, templatePointer, extraSizeV});
6201+
6202+ if (auto *layoutString = getLayoutString ()) {
6203+ auto layoutStringCast =
6204+ IGF.Builder .CreateBitCast (layoutString, IGM.Int8PtrTy );
6205+ IGF.Builder .CreateCall (
6206+ IGM.getGenericInstantiateLayoutStringFunctionPointer (),
6207+ {layoutStringCast, call});
6208+ }
6209+ return call;
6210+ } else {
6211+ return IGF.Builder .CreateCall (
61976212 IGM.getAllocateGenericValueMetadataFunctionPointer (),
6198- {descriptor, arguments, templatePointer, extraSizeV});
6213+ {descriptor, arguments, templatePointer, extraSizeV});
6214+ }
61996215 }
62006216
62016217 bool hasTrailingFlags () {
0 commit comments