29
29
#include " clang/Basic/TargetInfo.h"
30
30
#include " clang/Frontend/FrontendDiagnostic.h"
31
31
#include " llvm/IR/InlineAsm.h"
32
+ #include " llvm/IR/Instruction.h"
32
33
#include " llvm/IR/Intrinsics.h"
33
34
#include " llvm/IR/IntrinsicsX86.h"
34
35
#include " llvm/IR/MatrixBuilder.h"
@@ -4190,6 +4191,7 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
4190
4191
Matrix, Dst.emitRawPointer (*this ),
4191
4192
Align (Dst.getAlignment ().getQuantity ()), Stride, IsVolatile,
4192
4193
MatrixTy->getNumRows (), MatrixTy->getNumColumns ());
4194
+ addInstToNewSourceAtom (cast<Instruction>(Result), Matrix);
4193
4195
return RValue::get (Result);
4194
4196
}
4195
4197
@@ -4350,7 +4352,8 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
4350
4352
Value *SizeVal = EmitScalarExpr (E->getArg (1 ));
4351
4353
EmitNonNullArgCheck (Dest, E->getArg (0 )->getType (),
4352
4354
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 );
4354
4357
return RValue::get (nullptr );
4355
4358
}
4356
4359
@@ -4365,7 +4368,8 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
4365
4368
EmitNonNullArgCheck (RValue::get (Dest.emitRawPointer (*this )),
4366
4369
E->getArg (1 )->getType (), E->getArg (1 )->getExprLoc (), FD,
4367
4370
0 );
4368
- Builder.CreateMemMove (Dest, Src, SizeVal, false );
4371
+ auto *I = Builder.CreateMemMove (Dest, Src, SizeVal, false );
4372
+ addInstToNewSourceAtom (I, nullptr );
4369
4373
return RValue::get (nullptr );
4370
4374
}
4371
4375
@@ -4378,7 +4382,8 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
4378
4382
Value *SizeVal = EmitScalarExpr (E->getArg (2 ));
4379
4383
EmitArgCheck (TCK_Store, Dest, E->getArg (0 ), 0 );
4380
4384
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 );
4382
4387
if (BuiltinID == Builtin::BImempcpy ||
4383
4388
BuiltinID == Builtin::BI__builtin_mempcpy)
4384
4389
return RValue::get (Builder.CreateInBoundsGEP (
@@ -4394,7 +4399,8 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
4394
4399
E->getArg (2 )->EvaluateKnownConstInt (getContext ()).getZExtValue ();
4395
4400
EmitArgCheck (TCK_Store, Dest, E->getArg (0 ), 0 );
4396
4401
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 );
4398
4404
return RValue::get (nullptr );
4399
4405
}
4400
4406
@@ -4415,7 +4421,8 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
4415
4421
Address Dest = EmitPointerWithAlignment (E->getArg (0 ));
4416
4422
Address Src = EmitPointerWithAlignment (E->getArg (1 ));
4417
4423
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 );
4419
4426
return RValue::get (Dest, *this );
4420
4427
}
4421
4428
@@ -4441,7 +4448,8 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
4441
4448
Address Dest = EmitPointerWithAlignment (E->getArg (0 ));
4442
4449
Address Src = EmitPointerWithAlignment (E->getArg (1 ));
4443
4450
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 );
4445
4453
return RValue::get (Dest, *this );
4446
4454
}
4447
4455
@@ -4461,7 +4469,8 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
4461
4469
.getQuantity ()));
4462
4470
EmitArgCheck (TCK_Store, Dest, E->getArg (0 ), 0 );
4463
4471
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 );
4465
4474
return RValue::get (Dest, *this );
4466
4475
}
4467
4476
case Builtin::BImemset:
@@ -4472,7 +4481,8 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
4472
4481
Value *SizeVal = EmitScalarExpr (E->getArg (2 ));
4473
4482
EmitNonNullArgCheck (Dest, E->getArg (0 )->getType (),
4474
4483
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);
4476
4486
return RValue::get (Dest, *this );
4477
4487
}
4478
4488
case Builtin::BI__builtin_memset_inline: {
@@ -4484,7 +4494,8 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
4484
4494
EmitNonNullArgCheck (RValue::get (Dest.emitRawPointer (*this )),
4485
4495
E->getArg (0 )->getType (), E->getArg (0 )->getExprLoc (), FD,
4486
4496
0 );
4487
- Builder.CreateMemSetInline (Dest, ByteVal, Size );
4497
+ auto *I = Builder.CreateMemSetInline (Dest, ByteVal, Size );
4498
+ addInstToNewSourceAtom (I, nullptr );
4488
4499
return RValue::get (nullptr );
4489
4500
}
4490
4501
case Builtin::BI__builtin___memset_chk: {
@@ -4501,7 +4512,8 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
4501
4512
Value *ByteVal = Builder.CreateTrunc (EmitScalarExpr (E->getArg (1 )),
4502
4513
Builder.getInt8Ty ());
4503
4514
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 );
4505
4517
return RValue::get (Dest, *this );
4506
4518
}
4507
4519
case Builtin::BI__builtin_wmemchr: {
0 commit comments