]> granicus.if.org Git - clang/commitdiff
x86_64 ABI: "is passed in regs" computation for va_arg was broken for
authorDaniel Dunbar <daniel@zuster.org>
Wed, 18 Feb 2009 22:05:01 +0000 (22:05 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Wed, 18 Feb 2009 22:05:01 +0000 (22:05 +0000)
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

lib/CodeGen/CGCall.cpp

index 84e894a40a62bd36957846d3195040f9501631b3..9b8b74196f588f0975c88d4d7c11b35c35830845 100644 (file)
@@ -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");