[llvm-commits] [llvm-gcc-4.2] r48608 - in /llvm-gcc-4.2/trunk/gcc: config/i386/llvm-i386-target.h config/i386/llvm-i386.cpp config/rs6000/llvm-rs6000.cpp config/rs6000/rs6000.h llvm-abi.h llvm-convert.cpp
Dale Johannesen
dalej at apple.com
Mon Mar 31 11:28:12 PDT 2008
On Mar 31, 2008, at 9:44 AM, Dale Johannesen wrote:
>> cc1: Instructions.cpp:258: void llvm::CallInst::init(llvm::Value*,
>> llvm::Value* const*, unsigned int): Assertion `(NumParams == FTy-
>> >getNumParams() || (FTy->isVarArg() && NumParams > FTy-
>> >getNumParams())) && "Calling a function with bad signature!"'
>> failed.
>>
>> The reason is that @llvm.x86.sse.movmsk.ps is declared as
>>
>> declare i32 @llvm.x86.sse.movmsk.ps(<4 x float>) nounwind readnone
>>
>> but the vector is being passed in integer registers in the call,
>> namely
>> as two i64's.
>
> This works on darwin (<4 x float> is used consistently).
> llvm_x86_should_pass_vector_in_integer_regs is all dependent on
> TARGET_MACHO and presumably shouldn't be, but it may not be as
> simple as removing TARGET_MACHO.
Actually, I think I accidentally changed the behavior on Linux; 48988
should put it back the way it was.
More information about the llvm-commits
mailing list