@@ -1456,62 +1456,63 @@ static Value *emitLibCall(LibFunc TheLibFunc, Type *ReturnType,
1456
1456
1457
1457
Value *llvm::emitStrLen (Value *Ptr, IRBuilderBase &B, const DataLayout &DL,
1458
1458
const TargetLibraryInfo *TLI) {
1459
+ Type *CharPtrTy = B.getPtrTy ();
1459
1460
Type *SizeTTy = getSizeTTy (B, TLI);
1460
- return emitLibCall (LibFunc_strlen, SizeTTy,
1461
- B.getInt8PtrTy (), Ptr, B, TLI);
1461
+ return emitLibCall (LibFunc_strlen, SizeTTy, CharPtrTy, Ptr, B, TLI);
1462
1462
}
1463
1463
1464
1464
Value *llvm::emitStrDup (Value *Ptr, IRBuilderBase &B,
1465
1465
const TargetLibraryInfo *TLI) {
1466
- return emitLibCall (LibFunc_strdup, B. getInt8PtrTy (), B.getInt8PtrTy (),
1467
- Ptr, B, TLI);
1466
+ Type *CharPtrTy = B.getPtrTy ();
1467
+ return emitLibCall (LibFunc_strdup, CharPtrTy, CharPtrTy, Ptr, B, TLI);
1468
1468
}
1469
1469
1470
1470
Value *llvm::emitStrChr (Value *Ptr, char C, IRBuilderBase &B,
1471
1471
const TargetLibraryInfo *TLI) {
1472
- Type *I8Ptr = B.getInt8PtrTy ();
1472
+ Type *CharPtrTy = B.getPtrTy ();
1473
1473
Type *IntTy = getIntTy (B, TLI);
1474
- return emitLibCall (LibFunc_strchr, I8Ptr , {I8Ptr , IntTy},
1474
+ return emitLibCall (LibFunc_strchr, CharPtrTy , {CharPtrTy , IntTy},
1475
1475
{Ptr, ConstantInt::get (IntTy, C)}, B, TLI);
1476
1476
}
1477
1477
1478
1478
Value *llvm::emitStrNCmp (Value *Ptr1, Value *Ptr2, Value *Len, IRBuilderBase &B,
1479
1479
const DataLayout &DL, const TargetLibraryInfo *TLI) {
1480
+ Type *CharPtrTy = B.getPtrTy ();
1480
1481
Type *IntTy = getIntTy (B, TLI);
1481
1482
Type *SizeTTy = getSizeTTy (B, TLI);
1482
1483
return emitLibCall (
1483
1484
LibFunc_strncmp, IntTy,
1484
- {B. getInt8PtrTy (), B. getInt8PtrTy () , SizeTTy},
1485
+ {CharPtrTy, CharPtrTy , SizeTTy},
1485
1486
{Ptr1, Ptr2, Len}, B, TLI);
1486
1487
}
1487
1488
1488
1489
Value *llvm::emitStrCpy (Value *Dst, Value *Src, IRBuilderBase &B,
1489
1490
const TargetLibraryInfo *TLI) {
1490
- Type *I8Ptr = Dst->getType ();
1491
- return emitLibCall (LibFunc_strcpy, I8Ptr , {I8Ptr, I8Ptr },
1491
+ Type *CharPtrTy = Dst->getType ();
1492
+ return emitLibCall (LibFunc_strcpy, CharPtrTy , {CharPtrTy, CharPtrTy },
1492
1493
{Dst, Src}, B, TLI);
1493
1494
}
1494
1495
1495
1496
Value *llvm::emitStpCpy (Value *Dst, Value *Src, IRBuilderBase &B,
1496
1497
const TargetLibraryInfo *TLI) {
1497
- Type *I8Ptr = B.getInt8PtrTy ();
1498
- return emitLibCall (LibFunc_stpcpy, I8Ptr , {I8Ptr, I8Ptr },
1498
+ Type *CharPtrTy = B.getPtrTy ();
1499
+ return emitLibCall (LibFunc_stpcpy, CharPtrTy , {CharPtrTy, CharPtrTy },
1499
1500
{Dst, Src}, B, TLI);
1500
1501
}
1501
1502
1502
1503
Value *llvm::emitStrNCpy (Value *Dst, Value *Src, Value *Len, IRBuilderBase &B,
1503
1504
const TargetLibraryInfo *TLI) {
1504
- Type *I8Ptr = B.getInt8PtrTy ();
1505
+ Type *CharPtrTy = B.getPtrTy ();
1505
1506
Type *SizeTTy = getSizeTTy (B, TLI);
1506
- return emitLibCall (LibFunc_strncpy, I8Ptr , {I8Ptr, I8Ptr , SizeTTy},
1507
+ return emitLibCall (LibFunc_strncpy, CharPtrTy , {CharPtrTy, CharPtrTy , SizeTTy},
1507
1508
{Dst, Src, Len}, B, TLI);
1508
1509
}
1509
1510
1510
1511
Value *llvm::emitStpNCpy (Value *Dst, Value *Src, Value *Len, IRBuilderBase &B,
1511
1512
const TargetLibraryInfo *TLI) {
1512
- Type *I8Ptr = B.getInt8PtrTy ();
1513
+ Type *CharPtrTy = B.getPtrTy ();
1513
1514
Type *SizeTTy = getSizeTTy (B, TLI);
1514
- return emitLibCall (LibFunc_stpncpy, I8Ptr , {I8Ptr, I8Ptr , SizeTTy},
1515
+ return emitLibCall (LibFunc_stpncpy, CharPtrTy , {CharPtrTy, CharPtrTy , SizeTTy},
1515
1516
{Dst, Src, Len}, B, TLI);
1516
1517
}
1517
1518
@@ -1525,11 +1526,11 @@ Value *llvm::emitMemCpyChk(Value *Dst, Value *Src, Value *Len, Value *ObjSize,
1525
1526
AttributeList AS;
1526
1527
AS = AttributeList::get (M->getContext (), AttributeList::FunctionIndex,
1527
1528
Attribute::NoUnwind);
1528
- Type *I8Ptr = B.getInt8PtrTy ();
1529
+ Type *VoidPtrTy = B.getPtrTy ();
1529
1530
Type *SizeTTy = getSizeTTy (B, TLI);
1530
1531
FunctionCallee MemCpy = getOrInsertLibFunc (M, *TLI, LibFunc_memcpy_chk,
1531
- AttributeList::get (M->getContext (), AS), I8Ptr ,
1532
- I8Ptr, I8Ptr , SizeTTy, SizeTTy);
1532
+ AttributeList::get (M->getContext (), AS), VoidPtrTy ,
1533
+ VoidPtrTy, VoidPtrTy , SizeTTy, SizeTTy);
1533
1534
CallInst *CI = B.CreateCall (MemCpy, {Dst, Src, Len, ObjSize});
1534
1535
if (const Function *F =
1535
1536
dyn_cast<Function>(MemCpy.getCallee ()->stripPointerCasts ()))
@@ -1539,139 +1540,140 @@ Value *llvm::emitMemCpyChk(Value *Dst, Value *Src, Value *Len, Value *ObjSize,
1539
1540
1540
1541
Value *llvm::emitMemPCpy (Value *Dst, Value *Src, Value *Len, IRBuilderBase &B,
1541
1542
const DataLayout &DL, const TargetLibraryInfo *TLI) {
1542
- Type *I8Ptr = B.getInt8PtrTy ();
1543
+ Type *VoidPtrTy = B.getPtrTy ();
1543
1544
Type *SizeTTy = getSizeTTy (B, TLI);
1544
- return emitLibCall (LibFunc_mempcpy, I8Ptr ,
1545
- {I8Ptr, I8Ptr , SizeTTy},
1545
+ return emitLibCall (LibFunc_mempcpy, VoidPtrTy ,
1546
+ {VoidPtrTy, VoidPtrTy , SizeTTy},
1546
1547
{Dst, Src, Len}, B, TLI);
1547
1548
}
1548
1549
1549
1550
Value *llvm::emitMemChr (Value *Ptr, Value *Val, Value *Len, IRBuilderBase &B,
1550
1551
const DataLayout &DL, const TargetLibraryInfo *TLI) {
1551
- Type *I8Ptr = B.getInt8PtrTy ();
1552
+ Type *VoidPtrTy = B.getPtrTy ();
1552
1553
Type *IntTy = getIntTy (B, TLI);
1553
1554
Type *SizeTTy = getSizeTTy (B, TLI);
1554
- return emitLibCall (LibFunc_memchr, I8Ptr ,
1555
- {I8Ptr , IntTy, SizeTTy},
1555
+ return emitLibCall (LibFunc_memchr, VoidPtrTy ,
1556
+ {VoidPtrTy , IntTy, SizeTTy},
1556
1557
{Ptr, Val, Len}, B, TLI);
1557
1558
}
1558
1559
1559
1560
Value *llvm::emitMemRChr (Value *Ptr, Value *Val, Value *Len, IRBuilderBase &B,
1560
1561
const DataLayout &DL, const TargetLibraryInfo *TLI) {
1561
- Type *I8Ptr = B.getInt8PtrTy ();
1562
+ Type *VoidPtrTy = B.getPtrTy ();
1562
1563
Type *IntTy = getIntTy (B, TLI);
1563
1564
Type *SizeTTy = getSizeTTy (B, TLI);
1564
- return emitLibCall (LibFunc_memrchr, I8Ptr ,
1565
- {I8Ptr , IntTy, SizeTTy},
1565
+ return emitLibCall (LibFunc_memrchr, VoidPtrTy ,
1566
+ {VoidPtrTy , IntTy, SizeTTy},
1566
1567
{Ptr, Val, Len}, B, TLI);
1567
1568
}
1568
1569
1569
1570
Value *llvm::emitMemCmp (Value *Ptr1, Value *Ptr2, Value *Len, IRBuilderBase &B,
1570
1571
const DataLayout &DL, const TargetLibraryInfo *TLI) {
1571
- Type *I8Ptr = B.getInt8PtrTy ();
1572
+ Type *VoidPtrTy = B.getPtrTy ();
1572
1573
Type *IntTy = getIntTy (B, TLI);
1573
1574
Type *SizeTTy = getSizeTTy (B, TLI);
1574
1575
return emitLibCall (LibFunc_memcmp, IntTy,
1575
- {I8Ptr, I8Ptr , SizeTTy},
1576
+ {VoidPtrTy, VoidPtrTy , SizeTTy},
1576
1577
{Ptr1, Ptr2, Len}, B, TLI);
1577
1578
}
1578
1579
1579
1580
Value *llvm::emitBCmp (Value *Ptr1, Value *Ptr2, Value *Len, IRBuilderBase &B,
1580
1581
const DataLayout &DL, const TargetLibraryInfo *TLI) {
1581
- Type *I8Ptr = B.getInt8PtrTy ();
1582
+ Type *VoidPtrTy = B.getPtrTy ();
1582
1583
Type *IntTy = getIntTy (B, TLI);
1583
1584
Type *SizeTTy = getSizeTTy (B, TLI);
1584
1585
return emitLibCall (LibFunc_bcmp, IntTy,
1585
- {I8Ptr, I8Ptr , SizeTTy},
1586
+ {VoidPtrTy, VoidPtrTy , SizeTTy},
1586
1587
{Ptr1, Ptr2, Len}, B, TLI);
1587
1588
}
1588
1589
1589
1590
Value *llvm::emitMemCCpy (Value *Ptr1, Value *Ptr2, Value *Val, Value *Len,
1590
1591
IRBuilderBase &B, const TargetLibraryInfo *TLI) {
1591
- Type *I8Ptr = B.getInt8PtrTy ();
1592
+ Type *VoidPtrTy = B.getPtrTy ();
1592
1593
Type *IntTy = getIntTy (B, TLI);
1593
1594
Type *SizeTTy = getSizeTTy (B, TLI);
1594
- return emitLibCall (LibFunc_memccpy, I8Ptr ,
1595
- {I8Ptr, I8Ptr , IntTy, SizeTTy},
1595
+ return emitLibCall (LibFunc_memccpy, VoidPtrTy ,
1596
+ {VoidPtrTy, VoidPtrTy , IntTy, SizeTTy},
1596
1597
{Ptr1, Ptr2, Val, Len}, B, TLI);
1597
1598
}
1598
1599
1599
1600
Value *llvm::emitSNPrintf (Value *Dest, Value *Size, Value *Fmt,
1600
1601
ArrayRef<Value *> VariadicArgs, IRBuilderBase &B,
1601
1602
const TargetLibraryInfo *TLI) {
1602
- Type *I8Ptr = B.getInt8PtrTy ();
1603
+ Type *CharPtrTy = B.getPtrTy ();
1603
1604
Type *IntTy = getIntTy (B, TLI);
1604
1605
Type *SizeTTy = getSizeTTy (B, TLI);
1605
1606
SmallVector<Value *, 8 > Args{Dest, Size, Fmt};
1606
1607
llvm::append_range (Args, VariadicArgs);
1607
1608
return emitLibCall (LibFunc_snprintf, IntTy,
1608
- {I8Ptr , SizeTTy, I8Ptr },
1609
+ {CharPtrTy , SizeTTy, CharPtrTy },
1609
1610
Args, B, TLI, /* IsVaArgs=*/ true );
1610
1611
}
1611
1612
1612
1613
Value *llvm::emitSPrintf (Value *Dest, Value *Fmt,
1613
1614
ArrayRef<Value *> VariadicArgs, IRBuilderBase &B,
1614
1615
const TargetLibraryInfo *TLI) {
1615
- Type *I8Ptr = B.getInt8PtrTy ();
1616
+ Type *CharPtrTy = B.getPtrTy ();
1616
1617
Type *IntTy = getIntTy (B, TLI);
1617
1618
SmallVector<Value *, 8 > Args{Dest, Fmt};
1618
1619
llvm::append_range (Args, VariadicArgs);
1619
1620
return emitLibCall (LibFunc_sprintf, IntTy,
1620
- {I8Ptr, I8Ptr }, Args, B, TLI,
1621
+ {CharPtrTy, CharPtrTy }, Args, B, TLI,
1621
1622
/* IsVaArgs=*/ true );
1622
1623
}
1623
1624
1624
1625
Value *llvm::emitStrCat (Value *Dest, Value *Src, IRBuilderBase &B,
1625
1626
const TargetLibraryInfo *TLI) {
1626
- return emitLibCall (LibFunc_strcat, B.getInt8PtrTy (),
1627
- {B.getInt8PtrTy (), B.getInt8PtrTy ()},
1627
+ Type *CharPtrTy = B.getPtrTy ();
1628
+ return emitLibCall (LibFunc_strcat, CharPtrTy,
1629
+ {CharPtrTy, CharPtrTy},
1628
1630
{Dest, Src}, B, TLI);
1629
1631
}
1630
1632
1631
1633
Value *llvm::emitStrLCpy (Value *Dest, Value *Src, Value *Size, IRBuilderBase &B,
1632
1634
const TargetLibraryInfo *TLI) {
1633
- Type *I8Ptr = B.getInt8PtrTy ();
1635
+ Type *CharPtrTy = B.getPtrTy ();
1634
1636
Type *SizeTTy = getSizeTTy (B, TLI);
1635
1637
return emitLibCall (LibFunc_strlcpy, SizeTTy,
1636
- {I8Ptr, I8Ptr , SizeTTy},
1638
+ {CharPtrTy, CharPtrTy , SizeTTy},
1637
1639
{Dest, Src, Size}, B, TLI);
1638
1640
}
1639
1641
1640
1642
Value *llvm::emitStrLCat (Value *Dest, Value *Src, Value *Size, IRBuilderBase &B,
1641
1643
const TargetLibraryInfo *TLI) {
1642
- Type *I8Ptr = B.getInt8PtrTy ();
1644
+ Type *CharPtrTy = B.getPtrTy ();
1643
1645
Type *SizeTTy = getSizeTTy (B, TLI);
1644
1646
return emitLibCall (LibFunc_strlcat, SizeTTy,
1645
- {I8Ptr, I8Ptr , SizeTTy},
1647
+ {CharPtrTy, CharPtrTy , SizeTTy},
1646
1648
{Dest, Src, Size}, B, TLI);
1647
1649
}
1648
1650
1649
1651
Value *llvm::emitStrNCat (Value *Dest, Value *Src, Value *Size, IRBuilderBase &B,
1650
1652
const TargetLibraryInfo *TLI) {
1651
- Type *I8Ptr = B.getInt8PtrTy ();
1653
+ Type *CharPtrTy = B.getPtrTy ();
1652
1654
Type *SizeTTy = getSizeTTy (B, TLI);
1653
- return emitLibCall (LibFunc_strncat, I8Ptr ,
1654
- {I8Ptr, I8Ptr , SizeTTy},
1655
+ return emitLibCall (LibFunc_strncat, CharPtrTy ,
1656
+ {CharPtrTy, CharPtrTy , SizeTTy},
1655
1657
{Dest, Src, Size}, B, TLI);
1656
1658
}
1657
1659
1658
1660
Value *llvm::emitVSNPrintf (Value *Dest, Value *Size, Value *Fmt, Value *VAList,
1659
1661
IRBuilderBase &B, const TargetLibraryInfo *TLI) {
1660
- Type *I8Ptr = B.getInt8PtrTy ();
1662
+ Type *CharPtrTy = B.getPtrTy ();
1661
1663
Type *IntTy = getIntTy (B, TLI);
1662
1664
Type *SizeTTy = getSizeTTy (B, TLI);
1663
1665
return emitLibCall (
1664
1666
LibFunc_vsnprintf, IntTy,
1665
- {I8Ptr , SizeTTy, I8Ptr , VAList->getType ()},
1667
+ {CharPtrTy , SizeTTy, CharPtrTy , VAList->getType ()},
1666
1668
{Dest, Size, Fmt, VAList}, B, TLI);
1667
1669
}
1668
1670
1669
1671
Value *llvm::emitVSPrintf (Value *Dest, Value *Fmt, Value *VAList,
1670
1672
IRBuilderBase &B, const TargetLibraryInfo *TLI) {
1671
- Type *I8Ptr = B.getInt8PtrTy ();
1673
+ Type *CharPtrTy = B.getPtrTy ();
1672
1674
Type *IntTy = getIntTy (B, TLI);
1673
1675
return emitLibCall (LibFunc_vsprintf, IntTy,
1674
- {I8Ptr, I8Ptr , VAList->getType ()},
1676
+ {CharPtrTy, CharPtrTy , VAList->getType ()},
1675
1677
{Dest, Fmt, VAList}, B, TLI);
1676
1678
}
1677
1679
@@ -1822,7 +1824,7 @@ Value *llvm::emitPutS(Value *Str, IRBuilderBase &B,
1822
1824
Type *IntTy = getIntTy (B, TLI);
1823
1825
StringRef PutsName = TLI->getName (LibFunc_puts);
1824
1826
FunctionCallee PutS = getOrInsertLibFunc (M, *TLI, LibFunc_puts, IntTy,
1825
- B.getInt8PtrTy ());
1827
+ B.getPtrTy ());
1826
1828
inferNonMandatoryLibFuncAttrs (M, PutsName, *TLI);
1827
1829
CallInst *CI = B.CreateCall (PutS, Str, PutsName);
1828
1830
if (const Function *F =
@@ -1860,7 +1862,7 @@ Value *llvm::emitFPutS(Value *Str, Value *File, IRBuilderBase &B,
1860
1862
Type *IntTy = getIntTy (B, TLI);
1861
1863
StringRef FPutsName = TLI->getName (LibFunc_fputs);
1862
1864
FunctionCallee F = getOrInsertLibFunc (M, *TLI, LibFunc_fputs, IntTy,
1863
- B.getInt8PtrTy (), File->getType ());
1865
+ B.getPtrTy (), File->getType ());
1864
1866
if (File->getType ()->isPointerTy ())
1865
1867
inferNonMandatoryLibFuncAttrs (M, FPutsName, *TLI);
1866
1868
CallInst *CI = B.CreateCall (F, {Str, File}, FPutsName);
@@ -1880,7 +1882,7 @@ Value *llvm::emitFWrite(Value *Ptr, Value *Size, Value *File, IRBuilderBase &B,
1880
1882
Type *SizeTTy = getSizeTTy (B, TLI);
1881
1883
StringRef FWriteName = TLI->getName (LibFunc_fwrite);
1882
1884
FunctionCallee F = getOrInsertLibFunc (M, *TLI, LibFunc_fwrite,
1883
- SizeTTy, B.getInt8PtrTy (), SizeTTy,
1885
+ SizeTTy, B.getPtrTy (), SizeTTy,
1884
1886
SizeTTy, File->getType ());
1885
1887
1886
1888
if (File->getType ()->isPointerTy ())
@@ -1904,7 +1906,7 @@ Value *llvm::emitMalloc(Value *Num, IRBuilderBase &B, const DataLayout &DL,
1904
1906
StringRef MallocName = TLI->getName (LibFunc_malloc);
1905
1907
Type *SizeTTy = getSizeTTy (B, TLI);
1906
1908
FunctionCallee Malloc = getOrInsertLibFunc (M, *TLI, LibFunc_malloc,
1907
- B.getInt8PtrTy (), SizeTTy);
1909
+ B.getPtrTy (), SizeTTy);
1908
1910
inferNonMandatoryLibFuncAttrs (M, MallocName, *TLI);
1909
1911
CallInst *CI = B.CreateCall (Malloc, Num, MallocName);
1910
1912
@@ -1924,7 +1926,7 @@ Value *llvm::emitCalloc(Value *Num, Value *Size, IRBuilderBase &B,
1924
1926
StringRef CallocName = TLI.getName (LibFunc_calloc);
1925
1927
Type *SizeTTy = getSizeTTy (B, &TLI);
1926
1928
FunctionCallee Calloc = getOrInsertLibFunc (M, TLI, LibFunc_calloc,
1927
- B.getInt8PtrTy (), SizeTTy, SizeTTy);
1929
+ B.getPtrTy (), SizeTTy, SizeTTy);
1928
1930
inferNonMandatoryLibFuncAttrs (M, CallocName, TLI);
1929
1931
CallInst *CI = B.CreateCall (Calloc, {Num, Size}, CallocName);
1930
1932
@@ -1943,7 +1945,7 @@ Value *llvm::emitHotColdNew(Value *Num, IRBuilderBase &B,
1943
1945
return nullptr ;
1944
1946
1945
1947
StringRef Name = TLI->getName (NewFunc);
1946
- FunctionCallee Func = M->getOrInsertFunction (Name, B.getInt8PtrTy (),
1948
+ FunctionCallee Func = M->getOrInsertFunction (Name, B.getPtrTy (),
1947
1949
Num->getType (), B.getInt8Ty ());
1948
1950
inferNonMandatoryLibFuncAttrs (M, Name, *TLI);
1949
1951
CallInst *CI = B.CreateCall (Func, {Num, B.getInt8 (HotCold)}, Name);
@@ -1964,7 +1966,7 @@ Value *llvm::emitHotColdNewNoThrow(Value *Num, Value *NoThrow, IRBuilderBase &B,
1964
1966
1965
1967
StringRef Name = TLI->getName (NewFunc);
1966
1968
FunctionCallee Func =
1967
- M->getOrInsertFunction (Name, B.getInt8PtrTy (), Num->getType (),
1969
+ M->getOrInsertFunction (Name, B.getPtrTy (), Num->getType (),
1968
1970
NoThrow->getType (), B.getInt8Ty ());
1969
1971
inferNonMandatoryLibFuncAttrs (M, Name, *TLI);
1970
1972
CallInst *CI = B.CreateCall (Func, {Num, NoThrow, B.getInt8 (HotCold)}, Name);
@@ -1985,7 +1987,7 @@ Value *llvm::emitHotColdNewAligned(Value *Num, Value *Align, IRBuilderBase &B,
1985
1987
1986
1988
StringRef Name = TLI->getName (NewFunc);
1987
1989
FunctionCallee Func = M->getOrInsertFunction (
1988
- Name, B.getInt8PtrTy (), Num->getType (), Align->getType (), B.getInt8Ty ());
1990
+ Name, B.getPtrTy (), Num->getType (), Align->getType (), B.getInt8Ty ());
1989
1991
inferNonMandatoryLibFuncAttrs (M, Name, *TLI);
1990
1992
CallInst *CI = B.CreateCall (Func, {Num, Align, B.getInt8 (HotCold)}, Name);
1991
1993
@@ -2006,7 +2008,7 @@ Value *llvm::emitHotColdNewAlignedNoThrow(Value *Num, Value *Align,
2006
2008
2007
2009
StringRef Name = TLI->getName (NewFunc);
2008
2010
FunctionCallee Func = M->getOrInsertFunction (
2009
- Name, B.getInt8PtrTy (), Num->getType (), Align->getType (),
2011
+ Name, B.getPtrTy (), Num->getType (), Align->getType (),
2010
2012
NoThrow->getType (), B.getInt8Ty ());
2011
2013
inferNonMandatoryLibFuncAttrs (M, Name, *TLI);
2012
2014
CallInst *CI =
0 commit comments