Joey Gouly pointed out how to fake missing stuff using attributes, so test added in r172053.
From: Chandler Carruth [mailto:[email protected]] Sent: 10 January 2013 09:32 To: David Tweed Cc: llvm cfe Subject: Re: [cfe-commits] r172047 - /cfe/trunk/lib/CodeGen/CGExprScalar.cpp On Thu, Jan 10, 2013 at 1:11 AM, David Tweed <[email protected]<mailto:[email protected]>> wrote: Author: davidtweed Date: Thu Jan 10 03:11:33 2013 New Revision: 172047 URL: http://llvm.org/viewvc/llvm-project?rev=172047&view=rev Log: Testing with a full OpenCL compiler (based on clang) reveals r71734 missed difference between type widths of a vector and the width of one of its elements in the case of vector shifts. Use correct witdth in the vector case. This still needs a regression test case. Modified: cfe/trunk/lib/CodeGen/CGExprScalar.cpp Modified: cfe/trunk/lib/CodeGen/CGExprScalar.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExprScalar.cpp?rev=172047&r1=172046&r2=172047&view=diff ============================================================================== --- cfe/trunk/lib/CodeGen/CGExprScalar.cpp (original) +++ cfe/trunk/lib/CodeGen/CGExprScalar.cpp Thu Jan 10 03:11:33 2013 @@ -2368,8 +2368,12 @@ } Value *ScalarExprEmitter::GetWidthMinusOneValue(Value* LHS,Value* RHS) { - unsigned Width = cast<llvm::IntegerType>(LHS->getType())->getBitWidth(); - return llvm::ConstantInt::get(RHS->getType(), Width - 1); + llvm::IntegerType *Ty; + if (llvm::VectorType *VT = dyn_cast<llvm::VectorType>(LHS->getType())) + Ty = cast<llvm::IntegerType>(VT->getElementType()); + else + Ty = cast<llvm::IntegerType>(LHS->getType()); + return llvm::ConstantInt::get(RHS->getType(), Ty->getBitWidth() - 1); } Value *ScalarExprEmitter::EmitShl(const BinOpInfo &Ops) { _______________________________________________ cfe-commits mailing list [email protected]<mailto:[email protected]> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits -- IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
