Updated Clang to a version that supports propagating
the "virtual" flag when importing a C++ function
declaration.  Made changes to LLDB to support other
changes in Clang.


git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@124355 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/source/Expression/IRForTarget.cpp b/source/Expression/IRForTarget.cpp
index fceb67f..517ab13 100644
--- a/source/Expression/IRForTarget.cpp
+++ b/source/Expression/IRForTarget.cpp
@@ -271,8 +271,8 @@
     if (m_result_is_pointer)
     {
         clang::QualType pointer_qual_type = result_decl->getType();
-        clang::Type *pointer_type = pointer_qual_type.getTypePtr();
-        clang::PointerType *pointer_pointertype = dyn_cast<clang::PointerType>(pointer_type);
+        const clang::Type *pointer_type = pointer_qual_type.getTypePtr();
+        const clang::PointerType *pointer_pointertype = dyn_cast<clang::PointerType>(pointer_type);
         
         if (!pointer_pointertype)
         {
@@ -1252,6 +1252,7 @@
         Value *val = llvm_call_inst->getCalledValue();
         
         ConstantExpr *const_expr = dyn_cast<ConstantExpr>(val);
+        LoadInst *load_inst = dyn_cast<LoadInst>(val);
         
         if (const_expr && const_expr->getOpcode() == Instruction::BitCast)
         {
@@ -1269,6 +1270,10 @@
         {
             return true; // already resolved
         }
+        else if (load_inst)
+        {
+            return true; // virtual method call
+        }
         else
         {
             if (m_error_stream)