2929#include "clang/Basic/TargetInfo.h"
3030#include "clang/Frontend/FrontendDiagnostic.h"
3131#include "llvm/IR/InlineAsm.h"
32+ #include "llvm/IR/Instruction.h"
3233#include "llvm/IR/Intrinsics.h"
3334#include "llvm/IR/IntrinsicsX86.h"
3435#include "llvm/IR/MatrixBuilder.h"
@@ -4190,6 +4191,7 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
41904191 Matrix, Dst.emitRawPointer(*this),
41914192 Align(Dst.getAlignment().getQuantity()), Stride, IsVolatile,
41924193 MatrixTy->getNumRows(), MatrixTy->getNumColumns());
4194+ addInstToNewSourceAtom(cast<Instruction>(Result), Matrix);
41934195 return RValue::get(Result);
41944196 }
41954197
@@ -4350,7 +4352,8 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
43504352 Value *SizeVal = EmitScalarExpr(E->getArg(1));
43514353 EmitNonNullArgCheck(Dest, E->getArg(0)->getType(),
43524354 E->getArg(0)->getExprLoc(), FD, 0);
4353- Builder.CreateMemSet(Dest, Builder.getInt8(0), SizeVal, false);
4355+ auto *I = Builder.CreateMemSet(Dest, Builder.getInt8(0), SizeVal, false);
4356+ addInstToNewSourceAtom(I, nullptr);
43544357 return RValue::get(nullptr);
43554358 }
43564359
@@ -4365,7 +4368,8 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
43654368 EmitNonNullArgCheck(RValue::get(Dest.emitRawPointer(*this)),
43664369 E->getArg(1)->getType(), E->getArg(1)->getExprLoc(), FD,
43674370 0);
4368- Builder.CreateMemMove(Dest, Src, SizeVal, false);
4371+ auto *I = Builder.CreateMemMove(Dest, Src, SizeVal, false);
4372+ addInstToNewSourceAtom(I, nullptr);
43694373 return RValue::get(nullptr);
43704374 }
43714375
@@ -4378,7 +4382,8 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
43784382 Value *SizeVal = EmitScalarExpr(E->getArg(2));
43794383 EmitArgCheck(TCK_Store, Dest, E->getArg(0), 0);
43804384 EmitArgCheck(TCK_Load, Src, E->getArg(1), 1);
4381- Builder.CreateMemCpy(Dest, Src, SizeVal, false);
4385+ auto *I = Builder.CreateMemCpy(Dest, Src, SizeVal, false);
4386+ addInstToNewSourceAtom(I, nullptr);
43824387 if (BuiltinID == Builtin::BImempcpy ||
43834388 BuiltinID == Builtin::BI__builtin_mempcpy)
43844389 return RValue::get(Builder.CreateInBoundsGEP(
@@ -4394,7 +4399,8 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
43944399 E->getArg(2)->EvaluateKnownConstInt(getContext()).getZExtValue();
43954400 EmitArgCheck(TCK_Store, Dest, E->getArg(0), 0);
43964401 EmitArgCheck(TCK_Load, Src, E->getArg(1), 1);
4397- Builder.CreateMemCpyInline(Dest, Src, Size);
4402+ auto *I = Builder.CreateMemCpyInline(Dest, Src, Size);
4403+ addInstToNewSourceAtom(I, nullptr);
43984404 return RValue::get(nullptr);
43994405 }
44004406
@@ -4415,7 +4421,8 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
44154421 Address Dest = EmitPointerWithAlignment(E->getArg(0));
44164422 Address Src = EmitPointerWithAlignment(E->getArg(1));
44174423 Value *SizeVal = llvm::ConstantInt::get(Builder.getContext(), Size);
4418- Builder.CreateMemCpy(Dest, Src, SizeVal, false);
4424+ auto *I = Builder.CreateMemCpy(Dest, Src, SizeVal, false);
4425+ addInstToNewSourceAtom(I, nullptr);
44194426 return RValue::get(Dest, *this);
44204427 }
44214428
@@ -4441,7 +4448,8 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
44414448 Address Dest = EmitPointerWithAlignment(E->getArg(0));
44424449 Address Src = EmitPointerWithAlignment(E->getArg(1));
44434450 Value *SizeVal = llvm::ConstantInt::get(Builder.getContext(), Size);
4444- Builder.CreateMemMove(Dest, Src, SizeVal, false);
4451+ auto *I = Builder.CreateMemMove(Dest, Src, SizeVal, false);
4452+ addInstToNewSourceAtom(I, nullptr);
44454453 return RValue::get(Dest, *this);
44464454 }
44474455
@@ -4461,7 +4469,8 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
44614469 .getQuantity()));
44624470 EmitArgCheck(TCK_Store, Dest, E->getArg(0), 0);
44634471 EmitArgCheck(TCK_Load, Src, E->getArg(1), 1);
4464- Builder.CreateMemMove(Dest, Src, SizeVal, false);
4472+ auto *I = Builder.CreateMemMove(Dest, Src, SizeVal, false);
4473+ addInstToNewSourceAtom(I, nullptr);
44654474 return RValue::get(Dest, *this);
44664475 }
44674476 case Builtin::BImemset:
@@ -4472,7 +4481,8 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
44724481 Value *SizeVal = EmitScalarExpr(E->getArg(2));
44734482 EmitNonNullArgCheck(Dest, E->getArg(0)->getType(),
44744483 E->getArg(0)->getExprLoc(), FD, 0);
4475- Builder.CreateMemSet(Dest, ByteVal, SizeVal, false);
4484+ auto *I = Builder.CreateMemSet(Dest, ByteVal, SizeVal, false);
4485+ addInstToNewSourceAtom(I, ByteVal);
44764486 return RValue::get(Dest, *this);
44774487 }
44784488 case Builtin::BI__builtin_memset_inline: {
@@ -4484,7 +4494,8 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
44844494 EmitNonNullArgCheck(RValue::get(Dest.emitRawPointer(*this)),
44854495 E->getArg(0)->getType(), E->getArg(0)->getExprLoc(), FD,
44864496 0);
4487- Builder.CreateMemSetInline(Dest, ByteVal, Size);
4497+ auto *I = Builder.CreateMemSetInline(Dest, ByteVal, Size);
4498+ addInstToNewSourceAtom(I, nullptr);
44884499 return RValue::get(nullptr);
44894500 }
44904501 case Builtin::BI__builtin___memset_chk: {
@@ -4501,7 +4512,8 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
45014512 Value *ByteVal = Builder.CreateTrunc(EmitScalarExpr(E->getArg(1)),
45024513 Builder.getInt8Ty());
45034514 Value *SizeVal = llvm::ConstantInt::get(Builder.getContext(), Size);
4504- Builder.CreateMemSet(Dest, ByteVal, SizeVal, false);
4515+ auto *I = Builder.CreateMemSet(Dest, ByteVal, SizeVal, false);
4516+ addInstToNewSourceAtom(I, nullptr);
45054517 return RValue::get(Dest, *this);
45064518 }
45074519 case Builtin::BI__builtin_wmemchr: {
0 commit comments