@@ -769,8 +769,7 @@ MemorySanitizer::getOrInsertMsanMetadataFunction(Module &M, StringRef Name,
769
769
ArgsTy... Args) {
770
770
if (TargetTriple.getArch () == Triple::systemz) {
771
771
// SystemZ ABI: shadow/origin pair is returned via a hidden parameter.
772
- return M.getOrInsertFunction (Name, Type::getVoidTy (*C),
773
- PointerType::get (MsanMetadata, 0 ),
772
+ return M.getOrInsertFunction (Name, Type::getVoidTy (*C), PtrTy,
774
773
std::forward<ArgsTy>(Args)...);
775
774
}
776
775
@@ -804,29 +803,26 @@ void MemorySanitizer::createKernelApi(Module &M, const TargetLibraryInfo &TLI) {
804
803
ArrayType::get (IRB.getInt64Ty (), kParamTLSSize / 8 ), /* va_arg_origin */
805
804
IRB.getInt64Ty (), ArrayType::get (OriginTy, kParamTLSSize / 4 ), OriginTy,
806
805
OriginTy);
807
- MsanGetContextStateFn = M. getOrInsertFunction (
808
- " __msan_get_context_state" , PointerType::get (MsanContextStateTy, 0 ) );
806
+ MsanGetContextStateFn =
807
+ M. getOrInsertFunction ( " __msan_get_context_state" , PtrTy );
809
808
810
- MsanMetadata = StructType::get (PointerType::get (IRB.getInt8Ty (), 0 ),
811
- PointerType::get (IRB.getInt32Ty (), 0 ));
809
+ MsanMetadata = StructType::get (PtrTy, PtrTy);
812
810
813
811
for (int ind = 0 , size = 1 ; ind < 4 ; ind++, size <<= 1 ) {
814
812
std::string name_load =
815
813
" __msan_metadata_ptr_for_load_" + std::to_string (size);
816
814
std::string name_store =
817
815
" __msan_metadata_ptr_for_store_" + std::to_string (size);
818
- MsanMetadataPtrForLoad_1_8[ind] = getOrInsertMsanMetadataFunction (
819
- M, name_load, PointerType::get (IRB. getInt8Ty (), 0 ) );
820
- MsanMetadataPtrForStore_1_8[ind] = getOrInsertMsanMetadataFunction (
821
- M, name_store, PointerType::get (IRB. getInt8Ty (), 0 ) );
816
+ MsanMetadataPtrForLoad_1_8[ind] =
817
+ getOrInsertMsanMetadataFunction ( M, name_load, PtrTy );
818
+ MsanMetadataPtrForStore_1_8[ind] =
819
+ getOrInsertMsanMetadataFunction ( M, name_store, PtrTy );
822
820
}
823
821
824
822
MsanMetadataPtrForLoadN = getOrInsertMsanMetadataFunction (
825
- M, " __msan_metadata_ptr_for_load_n" , PointerType::get (IRB.getInt8Ty (), 0 ),
826
- IRB.getInt64Ty ());
823
+ M, " __msan_metadata_ptr_for_load_n" , PtrTy, IRB.getInt64Ty ());
827
824
MsanMetadataPtrForStoreN = getOrInsertMsanMetadataFunction (
828
- M, " __msan_metadata_ptr_for_store_n" ,
829
- PointerType::get (IRB.getInt8Ty (), 0 ), IRB.getInt64Ty ());
825
+ M, " __msan_metadata_ptr_for_store_n" , PtrTy, IRB.getInt64Ty ());
830
826
831
827
// Functions for poisoning and unpoisoning memory.
832
828
MsanPoisonAllocaFn = M.getOrInsertFunction (
@@ -937,9 +933,8 @@ void MemorySanitizer::initializeCallbacks(Module &M, const TargetLibraryInfo &TL
937
933
TLI.getAttrList (C, {1 }, /* Signed=*/ true ),
938
934
PtrTy, PtrTy, IRB.getInt32Ty (), IntptrTy);
939
935
940
- MsanInstrumentAsmStoreFn =
941
- M.getOrInsertFunction (" __msan_instrument_asm_store" , IRB.getVoidTy (),
942
- PointerType::get (IRB.getInt8Ty (), 0 ), IntptrTy);
936
+ MsanInstrumentAsmStoreFn = M.getOrInsertFunction (
937
+ " __msan_instrument_asm_store" , IRB.getVoidTy (), PtrTy, IntptrTy);
943
938
944
939
if (CompileKernel) {
945
940
createKernelApi (M, TLI);
@@ -1264,8 +1259,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
1264
1259
Align CurrentAlignment = Alignment;
1265
1260
if (Alignment >= IntptrAlignment && IntptrSize > kOriginSize ) {
1266
1261
Value *IntptrOrigin = originToIntptr (IRB, Origin);
1267
- Value *IntptrOriginPtr =
1268
- IRB.CreatePointerCast (OriginPtr, PointerType::get (MS.IntptrTy , 0 ));
1262
+ Value *IntptrOriginPtr = IRB.CreatePointerCast (OriginPtr, MS.PtrTy );
1269
1263
for (unsigned i = 0 ; i < Size / IntptrSize; ++i) {
1270
1264
Value *Ptr = i ? IRB.CreateConstGEP1_32 (MS.IntptrTy , IntptrOriginPtr, i)
1271
1265
: IntptrOriginPtr;
@@ -1691,7 +1685,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
1691
1685
VectTy->getElementCount ());
1692
1686
}
1693
1687
assert (IntPtrTy == MS.IntptrTy );
1694
- return PointerType::get (* MS.C , 0 ) ;
1688
+ return MS.PtrTy ;
1695
1689
}
1696
1690
1697
1691
Constant *constToIntPtr (Type *IntPtrTy, uint64_t C) const {
@@ -1787,8 +1781,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
1787
1781
TypeSize Size = DL.getTypeStoreSize (ShadowTy);
1788
1782
1789
1783
FunctionCallee Getter = MS.getKmsanShadowOriginAccessFn (isStore, Size);
1790
- Value *AddrCast =
1791
- IRB.CreatePointerCast (Addr, PointerType::get (IRB.getInt8Ty (), 0 ));
1784
+ Value *AddrCast = IRB.CreatePointerCast (Addr, MS.PtrTy );
1792
1785
if (Getter) {
1793
1786
ShadowOriginPtrs = createMetadataCall (IRB, Getter, AddrCast);
1794
1787
} else {
@@ -1799,7 +1792,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
1799
1792
AddrCast, SizeVal);
1800
1793
}
1801
1794
Value *ShadowPtr = IRB.CreateExtractValue (ShadowOriginPtrs, 0 );
1802
- ShadowPtr = IRB.CreatePointerCast (ShadowPtr, PointerType::get (ShadowTy, 0 ) );
1795
+ ShadowPtr = IRB.CreatePointerCast (ShadowPtr, MS. PtrTy );
1803
1796
Value *OriginPtr = IRB.CreateExtractValue (ShadowOriginPtrs, 1 );
1804
1797
1805
1798
return std::make_pair (ShadowPtr, OriginPtr);
@@ -5009,21 +5002,19 @@ struct VarArgHelperBase : public VarArgHelper {
5009
5002
}
5010
5003
5011
5004
// / Compute the shadow address for a given va_arg.
5012
- Value *getShadowPtrForVAArgument (Type *Ty, IRBuilder<> &IRB,
5013
- unsigned ArgOffset) {
5005
+ Value *getShadowPtrForVAArgument (IRBuilder<> &IRB, unsigned ArgOffset) {
5014
5006
Value *Base = IRB.CreatePointerCast (MS.VAArgTLS , MS.IntptrTy );
5015
5007
Base = IRB.CreateAdd (Base, ConstantInt::get (MS.IntptrTy , ArgOffset));
5016
- return IRB.CreateIntToPtr (Base, PointerType::get (MSV.getShadowTy (Ty), 0 ),
5017
- " _msarg_va_s" );
5008
+ return IRB.CreateIntToPtr (Base, MS.PtrTy , " _msarg_va_s" );
5018
5009
}
5019
5010
5020
5011
// / Compute the shadow address for a given va_arg.
5021
- Value *getShadowPtrForVAArgument (Type *Ty, IRBuilder<> &IRB,
5022
- unsigned ArgOffset, unsigned ArgSize) {
5012
+ Value *getShadowPtrForVAArgument (IRBuilder<> &IRB, unsigned ArgOffset ,
5013
+ unsigned ArgSize) {
5023
5014
// Make sure we don't overflow __msan_va_arg_tls.
5024
5015
if (ArgOffset + ArgSize > kParamTLSSize )
5025
5016
return nullptr ;
5026
- return getShadowPtrForVAArgument (Ty, IRB, ArgOffset);
5017
+ return getShadowPtrForVAArgument (IRB, ArgOffset);
5027
5018
}
5028
5019
5029
5020
// / Compute the origin address for a given va_arg.
@@ -5033,8 +5024,7 @@ struct VarArgHelperBase : public VarArgHelper {
5033
5024
// getShadowPtrForVAArgument(), so __msan_va_arg_origin_tls can never
5034
5025
// overflow.
5035
5026
Base = IRB.CreateAdd (Base, ConstantInt::get (MS.IntptrTy , ArgOffset));
5036
- return IRB.CreateIntToPtr (Base, PointerType::get (MS.OriginTy , 0 ),
5037
- " _msarg_va_o" );
5027
+ return IRB.CreateIntToPtr (Base, MS.PtrTy , " _msarg_va_o" );
5038
5028
}
5039
5029
5040
5030
void CleanUnusedTLS (IRBuilder<> &IRB, Value *ShadowBase,
@@ -5147,8 +5137,7 @@ struct VarArgAMD64Helper : public VarArgHelperBase {
5147
5137
uint64_t ArgSize = DL.getTypeAllocSize (RealTy);
5148
5138
uint64_t AlignedSize = alignTo (ArgSize, 8 );
5149
5139
unsigned BaseOffset = OverflowOffset;
5150
- Value *ShadowBase =
5151
- getShadowPtrForVAArgument (RealTy, IRB, OverflowOffset);
5140
+ Value *ShadowBase = getShadowPtrForVAArgument (IRB, OverflowOffset);
5152
5141
Value *OriginBase = nullptr ;
5153
5142
if (MS.TrackOrigins )
5154
5143
OriginBase = getOriginPtrForVAArgument (IRB, OverflowOffset);
@@ -5177,14 +5166,14 @@ struct VarArgAMD64Helper : public VarArgHelperBase {
5177
5166
Value *ShadowBase, *OriginBase = nullptr ;
5178
5167
switch (AK) {
5179
5168
case AK_GeneralPurpose:
5180
- ShadowBase = getShadowPtrForVAArgument (A-> getType (), IRB, GpOffset);
5169
+ ShadowBase = getShadowPtrForVAArgument (IRB, GpOffset);
5181
5170
if (MS.TrackOrigins )
5182
5171
OriginBase = getOriginPtrForVAArgument (IRB, GpOffset);
5183
5172
GpOffset += 8 ;
5184
5173
assert (GpOffset <= kParamTLSSize );
5185
5174
break ;
5186
5175
case AK_FloatingPoint:
5187
- ShadowBase = getShadowPtrForVAArgument (A-> getType (), IRB, FpOffset);
5176
+ ShadowBase = getShadowPtrForVAArgument (IRB, FpOffset);
5188
5177
if (MS.TrackOrigins )
5189
5178
OriginBase = getOriginPtrForVAArgument (IRB, FpOffset);
5190
5179
FpOffset += 16 ;
@@ -5196,8 +5185,7 @@ struct VarArgAMD64Helper : public VarArgHelperBase {
5196
5185
uint64_t ArgSize = DL.getTypeAllocSize (A->getType ());
5197
5186
uint64_t AlignedSize = alignTo (ArgSize, 8 );
5198
5187
unsigned BaseOffset = OverflowOffset;
5199
- ShadowBase =
5200
- getShadowPtrForVAArgument (A->getType (), IRB, OverflowOffset);
5188
+ ShadowBase = getShadowPtrForVAArgument (IRB, OverflowOffset);
5201
5189
if (MS.TrackOrigins ) {
5202
5190
OriginBase = getOriginPtrForVAArgument (IRB, OverflowOffset);
5203
5191
}
@@ -5263,13 +5251,11 @@ struct VarArgAMD64Helper : public VarArgHelperBase {
5263
5251
NextNodeIRBuilder IRB (OrigInst);
5264
5252
Value *VAListTag = OrigInst->getArgOperand (0 );
5265
5253
5266
- Type *RegSaveAreaPtrTy = PointerType::getUnqual (*MS.C ); // i64*
5267
5254
Value *RegSaveAreaPtrPtr = IRB.CreateIntToPtr (
5268
5255
IRB.CreateAdd (IRB.CreatePtrToInt (VAListTag, MS.IntptrTy ),
5269
5256
ConstantInt::get (MS.IntptrTy , 16 )),
5270
- PointerType::get (RegSaveAreaPtrTy, 0 ));
5271
- Value *RegSaveAreaPtr =
5272
- IRB.CreateLoad (RegSaveAreaPtrTy, RegSaveAreaPtrPtr);
5257
+ MS.PtrTy );
5258
+ Value *RegSaveAreaPtr = IRB.CreateLoad (MS.PtrTy , RegSaveAreaPtrPtr);
5273
5259
Value *RegSaveAreaShadowPtr, *RegSaveAreaOriginPtr;
5274
5260
const Align Alignment = Align (16 );
5275
5261
std::tie (RegSaveAreaShadowPtr, RegSaveAreaOriginPtr) =
@@ -5280,13 +5266,12 @@ struct VarArgAMD64Helper : public VarArgHelperBase {
5280
5266
if (MS.TrackOrigins )
5281
5267
IRB.CreateMemCpy (RegSaveAreaOriginPtr, Alignment, VAArgTLSOriginCopy,
5282
5268
Alignment, AMD64FpEndOffset);
5283
- Type *OverflowArgAreaPtrTy = PointerType::getUnqual (*MS.C ); // i64*
5284
5269
Value *OverflowArgAreaPtrPtr = IRB.CreateIntToPtr (
5285
5270
IRB.CreateAdd (IRB.CreatePtrToInt (VAListTag, MS.IntptrTy ),
5286
5271
ConstantInt::get (MS.IntptrTy , 8 )),
5287
- PointerType::get (OverflowArgAreaPtrTy, 0 ) );
5272
+ MS. PtrTy );
5288
5273
Value *OverflowArgAreaPtr =
5289
- IRB.CreateLoad (OverflowArgAreaPtrTy , OverflowArgAreaPtrPtr);
5274
+ IRB.CreateLoad (MS. PtrTy , OverflowArgAreaPtrPtr);
5290
5275
Value *OverflowArgAreaShadowPtr, *OverflowArgAreaOriginPtr;
5291
5276
std::tie (OverflowArgAreaShadowPtr, OverflowArgAreaOriginPtr) =
5292
5277
MSV.getShadowOriginPtr (OverflowArgAreaPtr, IRB, IRB.getInt8Ty (),
@@ -5329,7 +5314,7 @@ struct VarArgMIPS64Helper : public VarArgHelperBase {
5329
5314
if (ArgSize < 8 )
5330
5315
VAArgOffset += (8 - ArgSize);
5331
5316
}
5332
- Base = getShadowPtrForVAArgument (A-> getType (), IRB, VAArgOffset, ArgSize);
5317
+ Base = getShadowPtrForVAArgument (IRB, VAArgOffset, ArgSize);
5333
5318
VAArgOffset += ArgSize;
5334
5319
VAArgOffset = alignTo (VAArgOffset, 8 );
5335
5320
if (!Base)
@@ -5371,12 +5356,9 @@ struct VarArgMIPS64Helper : public VarArgHelperBase {
5371
5356
for (CallInst *OrigInst : VAStartInstrumentationList) {
5372
5357
NextNodeIRBuilder IRB (OrigInst);
5373
5358
Value *VAListTag = OrigInst->getArgOperand (0 );
5374
- Type *RegSaveAreaPtrTy = PointerType::getUnqual (*MS.C ); // i64*
5375
- Value *RegSaveAreaPtrPtr =
5376
- IRB.CreateIntToPtr (IRB.CreatePtrToInt (VAListTag, MS.IntptrTy ),
5377
- PointerType::get (RegSaveAreaPtrTy, 0 ));
5378
- Value *RegSaveAreaPtr =
5379
- IRB.CreateLoad (RegSaveAreaPtrTy, RegSaveAreaPtrPtr);
5359
+ Value *RegSaveAreaPtrPtr = IRB.CreateIntToPtr (
5360
+ IRB.CreatePtrToInt (VAListTag, MS.IntptrTy ), MS.PtrTy );
5361
+ Value *RegSaveAreaPtr = IRB.CreateLoad (MS.PtrTy , RegSaveAreaPtrPtr);
5380
5362
Value *RegSaveAreaShadowPtr, *RegSaveAreaOriginPtr;
5381
5363
const Align Alignment = Align (8 );
5382
5364
std::tie (RegSaveAreaShadowPtr, RegSaveAreaOriginPtr) =
@@ -5460,11 +5442,11 @@ struct VarArgAArch64Helper : public VarArgHelperBase {
5460
5442
Value *Base;
5461
5443
switch (AK) {
5462
5444
case AK_GeneralPurpose:
5463
- Base = getShadowPtrForVAArgument (A-> getType (), IRB, GrOffset);
5445
+ Base = getShadowPtrForVAArgument (IRB, GrOffset);
5464
5446
GrOffset += 8 * RegNum;
5465
5447
break ;
5466
5448
case AK_FloatingPoint:
5467
- Base = getShadowPtrForVAArgument (A-> getType (), IRB, VrOffset);
5449
+ Base = getShadowPtrForVAArgument (IRB, VrOffset);
5468
5450
VrOffset += 16 * RegNum;
5469
5451
break ;
5470
5452
case AK_Memory:
@@ -5475,7 +5457,7 @@ struct VarArgAArch64Helper : public VarArgHelperBase {
5475
5457
uint64_t ArgSize = DL.getTypeAllocSize (A->getType ());
5476
5458
uint64_t AlignedSize = alignTo (ArgSize, 8 );
5477
5459
unsigned BaseOffset = OverflowOffset;
5478
- Base = getShadowPtrForVAArgument (A-> getType (), IRB, BaseOffset);
5460
+ Base = getShadowPtrForVAArgument (IRB, BaseOffset);
5479
5461
OverflowOffset += AlignedSize;
5480
5462
if (OverflowOffset > kParamTLSSize ) {
5481
5463
// We have no space to copy shadow there.
@@ -5500,7 +5482,7 @@ struct VarArgAArch64Helper : public VarArgHelperBase {
5500
5482
Value *SaveAreaPtrPtr = IRB.CreateIntToPtr (
5501
5483
IRB.CreateAdd (IRB.CreatePtrToInt (VAListTag, MS.IntptrTy ),
5502
5484
ConstantInt::get (MS.IntptrTy , offset)),
5503
- PointerType::get (* MS.C , 0 ) );
5485
+ MS.PtrTy );
5504
5486
return IRB.CreateLoad (Type::getInt64Ty (*MS.C ), SaveAreaPtrPtr);
5505
5487
}
5506
5488
@@ -5509,7 +5491,7 @@ struct VarArgAArch64Helper : public VarArgHelperBase {
5509
5491
Value *SaveAreaPtr = IRB.CreateIntToPtr (
5510
5492
IRB.CreateAdd (IRB.CreatePtrToInt (VAListTag, MS.IntptrTy ),
5511
5493
ConstantInt::get (MS.IntptrTy , offset)),
5512
- PointerType::get (* MS.C , 0 ) );
5494
+ MS.PtrTy );
5513
5495
Value *SaveArea32 = IRB.CreateLoad (IRB.getInt32Ty (), SaveAreaPtr);
5514
5496
return IRB.CreateSExt (SaveArea32, MS.IntptrTy );
5515
5497
}
@@ -5670,8 +5652,8 @@ struct VarArgPowerPC64Helper : public VarArgHelperBase {
5670
5652
ArgAlign = Align (8 );
5671
5653
VAArgOffset = alignTo (VAArgOffset, ArgAlign);
5672
5654
if (!IsFixed) {
5673
- Value *Base = getShadowPtrForVAArgument (
5674
- RealTy, IRB, VAArgOffset - VAArgBase, ArgSize);
5655
+ Value *Base =
5656
+ getShadowPtrForVAArgument ( IRB, VAArgOffset - VAArgBase, ArgSize);
5675
5657
if (Base) {
5676
5658
Value *AShadowPtr, *AOriginPtr;
5677
5659
std::tie (AShadowPtr, AOriginPtr) =
@@ -5707,8 +5689,8 @@ struct VarArgPowerPC64Helper : public VarArgHelperBase {
5707
5689
VAArgOffset += (8 - ArgSize);
5708
5690
}
5709
5691
if (!IsFixed) {
5710
- Base = getShadowPtrForVAArgument (A-> getType (), IRB,
5711
- VAArgOffset - VAArgBase, ArgSize);
5692
+ Base =
5693
+ getShadowPtrForVAArgument (IRB, VAArgOffset - VAArgBase, ArgSize);
5712
5694
if (Base)
5713
5695
IRB.CreateAlignedStore (MSV.getShadow (A), Base, kShadowTLSAlignment );
5714
5696
}
@@ -5755,12 +5737,9 @@ struct VarArgPowerPC64Helper : public VarArgHelperBase {
5755
5737
for (CallInst *OrigInst : VAStartInstrumentationList) {
5756
5738
NextNodeIRBuilder IRB (OrigInst);
5757
5739
Value *VAListTag = OrigInst->getArgOperand (0 );
5758
- Type *RegSaveAreaPtrTy = PointerType::getUnqual (*MS.C ); // i64*
5759
- Value *RegSaveAreaPtrPtr =
5760
- IRB.CreateIntToPtr (IRB.CreatePtrToInt (VAListTag, MS.IntptrTy ),
5761
- PointerType::get (RegSaveAreaPtrTy, 0 ));
5762
- Value *RegSaveAreaPtr =
5763
- IRB.CreateLoad (RegSaveAreaPtrTy, RegSaveAreaPtrPtr);
5740
+ Value *RegSaveAreaPtrPtr = IRB.CreateIntToPtr (
5741
+ IRB.CreatePtrToInt (VAListTag, MS.IntptrTy ), MS.PtrTy );
5742
+ Value *RegSaveAreaPtr = IRB.CreateLoad (MS.PtrTy , RegSaveAreaPtrPtr);
5764
5743
Value *RegSaveAreaShadowPtr, *RegSaveAreaOriginPtr;
5765
5744
const Align Alignment = Align (8 );
5766
5745
std::tie (RegSaveAreaShadowPtr, RegSaveAreaOriginPtr) =
@@ -5855,7 +5834,7 @@ struct VarArgSystemZHelper : public VarArgHelperBase {
5855
5834
Type *T = A->getType ();
5856
5835
ArgKind AK = classifyArgument (T);
5857
5836
if (AK == ArgKind::Indirect) {
5858
- T = PointerType::get (T, 0 ) ;
5837
+ T = MS. PtrTy ;
5859
5838
AK = ArgKind::GeneralPurpose;
5860
5839
}
5861
5840
if (AK == ArgKind::GeneralPurpose && GpOffset >= SystemZGpEndOffset)
@@ -5948,8 +5927,7 @@ struct VarArgSystemZHelper : public VarArgHelperBase {
5948
5927
if (SE != ShadowExtension::None)
5949
5928
Shadow = MSV.CreateShadowCast (IRB, Shadow, IRB.getInt64Ty (),
5950
5929
/* Signed*/ SE == ShadowExtension::Sign);
5951
- ShadowBase = IRB.CreateIntToPtr (
5952
- ShadowBase, PointerType::get (Shadow->getType (), 0 ), " _msarg_va_s" );
5930
+ ShadowBase = IRB.CreateIntToPtr (ShadowBase, MS.PtrTy , " _msarg_va_s" );
5953
5931
IRB.CreateStore (Shadow, ShadowBase);
5954
5932
if (MS.TrackOrigins ) {
5955
5933
Value *Origin = MSV.getOrigin (A);
@@ -5964,13 +5942,12 @@ struct VarArgSystemZHelper : public VarArgHelperBase {
5964
5942
}
5965
5943
5966
5944
void copyRegSaveArea (IRBuilder<> &IRB, Value *VAListTag) {
5967
- Type *RegSaveAreaPtrTy = PointerType::getUnqual (*MS.C ); // i64*
5968
5945
Value *RegSaveAreaPtrPtr = IRB.CreateIntToPtr (
5969
5946
IRB.CreateAdd (
5970
5947
IRB.CreatePtrToInt (VAListTag, MS.IntptrTy ),
5971
5948
ConstantInt::get (MS.IntptrTy , SystemZRegSaveAreaPtrOffset)),
5972
- PointerType::get (RegSaveAreaPtrTy, 0 ) );
5973
- Value *RegSaveAreaPtr = IRB.CreateLoad (RegSaveAreaPtrTy , RegSaveAreaPtrPtr);
5949
+ MS. PtrTy );
5950
+ Value *RegSaveAreaPtr = IRB.CreateLoad (MS. PtrTy , RegSaveAreaPtrPtr);
5974
5951
Value *RegSaveAreaShadowPtr, *RegSaveAreaOriginPtr;
5975
5952
const Align Alignment = Align (8 );
5976
5953
std::tie (RegSaveAreaShadowPtr, RegSaveAreaOriginPtr) =
@@ -5991,14 +5968,12 @@ struct VarArgSystemZHelper : public VarArgHelperBase {
5991
5968
// FIXME: This implementation limits OverflowOffset to kParamTLSSize, so we
5992
5969
// don't know real overflow size and can't clear shadow beyond kParamTLSSize.
5993
5970
void copyOverflowArea (IRBuilder<> &IRB, Value *VAListTag) {
5994
- Type *OverflowArgAreaPtrTy = PointerType::getUnqual (*MS.C ); // i64*
5995
5971
Value *OverflowArgAreaPtrPtr = IRB.CreateIntToPtr (
5996
5972
IRB.CreateAdd (
5997
5973
IRB.CreatePtrToInt (VAListTag, MS.IntptrTy ),
5998
5974
ConstantInt::get (MS.IntptrTy , SystemZOverflowArgAreaPtrOffset)),
5999
- PointerType::get (OverflowArgAreaPtrTy, 0 ));
6000
- Value *OverflowArgAreaPtr =
6001
- IRB.CreateLoad (OverflowArgAreaPtrTy, OverflowArgAreaPtrPtr);
5975
+ MS.PtrTy );
5976
+ Value *OverflowArgAreaPtr = IRB.CreateLoad (MS.PtrTy , OverflowArgAreaPtrPtr);
6002
5977
Value *OverflowArgAreaShadowPtr, *OverflowArgAreaOriginPtr;
6003
5978
const Align Alignment = Align (8 );
6004
5979
std::tie (OverflowArgAreaShadowPtr, OverflowArgAreaOriginPtr) =
0 commit comments