implement codegen support for __builtin_types_compatible_p


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40788 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/CodeGen/CGExpr.cpp b/CodeGen/CGExpr.cpp
index 3cae677..9697686 100644
--- a/CodeGen/CGExpr.cpp
+++ b/CodeGen/CGExpr.cpp
@@ -614,6 +614,8 @@
     return EmitFloatingLiteral(cast<FloatingLiteral>(E));
   case Expr::CharacterLiteralClass:
     return EmitCharacterLiteral(cast<CharacterLiteral>(E));
+  case Expr::TypesCompatibleExprClass:
+    return EmitTypesCompatibleExpr(cast<TypesCompatibleExpr>(E));
     
   // Operators.  
   case Expr::ParenExprClass:
@@ -651,6 +653,12 @@
                                             E->getValue()));
 }
 
+RValue CodeGenFunction::EmitTypesCompatibleExpr(const TypesCompatibleExpr *E) {
+  return RValue::get(llvm::ConstantInt::get(ConvertType(E->getType()),
+                                            E->typesAreCompatible()));
+}
+
+
 RValue CodeGenFunction::EmitArraySubscriptExprRV(const ArraySubscriptExpr *E) {
   // Emit subscript expressions in rvalue context's.  For most cases, this just
   // loads the lvalue formed by the subscript expr.  However, we have to be