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