Skip to content

Commit ba3339a

Browse files
committed
Guard 4 typed pointer removal commits within INTEL_SYCL_OPAQUEPOINTER_READY
Revert"[llvm] Drop some typed pointer handling/bitcasts" This reverts commit 4ce7c4a. Conflicts: llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp llvm/lib/Transforms/Coroutines/CoroSplit.cpp llvm/lib/Transforms/Scalar/LICM.cpp llvm/lib/Transforms/Scalar/SROA.cpp Revert "[SCEVExpander] Remove GEP add rec splitting code (NFCI)" This reverts commit b752542. Revert "[Transforms] Remove FactorOutConstant to fix -Wunneeded-internal-declaration (NFC)" This reverts commit 67f1e8d. Revert "[SCEVExpander] Remove typed pointer support (NFC)" This reverts commit 02ba405.
1 parent 685edda commit ba3339a

19 files changed

+883
-7
lines changed

llvm/include/llvm/Transforms/Utils/BuildLibCalls.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,11 @@ namespace llvm {
8080
LibFunc DoubleFn, LibFunc FloatFn, LibFunc LongDoubleFn,
8181
LibFunc &TheLibFunc);
8282

83+
#ifndef INTEL_SYCL_OPAQUEPOINTER_READY
84+
/// Return V if it is an i8*, otherwise cast it to i8*.
85+
Value *castToCStr(Value *V, IRBuilderBase &B);
86+
87+
#endif //INTEL_SYCL_OPAQUEPOINTER_READY
8388
/// Emit a call to the strlen function to the builder, for the specified
8489
/// pointer. Ptr is required to be some pointer type, and the return value has
8590
/// 'size_t' type.

