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 84e894a..9b8b741 100644
--- a/lib/CodeGen/CGCall.cpp
+++ b/lib/CodeGen/CGCall.cpp
@@ -1013,7 +1013,7 @@
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");