diff options
| author | Eli Friedman <eli.friedman@gmail.com> | 2008-05-14 19:38:39 +0000 |
|---|---|---|
| committer | Eli Friedman <eli.friedman@gmail.com> | 2008-05-14 19:38:39 +0000 |
| commit | a1b4ed8003d4f8bde8b4d459b8002e7e21e88456 (patch) | |
| tree | e75ded96ab1d4cffc2e4e31f5c32e8345477d11c /clang/lib/AST/Expr.cpp | |
| parent | 3ab94df276ea939f05fc2395876a06a2e73f5ad4 (diff) | |
| download | bcm5719-llvm-a1b4ed8003d4f8bde8b4d459b8002e7e21e88456.tar.gz bcm5719-llvm-a1b4ed8003d4f8bde8b4d459b8002e7e21e88456.zip | |
Implementation of __builtin_shufflevector, a portable builtin capable of
expressing the full flexibility of the LLVM shufflevector instruction.
The expected immediate usage is in *mmintrin.h, so that they don't
depend on the mess of gcc-inherited (and not completely implemented)
shuffle builtins.
llvm-svn: 51113
Diffstat (limited to 'clang/lib/AST/Expr.cpp')
| -rw-r--r-- | clang/lib/AST/Expr.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/clang/lib/AST/Expr.cpp b/clang/lib/AST/Expr.cpp index 2ac30b4c8cb..45c6a8721f8 100644 --- a/clang/lib/AST/Expr.cpp +++ b/clang/lib/AST/Expr.cpp @@ -500,6 +500,7 @@ Expr *Expr::IgnoreParenCasts() { bool Expr::isConstantExpr(ASTContext &Ctx, SourceLocation *Loc) const { + return true; switch (getStmtClass()) { default: if (Loc) *Loc = getLocStart(); @@ -1363,6 +1364,14 @@ Stmt::child_iterator OverloadExpr::child_end() { return reinterpret_cast<Stmt**>(&SubExprs[NumExprs]); } +// ShuffleVectorExpr +Stmt::child_iterator ShuffleVectorExpr::child_begin() { + return reinterpret_cast<Stmt**>(&SubExprs[0]); +} +Stmt::child_iterator ShuffleVectorExpr::child_end() { + return reinterpret_cast<Stmt**>(&SubExprs[NumExprs]); +} + // VAArgExpr Stmt::child_iterator VAArgExpr::child_begin() { return reinterpret_cast<Stmt**>(&Val); |

