aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorChristopher Lamb <christopher.lamb@gmail.com>2007-12-28 23:43:03 +0000
committerChristopher Lamb <christopher.lamb@gmail.com>2007-12-28 23:43:03 +0000
commit33fd5c124aac15bab7cad95e4e0e7761356d2c06 (patch)
treec9a4a927bb47b8553bda6b192b9894065fb23cbb /include
parent998568f24d6665b8a9bf26b42a04e5f80d14668f (diff)
Fix an error in the base/idx accessors for ArraySubscriptExpr's that crops up with vector element access.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45390 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r--include/clang/AST/Expr.h13
1 files changed, 8 insertions, 5 deletions
diff --git a/include/clang/AST/Expr.h b/include/clang/AST/Expr.h
index aba11ea9ad..873b6f7a8b 100644
--- a/include/clang/AST/Expr.h
+++ b/include/clang/AST/Expr.h
@@ -499,7 +499,10 @@ public:
/// In this case getBase() returns "A" and getIdx() returns "4".
/// - getLHS() and getRHS() present the syntactic view. e.g. for
/// 4[A] getLHS() returns "4".
-
+ /// Note: Because vector element access is also written A[4] we must
+ /// predicate the format conversion in getBase and getIdx only on the
+ /// the type of the RHS, as it is possible for the LHS to be a vector of
+ /// integer type
Expr *getLHS() { return SubExprs[LHS]; }
const Expr *getLHS() const { return SubExprs[LHS]; }
@@ -507,19 +510,19 @@ public:
const Expr *getRHS() const { return SubExprs[RHS]; }
Expr *getBase() {
- return (getLHS()->getType()->isIntegerType()) ? getRHS() : getLHS();
+ return (getRHS()->getType()->isIntegerType()) ? getLHS() : getRHS();
}
const Expr *getBase() const {
- return (getLHS()->getType()->isIntegerType()) ? getRHS() : getLHS();
+ return (getRHS()->getType()->isIntegerType()) ? getLHS() : getRHS();
}
Expr *getIdx() {
- return (getLHS()->getType()->isIntegerType()) ? getLHS() : getRHS();
+ return (getRHS()->getType()->isIntegerType()) ? getRHS() : getLHS();
}
const Expr *getIdx() const {
- return (getLHS()->getType()->isIntegerType()) ? getLHS() : getRHS();
+ return (getRHS()->getType()->isIntegerType()) ? getRHS() : getLHS();
}