================ @@ -5348,18 +5348,8 @@ Value *ScalarExprEmitter::VisitVAArgExpr(VAArgExpr *VE) { return llvm::UndefValue::get(ArgTy); } - // FIXME Volatility. - llvm::Value *Val = Builder.CreateLoad(ArgPtr); - - // If EmitVAArg promoted the type, we must truncate it. - if (ArgTy != Val->getType()) { - if (ArgTy->isPointerTy() && !Val->getType()->isPointerTy()) - Val = Builder.CreateIntToPtr(Val, ArgTy); - else - Val = Builder.CreateTrunc(Val, ArgTy); - } - - return Val; + return CGF.EmitLoadOfScalar(ArgPtr, Ty.isVolatileQualified(), Ty, + VE->getExprLoc()); ---------------- Fznamznon wrote:
Do you mean I should apply `RValue::get()` in `CodeGenFunction::EmitVAArg`? And all the callers of `EmitVAAArg` therefore should do `getScalarVal()` or similar to get a `llvm::value`? Or is it still better to do in another PR? If I revert the current change with `EmitLoadOfScalar` there should be a manipulation for _BitInt like it was in first version of the patch and received this comment - https://github.com/llvm/llvm-project/pull/91364#discussion_r1592864982 . https://github.com/llvm/llvm-project/pull/91364 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits