From: Daniel Dunbar Date: Wed, 18 Feb 2009 22:05:01 +0000 (+0000) Subject: x86_64 ABI: "is passed in regs" computation for va_arg was broken for X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f231346438e61e59ff7b72d5ecbd58b6ae484211;p=clang x86_64 ABI: "is passed in regs" computation for va_arg was broken for things passed in mixed registers. This knocks out 8 x86_64 failures. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64958 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/CGCall.cpp b/lib/CodeGen/CGCall.cpp index 84e894a40a..9b8b74196f 100644 --- a/lib/CodeGen/CGCall.cpp +++ b/lib/CodeGen/CGCall.cpp @@ -1013,7 +1013,7 @@ llvm::Value *X86_64ABIInfo::EmitVAArg(llvm::Value *VAListAddr, QualType Ty, llvm::ConstantInt::get(llvm::Type::Int32Ty, 176 - neededSSE * 8), "fits_in_fp"); - InRegs = InRegs ? CGF.Builder.CreateOr(InRegs, FitsInFP) : FitsInFP; + InRegs = InRegs ? CGF.Builder.CreateAnd(InRegs, FitsInFP) : FitsInFP; } llvm::BasicBlock *InRegBlock = CGF.createBasicBlock("vaarg.in_reg");