@@ -1889,33 +1889,20 @@ Value *SPIRVToLLVM::transValueWithoutDecoration(SPIRVValue *BV, Function *F,
1889
1889
MaybeAlign Align (BC->getAlignment ());
1890
1890
MaybeAlign SrcAlign =
1891
1891
BC->getSrcAlignment () ? MaybeAlign (BC->getSrcAlignment ()) : Align;
1892
- Type *EltTy =
1893
- transType (BC->getSource ()->getType ()->getPointerElementType ());
1894
- uint64_t Size = M->getDataLayout ().getTypeStoreSize (EltTy).getFixedValue ();
1892
+ llvm::Value *Size = transValue (BC->getSize (), F, BB);
1895
1893
bool IsVolatile = BC->SPIRVMemoryAccess ::isVolatile ();
1896
1894
IRBuilder<> Builder (BB);
1897
1895
1898
- llvm::Value *Src = transValue (BC->getSource (), F, BB);
1899
- CallInst *CI =
1900
- Builder.CreateMemCpy (Dst, Align, Src, SrcAlign, Size , IsVolatile);
1901
- if (isFuncNoUnwind ())
1902
- CI->getFunction ()->addFnAttr (Attribute::NoUnwind);
1903
- return mapValue (BV, CI);
1904
- }
1896
+ // A ptr.annotation may have been generated for the destination variable.
1897
+ replaceOperandWithAnnotationIntrinsicCallResult (F, Dst);
1905
1898
1906
- case OpCopyMemorySized: {
1907
- SPIRVCopyMemorySized *BC = static_cast <SPIRVCopyMemorySized *>(BV);
1908
- llvm::Value *Dst = transValue (BC->getTarget (), F, BB);
1909
- MaybeAlign Align (BC->getAlignment ());
1910
- MaybeAlign SrcAlign =
1911
- BC->getSrcAlignment () ? MaybeAlign (BC->getSrcAlignment ()) : Align;
1912
- llvm::Value *Size = transValue (BC->getSize (), F, BB);
1913
- bool IsVolatile = BC->SPIRVMemoryAccess ::isVolatile ();
1914
- IRBuilder<> Builder (BB);
1899
+ if (!CI) {
1900
+ llvm::Value *Src = transValue (BC->getSource (), F, BB);
1915
1901
1916
- llvm::Value *Src = transValue (BC->getSource (), F, BB);
1917
- CallInst *CI =
1918
- Builder.CreateMemCpy (Dst, Align, Src, SrcAlign, Size , IsVolatile);
1902
+ // A ptr.annotation may have been generated for the source variable.
1903
+ replaceOperandWithAnnotationIntrinsicCallResult (F, Src);
1904
+ CI = Builder.CreateMemCpy (Dst, Align, Src, SrcAlign, Size , IsVolatile);
1905
+ }
1919
1906
if (isFuncNoUnwind ())
1920
1907
CI->getFunction ()->addFnAttr (Attribute::NoUnwind);
1921
1908
return mapValue (BV, CI);
0 commit comments