@@ -1285,6 +1285,7 @@ irgen::emitGetEnumTagSinglePayloadGenericCall(IRGenFunction &IGF,
1285
1285
numExtraCases,
1286
1286
metadata,
1287
1287
getExtraInhabitantTagFn});
1288
+ call->setCallingConv (IGF.IGM .SwiftCC );
1288
1289
return call;
1289
1290
}
1290
1291
@@ -1299,16 +1300,19 @@ irgen::getOrCreateGetExtraInhabitantTagFunction(IRGenModule &IGM,
1299
1300
1300
1301
auto fnTy = llvm::FunctionType::get (IGM.Int32Ty ,
1301
1302
{IGM.OpaquePtrTy ,
1303
+ IGM.Int32Ty ,
1302
1304
IGM.TypeMetadataPtrTy },
1303
1305
false );
1304
1306
1305
1307
// TODO: use a meaningful mangled name and internal/shared linkage.
1306
1308
auto fn = llvm::Function::Create (fnTy, llvm::Function::PrivateLinkage,
1307
1309
" __swift_get_extra_inhabitant_index" ,
1308
1310
&IGM.Module );
1311
+ fn->setCallingConv (IGM.SwiftCC );
1309
1312
IRGenFunction IGF (IGM, fn);
1310
1313
auto parameters = IGF.collectParameters ();
1311
1314
auto ptr = parameters.claimNext ();
1315
+ auto xiCount = parameters.claimNext ();
1312
1316
auto metadata = parameters.claimNext ();
1313
1317
1314
1318
// Bind the metadata to make any archetypes available.
@@ -1320,7 +1324,7 @@ irgen::getOrCreateGetExtraInhabitantTagFunction(IRGenModule &IGM,
1320
1324
objectTI.getStorageType ()->getPointerTo ());
1321
1325
Address addr = objectTI.getAddressForPointer (ptr);
1322
1326
1323
- auto tag = emitter (IGF, addr);
1327
+ auto tag = emitter (IGF, addr, xiCount );
1324
1328
IGF.Builder .CreateRet (tag);
1325
1329
1326
1330
return fn;
@@ -1354,7 +1358,7 @@ irgen::emitStoreEnumTagSinglePayloadGenericCall(IRGenFunction &IGF,
1354
1358
numExtraCases,
1355
1359
metadata,
1356
1360
storeExtraInhabitantTagFn});
1357
- ( void ) call ;
1361
+ call-> setCallingConv (IGF. IGM . SwiftCC ) ;
1358
1362
}
1359
1363
1360
1364
llvm::Constant *
@@ -1368,6 +1372,7 @@ irgen::getOrCreateStoreExtraInhabitantTagFunction(IRGenModule &IGM,
1368
1372
1369
1373
auto fnTy = llvm::FunctionType::get (IGM.VoidTy ,
1370
1374
{IGM.OpaquePtrTy ,
1375
+ IGM.Int32Ty ,
1371
1376
IGM.Int32Ty ,
1372
1377
IGM.TypeMetadataPtrTy },
1373
1378
false );
@@ -1376,10 +1381,12 @@ irgen::getOrCreateStoreExtraInhabitantTagFunction(IRGenModule &IGM,
1376
1381
auto fn = llvm::Function::Create (fnTy, llvm::Function::PrivateLinkage,
1377
1382
" __swift_get_extra_inhabitant_index" ,
1378
1383
&IGM.Module );
1384
+ fn->setCallingConv (IGM.SwiftCC );
1379
1385
IRGenFunction IGF (IGM, fn);
1380
1386
auto parameters = IGF.collectParameters ();
1381
1387
auto ptr = parameters.claimNext ();
1382
1388
auto tag = parameters.claimNext ();
1389
+ auto xiCount = parameters.claimNext ();
1383
1390
auto metadata = parameters.claimNext ();
1384
1391
1385
1392
// Bind the metadata to make any archetypes available.
@@ -1391,7 +1398,7 @@ irgen::getOrCreateStoreExtraInhabitantTagFunction(IRGenModule &IGM,
1391
1398
objectTI.getStorageType ()->getPointerTo ());
1392
1399
Address addr = objectTI.getAddressForPointer (ptr);
1393
1400
1394
- emitter (IGF, addr, tag);
1401
+ emitter (IGF, addr, tag, xiCount );
1395
1402
IGF.Builder .CreateRetVoid ();
1396
1403
1397
1404
return fn;
0 commit comments