@@ -2518,11 +2518,11 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
2518
2518
case Builtin::BI__builtin_va_start:
2519
2519
case Builtin::BI__va_start:
2520
2520
case Builtin::BI__builtin_va_end:
2521
- return RValue::get(
2522
- EmitVAStartEnd(BuiltinID == Builtin::BI__va_start
2523
- ? EmitScalarExpr (E->getArg(0))
2524
- : EmitVAListRef(E->getArg(0)).getPointer(),
2525
- BuiltinID != Builtin::BI__builtin_va_end) );
2521
+ EmitVAStartEnd(BuiltinID == Builtin::BI__va_start
2522
+ ? EmitScalarExpr(E->getArg(0))
2523
+ : EmitVAListRef (E->getArg(0)).getPointer(),
2524
+ BuiltinID != Builtin::BI__builtin_va_end);
2525
+ return RValue::get(nullptr );
2526
2526
case Builtin::BI__builtin_va_copy: {
2527
2527
Value *DstPtr = EmitVAListRef(E->getArg(0)).getPointer();
2528
2528
Value *SrcPtr = EmitVAListRef(E->getArg(1)).getPointer();
@@ -2531,8 +2531,8 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
2531
2531
2532
2532
DstPtr = Builder.CreateBitCast(DstPtr, Type);
2533
2533
SrcPtr = Builder.CreateBitCast(SrcPtr, Type);
2534
- return RValue::get( Builder.CreateCall(CGM.getIntrinsic(Intrinsic::vacopy),
2535
- {DstPtr, SrcPtr}) );
2534
+ Builder.CreateCall(CGM.getIntrinsic(Intrinsic::vacopy), {DstPtr, SrcPtr});
2535
+ return RValue::get(nullptr );
2536
2536
}
2537
2537
case Builtin::BI__builtin_abs:
2538
2538
case Builtin::BI__builtin_labs:
@@ -2804,7 +2804,8 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
2804
2804
2805
2805
Value *ArgValue = EmitScalarExpr(E->getArg(0));
2806
2806
Function *FnAssume = CGM.getIntrinsic(Intrinsic::assume);
2807
- return RValue::get(Builder.CreateCall(FnAssume, ArgValue));
2807
+ Builder.CreateCall(FnAssume, ArgValue);
2808
+ return RValue::get(nullptr);
2808
2809
}
2809
2810
case Builtin::BI__arithmetic_fence: {
2810
2811
// Create the builtin call if FastMath is selected, and the target
@@ -2925,7 +2926,8 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
2925
2926
llvm::ConstantInt::get(Int32Ty, 3);
2926
2927
Value *Data = llvm::ConstantInt::get(Int32Ty, 1);
2927
2928
Function *F = CGM.getIntrinsic(Intrinsic::prefetch, Address->getType());
2928
- return RValue::get(Builder.CreateCall(F, {Address, RW, Locality, Data}));
2929
+ Builder.CreateCall(F, {Address, RW, Locality, Data});
2930
+ return RValue::get(nullptr);
2929
2931
}
2930
2932
case Builtin::BI__builtin_readcyclecounter: {
2931
2933
Function *F = CGM.getIntrinsic(Intrinsic::readcyclecounter);
@@ -2938,9 +2940,11 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
2938
2940
return RValue::get(Builder.CreateCall(F, {Begin, End}));
2939
2941
}
2940
2942
case Builtin::BI__builtin_trap:
2941
- return RValue::get(EmitTrapCall(Intrinsic::trap));
2943
+ EmitTrapCall(Intrinsic::trap);
2944
+ return RValue::get(nullptr);
2942
2945
case Builtin::BI__debugbreak:
2943
- return RValue::get(EmitTrapCall(Intrinsic::debugtrap));
2946
+ EmitTrapCall(Intrinsic::debugtrap);
2947
+ return RValue::get(nullptr);
2944
2948
case Builtin::BI__builtin_unreachable: {
2945
2949
EmitUnreachable(E->getExprLoc());
2946
2950
@@ -3721,7 +3725,8 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
3721
3725
}
3722
3726
case Builtin::BI__builtin_unwind_init: {
3723
3727
Function *F = CGM.getIntrinsic(Intrinsic::eh_unwind_init);
3724
- return RValue::get(Builder.CreateCall(F));
3728
+ Builder.CreateCall(F);
3729
+ return RValue::get(nullptr);
3725
3730
}
3726
3731
case Builtin::BI__builtin_extend_pointer: {
3727
3732
// Extends a pointer to the size of an _Unwind_Word, which is
@@ -4482,8 +4487,9 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
4482
4487
return EmitBuiltinNewDeleteCall(
4483
4488
E->getCallee()->getType()->castAs<FunctionProtoType>(), E, false);
4484
4489
case Builtin::BI__builtin_operator_delete:
4485
- return EmitBuiltinNewDeleteCall(
4490
+ EmitBuiltinNewDeleteCall(
4486
4491
E->getCallee()->getType()->castAs<FunctionProtoType>(), E, true);
4492
+ return RValue::get(nullptr);
4487
4493
4488
4494
case Builtin::BI__builtin_is_aligned:
4489
4495
return EmitBuiltinIsAligned(E);
@@ -4653,15 +4659,17 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
4653
4659
case Builtin::BI__builtin_coro_promise:
4654
4660
return EmitCoroutineIntrinsic(E, Intrinsic::coro_promise);
4655
4661
case Builtin::BI__builtin_coro_resume:
4656
- return EmitCoroutineIntrinsic(E, Intrinsic::coro_resume);
4662
+ EmitCoroutineIntrinsic(E, Intrinsic::coro_resume);
4663
+ return RValue::get(nullptr);
4657
4664
case Builtin::BI__builtin_coro_frame:
4658
4665
return EmitCoroutineIntrinsic(E, Intrinsic::coro_frame);
4659
4666
case Builtin::BI__builtin_coro_noop:
4660
4667
return EmitCoroutineIntrinsic(E, Intrinsic::coro_noop);
4661
4668
case Builtin::BI__builtin_coro_free:
4662
4669
return EmitCoroutineIntrinsic(E, Intrinsic::coro_free);
4663
4670
case Builtin::BI__builtin_coro_destroy:
4664
- return EmitCoroutineIntrinsic(E, Intrinsic::coro_destroy);
4671
+ EmitCoroutineIntrinsic(E, Intrinsic::coro_destroy);
4672
+ return RValue::get(nullptr);
4665
4673
case Builtin::BI__builtin_coro_done:
4666
4674
return EmitCoroutineIntrinsic(E, Intrinsic::coro_done);
4667
4675
case Builtin::BI__builtin_coro_alloc:
@@ -5094,7 +5102,8 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
5094
5102
Value *Val = EmitScalarExpr(E->getArg(0));
5095
5103
Address Address = EmitPointerWithAlignment(E->getArg(1));
5096
5104
Value *HalfVal = Builder.CreateFPTrunc(Val, Builder.getHalfTy());
5097
- return RValue::get(Builder.CreateStore(HalfVal, Address));
5105
+ Builder.CreateStore(HalfVal, Address);
5106
+ return RValue::get(nullptr);
5098
5107
}
5099
5108
case Builtin::BI__builtin_load_half: {
5100
5109
Address Address = EmitPointerWithAlignment(E->getArg(0));
@@ -5359,6 +5368,9 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
5359
5368
V = Builder.CreateBitCast(V, RetTy);
5360
5369
}
5361
5370
5371
+ if (RetTy->isVoidTy())
5372
+ return RValue::get(nullptr);
5373
+
5362
5374
return RValue::get(V);
5363
5375
}
5364
5376
@@ -5376,6 +5388,8 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
5376
5388
if (Value *V = EmitTargetBuiltinExpr(BuiltinID, E, ReturnValue)) {
5377
5389
switch (EvalKind) {
5378
5390
case TEK_Scalar:
5391
+ if (V->getType()->isVoidTy())
5392
+ return RValue::get(nullptr);
5379
5393
return RValue::get(V);
5380
5394
case TEK_Aggregate:
5381
5395
return RValue::getAggregate(ReturnValue.getValue(),
0 commit comments