summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorSanjiv Gupta <sanjiv.gupta@microchip.com>2009-04-24 02:40:57 +0000
committerSanjiv Gupta <sanjiv.gupta@microchip.com>2009-04-24 02:40:57 +0000
commit474251577163d262d4907466f8c3688b1aeea5c6 (patch)
treeb45e392b2f5189f0d85a6a43a44591d49e6c1389 /clang/lib
parent640a161c73db421c30a6514f1bfb5f95d4054a7a (diff)
downloadbcm5719-llvm-474251577163d262d4907466f8c3688b1aeea5c6.tar.gz
bcm5719-llvm-474251577163d262d4907466f8c3688b1aeea5c6.zip
Clang part of r69947. Reverting back 69574 as it is no longer needed.
llvm-svn: 69949
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/CodeGen/CGExpr.cpp7
-rw-r--r--clang/lib/CodeGen/CGExprScalar.cpp14
2 files changed, 6 insertions, 15 deletions
diff --git a/clang/lib/CodeGen/CGExpr.cpp b/clang/lib/CodeGen/CGExpr.cpp
index ed1baa0da0a..f155139e517 100644
--- a/clang/lib/CodeGen/CGExpr.cpp
+++ b/clang/lib/CodeGen/CGExpr.cpp
@@ -805,11 +805,8 @@ LValue CodeGenFunction::EmitArraySubscriptExpr(const ArraySubscriptExpr *E) {
QualType IdxTy = E->getIdx()->getType();
bool IdxSigned = IdxTy->isSignedIntegerType();
unsigned IdxBitwidth = cast<llvm::IntegerType>(Idx->getType())->getBitWidth();
-
- // If Pointer width is less than 32 than extend to 32.
- unsigned IdxValidWidth = (LLVMPointerWidth < 32 ) ? 32 : LLVMPointerWidth;
- if (IdxBitwidth != IdxValidWidth)
- Idx = Builder.CreateIntCast(Idx, llvm::IntegerType::get(IdxValidWidth),
+ if (IdxBitwidth != LLVMPointerWidth)
+ Idx = Builder.CreateIntCast(Idx, llvm::IntegerType::get(LLVMPointerWidth),
IdxSigned, "idxprom");
// We know that the pointer points to a type of the correct size, unless the
diff --git a/clang/lib/CodeGen/CGExprScalar.cpp b/clang/lib/CodeGen/CGExprScalar.cpp
index 77771bd937a..308a45e4335 100644
--- a/clang/lib/CodeGen/CGExprScalar.cpp
+++ b/clang/lib/CodeGen/CGExprScalar.cpp
@@ -958,14 +958,10 @@ Value *ScalarExprEmitter::EmitAdd(const BinOpInfo &Ops) {
}
unsigned Width = cast<llvm::IntegerType>(Idx->getType())->getBitWidth();
- // Only 32 and 64 are valid index widths. So if a target has shorter
- // pointe width, extend to 32 at least.
- unsigned IdxValidWidth
- = (CGF.LLVMPointerWidth < 32) ? 32 : CGF.LLVMPointerWidth;
- if (Width < IdxValidWidth) {
+ if (Width < CGF.LLVMPointerWidth) {
// Zero or sign extend the pointer value based on whether the index is
// signed or not.
- const llvm::Type *IdxType = llvm::IntegerType::get(IdxValidWidth);
+ const llvm::Type *IdxType = llvm::IntegerType::get(CGF.LLVMPointerWidth);
if (IdxExp->getType()->isSignedIntegerType())
Idx = Builder.CreateSExt(Idx, IdxType, "idx.ext");
else
@@ -1008,12 +1004,10 @@ Value *ScalarExprEmitter::EmitSub(const BinOpInfo &Ops) {
// pointer - int
Value *Idx = Ops.RHS;
unsigned Width = cast<llvm::IntegerType>(Idx->getType())->getBitWidth();
- unsigned IdxValidWidth
- = (CGF.LLVMPointerWidth < 32) ? 32 : CGF.LLVMPointerWidth;
- if (Width < IdxValidWidth) {
+ if (Width < CGF.LLVMPointerWidth) {
// Zero or sign extend the pointer value based on whether the index is
// signed or not.
- const llvm::Type *IdxType = llvm::IntegerType::get(IdxValidWidth);
+ const llvm::Type *IdxType = llvm::IntegerType::get(CGF.LLVMPointerWidth);
if (Ops.E->getRHS()->getType()->isSignedIntegerType())
Idx = Builder.CreateSExt(Idx, IdxType, "idx.ext");
else
OpenPOWER on IntegriCloud