diff options
author | Chris Lattner <sabre@nondot.org> | 2009-02-16 22:14:05 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-02-16 22:14:05 +0000 |
commit | b8211f643671dee1861a93ed40e2f17d39441172 (patch) | |
tree | 3e09c249ae225db01213de74f94722b71e0ab702 /clang/lib/CodeGen/CGExpr.cpp | |
parent | f95039cd58bb977244d04a696a5f18358ecd9f40 (diff) | |
download | bcm5719-llvm-b8211f643671dee1861a93ed40e2f17d39441172.tar.gz bcm5719-llvm-b8211f643671dee1861a93ed40e2f17d39441172.zip |
introduce and use a new ExtVectorElementExpr::isArrow method, at Eli's suggestion
llvm-svn: 64681
Diffstat (limited to 'clang/lib/CodeGen/CGExpr.cpp')
-rw-r--r-- | clang/lib/CodeGen/CGExpr.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/clang/lib/CodeGen/CGExpr.cpp b/clang/lib/CodeGen/CGExpr.cpp index 03efbc9ad56..01a5514d6e1 100644 --- a/clang/lib/CodeGen/CGExpr.cpp +++ b/clang/lib/CodeGen/CGExpr.cpp @@ -797,12 +797,13 @@ EmitExtVectorElementExpr(const ExtVectorElementExpr *E) { LValue Base; // ExtVectorElementExpr's base can either be a vector or pointer to vector. - if (const PointerType *PT = E->getBase()->getType()->getAsPointerType()) { - llvm::Value *Ptr = EmitScalarExpr(E->getBase()); - Base = LValue::MakeAddr(Ptr, PT->getPointeeType().getCVRQualifiers()); - } else { + if (!E->isArrow()) { assert(E->getBase()->getType()->isVectorType()); Base = EmitLValue(E->getBase()); + } else { + const PointerType *PT = E->getBase()->getType()->getAsPointerType(); + llvm::Value *Ptr = EmitScalarExpr(E->getBase()); + Base = LValue::MakeAddr(Ptr, PT->getPointeeType().getCVRQualifiers()); } // Encode the element access list into a vector of unsigned indices. |