llvm/include/llvm/Transforms/Utils/ScalarEvolutionExpander.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -440,7 +440,13 @@ class SCEVExpander : public SCEVVisitor<SCEVExpander, Value *> {
440440

441441
/// Expand a SCEVAddExpr with a pointer type into a GEP instead of using
442442
/// ptrtoint+arithmetic+inttoptr.
443+
#ifdef INTEL_SYCL_OPAQUEPOINTER_READY
443444
Value *expandAddToGEP(const SCEV *Op, Type *Ty, Value *V);
445+
#else //INTEL_SYCL_OPAQUEPOINTER_READY
446+
Value *expandAddToGEP(const SCEV *const *op_begin, const SCEV *const *op_end,
447+
PointerType *PTy, Type *Ty, Value *V);
448+
Value *expandAddToGEP(const SCEV *Op, PointerType *PTy, Type *Ty, Value *V);
449+
#endif //INTEL_SYCL_OPAQUEPOINTER_READY
444450

445451
/// Find a previous Value in ExprValueMap for expand.
446452
Value *FindValueInExprValueMap(const SCEV *S, const Instruction *InsertPt);

llvm/lib/CodeGen/AtomicExpandPass.cpp

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -373,8 +373,16 @@ LoadInst *AtomicExpand::convertAtomicLoadToIntegerType(LoadInst *LI) {
373373
ReplacementIRBuilder Builder(LI, *DL);
374374

375375
Value *Addr = LI->getPointerOperand();
376+
#ifndef INTEL_SYCL_OPAQUEPOINTER_READY
377+
Type *PT = PointerType::get(NewTy, Addr->getType()->getPointerAddressSpace());
378+
Value *NewAddr = Builder.CreateBitCast(Addr, PT);
379+
#endif //INTEL_SYCL_OPAQUEPOINTER_READY
376380

381+
#ifdef INTEL_SYCL_OPAQUEPOINTER_READY
377382
auto *NewLI = Builder.CreateLoad(NewTy, Addr);
383+
#else //INTEL_SYCL_OPAQUEPOINTER_READY
384+
auto *NewLI = Builder.CreateLoad(NewTy, NewAddr);
385+
#endif //INTEL_SYCL_OPAQUEPOINTER_READY
378386
NewLI->setAlignment(LI->getAlign());
379387
NewLI->setVolatile(LI->isVolatile());
380388
NewLI->setAtomic(LI->getOrdering(), LI->getSyncScopeID());
@@ -396,12 +404,20 @@ AtomicExpand::convertAtomicXchgToIntegerType(AtomicRMWInst *RMWI) {
396404

397405
Value *Addr = RMWI->getPointerOperand();
398406
Value *Val = RMWI->getValOperand();
407+
#ifndef INTEL_SYCL_OPAQUEPOINTER_READY
408+
Type *PT = PointerType::get(NewTy, RMWI->getPointerAddressSpace());
409+
Value *NewAddr = Builder.CreateBitCast(Addr, PT);
410+
#endif //INTEL_SYCL_OPAQUEPOINTER_READY
399411
Value *NewVal = Val->getType()->isPointerTy()
400412
? Builder.CreatePtrToInt(Val, NewTy)
401413
: Builder.CreateBitCast(Val, NewTy);
402414

403415
auto *NewRMWI =
416+
#ifdef INTEL_SYCL_OPAQUEPOINTER_READY
404417
Builder.CreateAtomicRMW(AtomicRMWInst::Xchg, Addr, NewVal,
418+
#else //INTEL_SYCL_OPAQUEPOINTER_READY
419+
Builder.CreateAtomicRMW(AtomicRMWInst::Xchg, NewAddr, NewVal,
420+
#endif //INTEL_SYCL_OPAQUEPOINTER_READY
405421
RMWI->getAlign(), RMWI->getOrdering());
406422
NewRMWI->setVolatile(RMWI->isVolatile());
407423
LLVM_DEBUG(dbgs() << "Replaced " << *RMWI << " with " << *NewRMWI << "\n");
@@ -504,8 +520,16 @@ StoreInst *AtomicExpand::convertAtomicStoreToIntegerType(StoreInst *SI) {
504520
Value *NewVal = Builder.CreateBitCast(SI->getValueOperand(), NewTy);
505521

506522
Value *Addr = SI->getPointerOperand();
523+
#ifndef INTEL_SYCL_OPAQUEPOINTER_READY
524+
Type *PT = PointerType::get(NewTy, Addr->getType()->getPointerAddressSpace());
525+
Value *NewAddr = Builder.CreateBitCast(Addr, PT);
526+
#endif //INTEL_SYCL_OPAQUEPOINTER_READY
507527

528+
#ifdef INTEL_SYCL_OPAQUEPOINTER_READY
508529
StoreInst *NewSI = Builder.CreateStore(NewVal, Addr);
530+
#else //INTEL_SYCL_OPAQUEPOINTER_READY
531+
StoreInst *NewSI = Builder.CreateStore(NewVal, NewAddr);
532+
#endif //INTEL_SYCL_OPAQUEPOINTER_READY
509533
NewSI->setAlignment(SI->getAlign());
510534
NewSI->setVolatile(SI->isVolatile());
511535
NewSI->setAtomic(SI->getOrdering(), SI->getSyncScopeID());
@@ -1182,12 +1206,20 @@ AtomicExpand::convertCmpXchgToIntegerType(AtomicCmpXchgInst *CI) {
11821206
ReplacementIRBuilder Builder(CI, *DL);
11831207

11841208
Value *Addr = CI->getPointerOperand();
1209+
#ifndef INTEL_SYCL_OPAQUEPOINTER_READY
1210+
Type *PT = PointerType::get(NewTy, Addr->getType()->getPointerAddressSpace());
1211+
Value *NewAddr = Builder.CreateBitCast(Addr, PT);
1212+
#endif //INTEL_SYCL_OPAQUEPOINTER_READY
11851213

11861214
Value *NewCmp = Builder.CreatePtrToInt(CI->getCompareOperand(), NewTy);
11871215
Value *NewNewVal = Builder.CreatePtrToInt(CI->getNewValOperand(), NewTy);
11881216

11891217
auto *NewCI = Builder.CreateAtomicCmpXchg(
1218+
#ifdef INTEL_SYCL_OPAQUEPOINTER_READY
11901219
Addr, NewCmp, NewNewVal, CI->getAlign(), CI->getSuccessOrdering(),
1220+
#else //INTEL_SYCL_OPAQUEPOINTER_READY
1221+
NewAddr, NewCmp, NewNewVal, CI->getAlign(), CI->getSuccessOrdering(),
1222+
#endif //INTEL_SYCL_OPAQUEPOINTER_READY
11911223
CI->getFailureOrdering(), CI->getSyncScopeID());
11921224
NewCI->setVolatile(CI->isVolatile());
11931225
NewCI->setWeak(CI->isWeak());

llvm/lib/CodeGen/CodeGenPrepare.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5493,7 +5493,11 @@ bool CodeGenPrepare::optimizeMemoryInst(Instruction *MemoryInst, Value *Addr,
54935493
return Modified;
54945494
} else {
54955495
Type *I8PtrTy =
5496+
#ifdef INTEL_SYCL_OPAQUEPOINTER_READY
54965497
Builder.getPtrTy(Addr->getType()->getPointerAddressSpace());
5498+
#else //INTEL_SYCL_OPAQUEPOINTER_READY
5499+
Builder.getInt8PtrTy(Addr->getType()->getPointerAddressSpace());
5500+
#endif //INTEL_SYCL_OPAQUEPOINTER_READY
54975501
Type *I8Ty = Builder.getInt8Ty();
54985502

54995503
// Start with the base register. Do this first so that subsequent address
@@ -6130,7 +6134,11 @@ bool CodeGenPrepare::splitLargeGEPOffsets() {
61306134
LLVMContext &Ctx = GEP->getContext();
61316135
Type *PtrIdxTy = DL->getIndexType(GEP->getType());
61326136
Type *I8PtrTy =
6137+
#ifdef INTEL_SYCL_OPAQUEPOINTER_READY
61336138
PointerType::get(Ctx, GEP->getType()->getPointerAddressSpace());
6139+
#else //INTEL_SYCL_OPAQUEPOINTER_READY
6140+
Type::getInt8PtrTy(Ctx, GEP->getType()->getPointerAddressSpace());
6141+
#endif //INTEL_SYCL_OPAQUEPOINTER_READY
61346142
Type *I8Ty = Type::getInt8Ty(Ctx);
61356143

61366144
if (!NewBaseGEP) {

llvm/lib/CodeGen/LowerEmuTLS.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,11 @@ bool LowerEmuTLS::runOnModule(Module &M) {
8585

8686
bool LowerEmuTLS::addEmuTlsVar(Module &M, const GlobalVariable *GV) {
8787
LLVMContext &C = M.getContext();
88+
#ifdef INTEL_SYCL_OPAQUEPOINTER_READY
8889
PointerType *VoidPtrType = PointerType::getUnqual(C);
90+
#else //INTEL_SYCL_OPAQUEPOINTER_READY
91+
PointerType *VoidPtrType = Type::getInt8PtrTy(C);
92+
#endif //INTEL_SYCL_OPAQUEPOINTER_READY
8993

9094
std::string EmuTlsVarName = ("__emutls_v." + GV->getName()).str();
9195
GlobalVariable *EmuTlsVar = M.getNamedGlobal(EmuTlsVarName);
@@ -114,7 +118,12 @@ bool LowerEmuTLS::addEmuTlsVar(Module &M, const GlobalVariable *GV) {
114118
// void *templ; // 0 or point to __emutls_t.*
115119
// sizeof(word) should be the same as sizeof(void*) on target.
116120
IntegerType *WordType = DL.getIntPtrType(C);
121+
#ifdef INTEL_SYCL_OPAQUEPOINTER_READY
117122
PointerType *InitPtrType = PointerType::getUnqual(C);
123+
#else //INTEL_SYCL_OPAQUEPOINTER_READY
124+
PointerType *InitPtrType = InitValue ?
125+
PointerType::getUnqual(InitValue->getType()) : VoidPtrType;
126+
#endif //INTEL_SYCL_OPAQUEPOINTER_READY
118127
Type *ElementTypes[4] = {WordType, WordType, VoidPtrType, InitPtrType};
119128
ArrayRef<Type*> ElementTypeArray(ElementTypes, 4);
120129
StructType *EmuTlsVarType = StructType::create(ElementTypeArray);

llvm/lib/CodeGen/PreISelIntrinsicLowering.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,9 @@ static bool lowerLoadRelative(Function &F) {
7070

7171
bool Changed = false;
7272
Type *Int32Ty = Type::getInt32Ty(F.getContext());
73+
#ifndef INTEL_SYCL_OPAQUEPOINTER_READY
74+
Type *Int32PtrTy = Int32Ty->getPointerTo();
75+
#endif //INTEL_SYCL_OPAQUEPOINTER_READY
7376
Type *Int8Ty = Type::getInt8Ty(F.getContext());
7477

7578
for (Use &U : llvm::make_early_inc_range(F.uses())) {
@@ -80,10 +83,14 @@ static bool lowerLoadRelative(Function &F) {
8083
IRBuilder<> B(CI);
8184
Value *OffsetPtr =
8285
B.CreateGEP(Int8Ty, CI->getArgOperand(0), CI->getArgOperand(1));
86+
#ifdef INTEL_SYCL_OPAQUEPOINTER_READY
8387
Value *OffsetI32 = B.CreateAlignedLoad(Int32Ty, OffsetPtr, Align(4));
88+
#else //INTEL_SYCL_OPAQUEPOINTER_READY
89+
Value *OffsetPtrI32 = B.CreateBitCast(OffsetPtr, Int32PtrTy);
90+
Value *OffsetI32 = B.CreateAlignedLoad(Int32Ty, OffsetPtrI32, Align(4));
91+
#endif //INTEL_SYCL_OPAQUEPOINTER_READY
8492

8593
Value *ResultPtr = B.CreateGEP(Int8Ty, CI->getArgOperand(0), OffsetI32);
86-
8794
CI->replaceAllUsesWith(ResultPtr);
8895
CI->eraseFromParent();
8996
Changed = true;

llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1296,8 +1296,14 @@ SDNode *SelectionDAG::FindModifiedNodeSlot(SDNode *N, ArrayRef<SDValue> Ops,
12961296
}
12971297

12981298
Align SelectionDAG::getEVTAlign(EVT VT) const {
1299+
#ifdef INTEL_SYCL_OPAQUEPOINTER_READY
12991300
Type *Ty = VT == MVT::iPTR ? PointerType::get(*getContext(), 0)
13001301
: VT.getTypeForEVT(*getContext());
1302+
#else //INTEL_SYCL_OPAQUEPOINTER_READY
1303+
Type *Ty = VT == MVT::iPTR ?
1304+
PointerType::get(Type::getInt8Ty(*getContext()), 0) :
1305+
VT.getTypeForEVT(*getContext());
1306+
#endif //INTEL_SYCL_OPAQUEPOINTER_READY
13011307

13021308
return getDataLayout().getABITypeAlign(Ty);
13031309
}
@@ -7720,7 +7726,7 @@ SDValue SelectionDAG::getMemcpy(SDValue Chain, const SDLoc &dl, SDValue Dst,
77207726
Entry.Ty = PointerType::getUnqual(*getContext());
77217727
#else // INTEL_SYCL_OPAQUEPOINTER_READY
77227728
Entry.Ty = Type::getInt8PtrTy(*getContext());
7723-
#endif // INTEL_SYCL_OPAQUEPOINTER_READY
7729+
#endif //INTEL_SYCL_OPAQUEPOINTER_READY
77247730
Entry.Node = Dst; Args.push_back(Entry);
77257731
Entry.Node = Src; Args.push_back(Entry);
77267732

@@ -7822,7 +7828,11 @@ SDValue SelectionDAG::getMemmove(SDValue Chain, const SDLoc &dl, SDValue Dst,
78227828
// Emit a library call.
78237829
TargetLowering::ArgListTy Args;
78247830
TargetLowering::ArgListEntry Entry;
7831+
#ifdef INTEL_SYCL_OPAQUEPOINTER_READY
78257832
Entry.Ty = PointerType::getUnqual(*getContext());
7833+
#else //INTEL_SYCL_OPAQUEPOINTER_READY
7834+
Entry.Ty = Type::getInt8PtrTy(*getContext());
7835+
#endif //INTEL_SYCL_OPAQUEPOINTER_READY
78267836
Entry.Node = Dst; Args.push_back(Entry);
78277837
Entry.Node = Src; Args.push_back(Entry);
78287838

@@ -7951,14 +7961,22 @@ SDValue SelectionDAG::getMemset(SDValue Chain, const SDLoc &dl, SDValue Dst,
79517961
// If zeroing out and bzero is present, use it.
79527962
if (SrcIsZero && BzeroName) {
79537963
TargetLowering::ArgListTy Args;
7964+
#ifdef INTEL_SYCL_OPAQUEPOINTER_READY
79547965
Args.push_back(CreateEntry(Dst, PointerType::getUnqual(Ctx)));
7966+
#else //INTEL_SYCL_OPAQUEPOINTER_READY
7967+
Args.push_back(CreateEntry(Dst, Type::getInt8PtrTy(Ctx)));
7968+
#endif //INTEL_SYCL_OPAQUEPOINTER_READY
79557969
Args.push_back(CreateEntry(Size, DL.getIntPtrType(Ctx)));
79567970
CLI.setLibCallee(
79577971
TLI->getLibcallCallingConv(RTLIB::BZERO), Type::getVoidTy(Ctx),
79587972
getExternalSymbol(BzeroName, TLI->getPointerTy(DL)), std::move(Args));
79597973
} else {
79607974
TargetLowering::ArgListTy Args;
7975+
#ifdef INTEL_SYCL_OPAQUEPOINTER_READY
79617976
Args.push_back(CreateEntry(Dst, PointerType::getUnqual(Ctx)));
7977+
#else //INTEL_SYCL_OPAQUEPOINTER_READY
7978+
Args.push_back(CreateEntry(Dst, Type::getInt8PtrTy(Ctx)));
7979+
#endif //INTEL_SYCL_OPAQUEPOINTER_READY
79627980
Args.push_back(CreateEntry(Src, Src.getValueType().getTypeForEVT(Ctx)));
79637981
Args.push_back(CreateEntry(Size, DL.getIntPtrType(Ctx)));
79647982
CLI.setLibCallee(TLI->getLibcallCallingConv(RTLIB::MEMSET),

llvm/lib/Target/Hexagon/HexagonISelLowering.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3847,6 +3847,13 @@ Value *HexagonTargetLowering::emitLoadLinked(IRBuilderBase &Builder,
38473847
: Intrinsic::hexagon_L4_loadd_locked;
38483848
Function *Fn = Intrinsic::getDeclaration(M, IntID);
38493849

3850+
#ifndef INTEL_SYCL_OPAQUEPOINTER_READY
3851+
auto PtrTy = cast<PointerType>(Addr->getType());
3852+
PointerType *NewPtrTy =
3853+
Builder.getIntNTy(SZ)->getPointerTo(PtrTy->getAddressSpace());
3854+
Addr = Builder.CreateBitCast(Addr, NewPtrTy);
3855+
3856+
#endif //INTEL_SYCL_OPAQUEPOINTER_READY
38503857
Value *Call = Builder.CreateCall(Fn, Addr, "larx");
38513858

38523859
return Builder.CreateBitCast(Call, ValueTy);
@@ -3868,6 +3875,10 @@ Value *HexagonTargetLowering::emitStoreConditional(IRBuilderBase &Builder,
38683875
: Intrinsic::hexagon_S4_stored_locked;
38693876
Function *Fn = Intrinsic::getDeclaration(M, IntID);
38703877

3878+
#ifndef INTEL_SYCL_OPAQUEPOINTER_READY
3879+
unsigned AS = Addr->getType()->getPointerAddressSpace();
3880+
Addr = Builder.CreateBitCast(Addr, CastTy->getPointerTo(AS));
3881+
#endif //INTEL_SYCL_OPAQUEPOINTER_READY
38713882
Val = Builder.CreateBitCast(Val, CastTy);
38723883

38733884
Value *Call = Builder.CreateCall(Fn, {Addr, Val}, "stcx");

llvm/lib/Target/RISCV/RISCVISelLowering.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17529,8 +17529,15 @@ static Value *useTpOffset(IRBuilderBase &IRB, unsigned Offset) {
1752917529
Module *M = IRB.GetInsertBlock()->getParent()->getParent();
1753017530
Function *ThreadPointerFunc =
1753117531
Intrinsic::getDeclaration(M, Intrinsic::thread_pointer);
17532+
#ifdef INTEL_SYCL_OPAQUEPOINTER_READY
1753217533
return IRB.CreateConstGEP1_32(IRB.getInt8Ty(),
1753317534
IRB.CreateCall(ThreadPointerFunc), Offset);
17535+
#else //INTEL_SYCL_OPAQUEPOINTER_READY
17536+
return IRB.CreatePointerCast(
17537+
IRB.CreateConstGEP1_32(IRB.getInt8Ty(),
17538+
IRB.CreateCall(ThreadPointerFunc), Offset),
17539+
IRB.getInt8PtrTy()->getPointerTo(0));
17540+
#endif //INTEL_SYCL_OPAQUEPOINTER_READY
1753417541
}
1753517542

1753617543
Value *RISCVTargetLowering::getIRStackGuard(IRBuilderBase &IRB) const {

llvm/lib/Target/X86/X86ISelLoweringCall.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -561,7 +561,11 @@ static Constant* SegmentOffset(IRBuilderBase &IRB,
561561
int Offset, unsigned AddressSpace) {
562562
return ConstantExpr::getIntToPtr(
563563
ConstantInt::get(Type::getInt32Ty(IRB.getContext()), Offset),
564+
#ifdef INTEL_SYCL_OPAQUEPOINTER_READY
564565
IRB.getPtrTy(AddressSpace));
566+
#else //INTEL_SYCL_OPAQUEPOINTER_READY
567+
Type::getInt8PtrTy(IRB.getContext())->getPointerTo(AddressSpace));
568+
#endif //INTEL_SYCL_OPAQUEPOINTER_READY
565569
}
566570

567571
Value *X86TargetLowering::getIRStackGuard(IRBuilderBase &IRB) const {

llvm/lib/Transforms/IPO/WholeProgramDevirt.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1441,7 +1441,11 @@ void DevirtModule::applyICallBranchFunnel(VTableSlotInfo &SlotInfo,
14411441

14421442
IRBuilder<> IRB(&CB);
14431443
std::vector<Value *> Args;
1444+
#ifdef INTEL_SYCL_OPAQUEPOINTER_READY
14441445
Args.push_back(VCallSite.VTable);
1446+
#else //INTEL_SYCL_OPAQUEPOINTER_READY
1447+
Args.push_back(IRB.CreateBitCast(VCallSite.VTable, Int8PtrTy));
1448+
#endif //INTEL_SYCL_OPAQUEPOINTER_READY
14451449
llvm::append_range(Args, CB.args());
14461450

14471451
CallBase *NewCS = nullptr;
@@ -1712,7 +1716,12 @@ void DevirtModule::applyVirtualConstProp(CallSiteInfo &CSInfo, StringRef FnName,
17121716
continue;
17131717
auto *RetType = cast<IntegerType>(Call.CB.getType());
17141718
IRBuilder<> B(&Call.CB);
1719+
#ifdef INTEL_SYCL_OPAQUEPOINTER_READY
17151720
Value *Addr = B.CreateGEP(Int8Ty, Call.VTable, Byte);
1721+
#else //INTEL_SYCL_OPAQUEPOINTER_READY
1722+
Value *Addr =
1723+
B.CreateGEP(Int8Ty, B.CreateBitCast(Call.VTable, Int8PtrTy), Byte);
1724+
#endif //INTEL_SYCL_OPAQUEPOINTER_READY
17161725
if (RetType->getBitWidth() == 1) {
17171726
Value *Bits = B.CreateLoad(Int8Ty, Addr);
17181727
Value *BitsAndBit = B.CreateAnd(Bits, Bit);
@@ -2010,14 +2019,25 @@ void DevirtModule::scanTypeCheckedLoadUsers(Function *TypeCheckedLoadFunc) {
20102019
if (TypeCheckedLoadFunc->getIntrinsicID() ==
20112020
Intrinsic::type_checked_load_relative) {
20122021
Value *GEP = LoadB.CreateGEP(Int8Ty, Ptr, Offset);
2022+
#ifdef INTEL_SYCL_OPAQUEPOINTER_READY
20132023
LoadedValue = LoadB.CreateLoad(Int32Ty, GEP);
2024+
#else //INTEL_SYCL_OPAQUEPOINTER_READY
2025+
Value *GEPPtr = LoadB.CreateBitCast(GEP, PointerType::getUnqual(Int32Ty));
2026+
LoadedValue = LoadB.CreateLoad(Int32Ty, GEPPtr);
2027+
#endif //INTEL_SYCL_OPAQUEPOINTER_READY
20142028
LoadedValue = LoadB.CreateSExt(LoadedValue, IntPtrTy);
20152029
GEP = LoadB.CreatePtrToInt(GEP, IntPtrTy);
20162030
LoadedValue = LoadB.CreateAdd(GEP, LoadedValue);
20172031
LoadedValue = LoadB.CreateIntToPtr(LoadedValue, Int8PtrTy);
20182032
} else {
20192033
Value *GEP = LoadB.CreateGEP(Int8Ty, Ptr, Offset);
2034+
#ifdef INTEL_SYCL_OPAQUEPOINTER_READY
20202035
LoadedValue = LoadB.CreateLoad(Int8PtrTy, GEP);
2036+
#else //INTEL_SYCL_OPAQUEPOINTER_READY
2037+
Value *GEPPtr =
2038+
LoadB.CreateBitCast(GEP, PointerType::getUnqual(Int8PtrTy));
2039+
LoadedValue = LoadB.CreateLoad(Int8PtrTy, GEPPtr);
2040+
#endif //INTEL_SYCL_OPAQUEPOINTER_READY
20212041
}
20222042

20232043
for (Instruction *LoadedPtr : LoadedPtrs) {

llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1051,8 +1051,13 @@ FunctionCallee GCOVProfiler::getEmitFunctionFunc(const TargetLibraryInfo *TLI) {
10511051

10521052
FunctionCallee GCOVProfiler::getEmitArcsFunc(const TargetLibraryInfo *TLI) {
10531053
Type *Args[] = {
1054+
#ifdef INTEL_SYCL_OPAQUEPOINTER_READY
10541055
Type::getInt32Ty(*Ctx), // uint32_t num_counters
10551056
PointerType::getUnqual(*Ctx), // uint64_t *counters
1057+
#else //INTEL_SYCL_OPAQUEPOINTER_READY
1058+
Type::getInt32Ty(*Ctx), // uint32_t num_counters
1059+
Type::getInt64PtrTy(*Ctx), // uint64_t *counters
1060+
#endif //INTEL_SYCL_OPAQUEPOINTER_READY
10561061
};
10571062
FunctionType *FTy = FunctionType::get(Type::getVoidTy(*Ctx), Args, false);
10581063
return M->getOrInsertFunction("llvm_gcda_emit_arcs", FTy,

0 commit comments

Comments
 (0)