@@ -336,10 +336,6 @@ Address HexagonABIInfo::EmitVAArgForHexagonLinux(CodeGenFunction &CGF,
336336 // Implement the block where argument is in register saved area
337337 CGF.EmitBlock (InRegBlock);
338338
339- llvm::Type *PTy = CGF.ConvertType (Ty);
340- llvm::Value *__saved_reg_area_p = CGF.Builder .CreateBitCast (
341- __current_saved_reg_area_pointer, llvm::PointerType::getUnqual (PTy));
342-
343339 CGF.Builder .CreateStore (__new_saved_reg_area_pointer,
344340 __current_saved_reg_area_pointer_p);
345341
@@ -388,22 +384,16 @@ Address HexagonABIInfo::EmitVAArgForHexagonLinux(CodeGenFunction &CGF,
388384 CGF.Builder .CreateStore (__new_overflow_area_pointer,
389385 __current_saved_reg_area_pointer_p);
390386
391- // Bitcast the overflow area pointer to the type of argument.
392- llvm::Type *OverflowPTy = CGF.ConvertTypeForMem (Ty);
393- llvm::Value *__overflow_area_p = CGF.Builder .CreateBitCast (
394- __overflow_area_pointer, llvm::PointerType::getUnqual (OverflowPTy));
395-
396387 CGF.EmitBranch (ContBlock);
397-
398388 // Get the correct pointer to load the variable argument
399389 // Implement the ContBlock
400390 CGF.EmitBlock (ContBlock);
401391
402392 llvm::Type *MemTy = CGF.ConvertTypeForMem (Ty);
403- llvm::Type *MemPTy = llvm::PointerType::getUnqual (MemTy);
404- llvm::PHINode *ArgAddr = CGF. Builder . CreatePHI (MemPTy , 2 , " vaarg.addr" );
405- ArgAddr->addIncoming (__saved_reg_area_p , InRegBlock);
406- ArgAddr->addIncoming (__overflow_area_p , OnStackBlock);
393+ llvm::PHINode *ArgAddr = CGF. Builder . CreatePHI (
394+ llvm::PointerType::getUnqual (MemTy-> getContext ()) , 2 , " vaarg.addr" );
395+ ArgAddr->addIncoming (__current_saved_reg_area_pointer , InRegBlock);
396+ ArgAddr->addIncoming (__overflow_area_pointer , OnStackBlock);
407397
408398 return Address (ArgAddr, MemTy, CharUnits::fromQuantity (ArgAlign));
409399}
0 commit comments