================
@@ -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

Reply via email to