Revision: 127541 Author: clattner Date: 2007-05-22 22:10:53 -0700 (Tue, 22 May 2007)
Log Message: ----------- commit reid's intrinsics patch Modified Paths: -------------- apple-local/branches/llvm/gcc/llvm-convert.cpp Modified: apple-local/branches/llvm/gcc/llvm-convert.cpp =================================================================== --- apple-local/branches/llvm/gcc/llvm-convert.cpp 2007-05-22 16:31:00 UTC (rev 127540) +++ apple-local/branches/llvm/gcc/llvm-convert.cpp 2007-05-23 05:10:53 UTC (rev 127541) @@ -4201,12 +4201,15 @@ bool TreeToLLVM::EmitBuiltinUnaryIntOp(Value *InVal, Value *&Result, Intrinsic::ID Id) { - const Type *Ty = InVal->getType(); - - const Type* Tys[2]; - Tys[0] = 0; // Result type is i32, not variable, signal so. - Tys[1] = Ty; // Parameter type is iAny so actual type must be specified here - Result = new CallInst(Intrinsic::getDeclaration(TheModule, Id, Tys, 2), + // The intrinsic might be overloaded in which case the argument is of + // varying type. Make sure that we specify the actual type for "iAny" + // by passing it as the 3rd and 4th parameters. This isn't needed for + // most intrinsics, but is needed for ctpop, cttz, ctlz. + const Type* Tys[] = { + InVal->getType() + }; + Result = new CallInst(Intrinsic::getDeclaration(TheModule, Id, Tys, + sizeof(Tys)/sizeof(Tys[0])), InVal, "tmp", CurBB); return true; _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits