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

Reply via email to