summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen
diff options
context:
space:
mode:
authorFrancois Pichet <pichet2000@gmail.com>2010-12-07 00:08:36 +0000
committerFrancois Pichet <pichet2000@gmail.com>2010-12-07 00:08:36 +0000
commit9dfa3ce94f4bfa6e22626ea3092d361ef2dde0a3 (patch)
tree5322657ee6bd680cffa75dcb7d8ecef9fec046c7 /clang/lib/CodeGen
parent9aeaa4d65074c3f4b25551f7b20adf5c87734ad7 (diff)
downloadbcm5719-llvm-9dfa3ce94f4bfa6e22626ea3092d361ef2dde0a3.tar.gz
bcm5719-llvm-9dfa3ce94f4bfa6e22626ea3092d361ef2dde0a3.zip
Type traits intrinsic implementation: __is_base_of(T, U)
New AST node introduced: BinaryTypeTraitExpr; to be reused for more intrinsics. llvm-svn: 121074
Diffstat (limited to 'clang/lib/CodeGen')
-rw-r--r--clang/lib/CodeGen/CGExprScalar.cpp4
-rw-r--r--clang/lib/CodeGen/Mangle.cpp1
2 files changed, 5 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/CGExprScalar.cpp b/clang/lib/CodeGen/CGExprScalar.cpp
index 841f1299d24..62a18dbeabf 100644
--- a/clang/lib/CodeGen/CGExprScalar.cpp
+++ b/clang/lib/CodeGen/CGExprScalar.cpp
@@ -353,6 +353,10 @@ public:
return llvm::ConstantInt::get(Builder.getInt1Ty(), E->getValue());
}
+ Value *VisitBinaryTypeTraitExpr(const BinaryTypeTraitExpr *E) {
+ return llvm::ConstantInt::get(Builder.getInt1Ty(), E->getValue());
+ }
+
Value *VisitCXXPseudoDestructorExpr(const CXXPseudoDestructorExpr *E) {
// C++ [expr.pseudo]p1:
// The result shall only be used as the operand for the function call
diff --git a/clang/lib/CodeGen/Mangle.cpp b/clang/lib/CodeGen/Mangle.cpp
index 24790b8df20..b95573227b6 100644
--- a/clang/lib/CodeGen/Mangle.cpp
+++ b/clang/lib/CodeGen/Mangle.cpp
@@ -1664,6 +1664,7 @@ void CXXNameMangler::mangleExpression(const Expr *E, unsigned Arity) {
case Expr::StmtExprClass:
case Expr::TypesCompatibleExprClass:
case Expr::UnaryTypeTraitExprClass:
+ case Expr::BinaryTypeTraitExprClass:
case Expr::VAArgExprClass:
case Expr::CXXUuidofExprClass:
case Expr::CXXNoexceptExprClass: {
OpenPOWER on IntegriCloud