Revert "[lldb] Fix dynamic_cast by no longer failing on variable without metadata"
authorStella Stamenova <stilis@microsoft.com>
Mon, 12 Aug 2019 20:08:05 +0000 (20:08 +0000)
committerStella Stamenova <stilis@microsoft.com>
Mon, 12 Aug 2019 20:08:05 +0000 (20:08 +0000)
This reverts commit b448d1bf212219febbb182d00c210bad1bd25e7f.

llvm-svn: 368615

lldb/packages/Python/lldbsuite/test/lang/cpp/dynamic_cast/ExtBase.cpp [deleted file]
lldb/packages/Python/lldbsuite/test/lang/cpp/dynamic_cast/ExtBase.h [deleted file]
lldb/packages/Python/lldbsuite/test/lang/cpp/dynamic_cast/Makefile [deleted file]
lldb/packages/Python/lldbsuite/test/lang/cpp/dynamic_cast/TestDynamicCast.py [deleted file]
lldb/packages/Python/lldbsuite/test/lang/cpp/dynamic_cast/main.cpp [deleted file]
lldb/source/Plugins/ExpressionParser/Clang/IRForTarget.cpp

diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/dynamic_cast/ExtBase.cpp b/lldb/packages/Python/lldbsuite/test/lang/cpp/dynamic_cast/ExtBase.cpp
deleted file mode 100644 (file)
index 4fde4ec..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-#include "ExtBase.h"
-
-char ExtBase::bar() {
-  return 'x';
-}
diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/dynamic_cast/ExtBase.h b/lldb/packages/Python/lldbsuite/test/lang/cpp/dynamic_cast/ExtBase.h
deleted file mode 100644 (file)
index 28e139d..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-class ExtBase {
-  virtual char bar();
-};
diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/dynamic_cast/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/dynamic_cast/Makefile
deleted file mode 100644 (file)
index e1afdbd..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-LEVEL = ../../../make
-CXX_SOURCES := main.cpp ExtBase.cpp
-include $(LEVEL)/Makefile.rules
diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/dynamic_cast/TestDynamicCast.py b/lldb/packages/Python/lldbsuite/test/lang/cpp/dynamic_cast/TestDynamicCast.py
deleted file mode 100644 (file)
index 4c9058c..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-from lldbsuite.test import lldbinline
-
-lldbinline.MakeInlineTest(__file__, globals(), [])
diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/dynamic_cast/main.cpp b/lldb/packages/Python/lldbsuite/test/lang/cpp/dynamic_cast/main.cpp
deleted file mode 100644 (file)
index dd2a07b..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-#include "ExtBase.h"
-
-class Base {
-public:
-  virtual char foo() {
-    return 'b';
-  }
-};
-
-class Derived : public Base {
-public:
-  char foo() override {
-    return 'd';
-  }
-};
-
-class NonOverrideDerived : public Base {
-};
-
-class ExtDerived : public ExtBase {
-public:
-  char bar() override {
-    return 'y';
-  }
-};
-
-int main() {
-  Derived d;
-  NonOverrideDerived d2;
-  Base *b = &d;
-  Base *real_base = new Base();
-  char c = dynamic_cast<Derived *>(b)->foo();
-
-  ExtDerived ext_d;
-  ExtBase *ext_b = &ext_d;
-  ExtBase *ext_real_base = new ExtBase();
-  c = dynamic_cast<ExtDerived *>(ext_b)->bar();
-
-
-  return 0; //% self.expect("expression dynamic_cast<class Derived *>(b) == (Derived*)b", substrs = ["bool", " = true"])
-            //% self.expect("expression dynamic_cast<class Base *>(b) == (Base*)b", substrs = ["bool", " = true"])
-            //% self.expect("expression dynamic_cast<class Derived *>(real_base) == nullptr", substrs = ["bool", " = true"])
-            //% self.expect("expression dynamic_cast<class NonOverrideDerived *>(&d) == nullptr", substrs = ["bool", " = true"])
-            //% self.expect("expression dynamic_cast<class ExtDerived *>(real_base) == nullptr", substrs = ["bool", " = true"])
-            //% self.expect("expression dynamic_cast<class Derived *>(&d2) == nullptr", substrs = ["bool", " = true"])
-            //% self.expect("expression dynamic_cast<class NonOverrideDerived *>(&d2) == (NonOverrideDerived *)&d2", substrs = ["bool", " = true"])
-            //% self.expect("expression dynamic_cast<class Derived *>(&ext_d) == nullptr", substrs = ["bool", " = true"])
-            //% self.expect("expression dynamic_cast<class ExtDerived *>(ext_b) == (class ExtDerived*)ext_b", substrs = ["bool", " = true"])
-            //% self.expect("expression dynamic_cast<class ExtBase *>(ext_real_base) == (class ExtBase*)ext_real_base", substrs = ["bool", " = true"])
-            //% self.expect("expression dynamic_cast<class ExtDerived *>(ext_real_base) == nullptr", substrs = ["bool", " = true"])
-}
index b7d84877a35f4c480322f15f52bb1b57a99a38d5..faac0c19edac7d865f1f340289dedea64b109116 100644 (file)
@@ -1265,10 +1265,16 @@ bool IRForTarget::MaybeHandleVariable(Value *llvm_value_ptr) {
     clang::NamedDecl *named_decl = DeclForGlobal(global_variable);
 
     if (!named_decl) {
+      if (IsObjCSelectorRef(llvm_value_ptr))
+        return true;
+
+      if (!global_variable->hasExternalLinkage())
+        return true;
+
       LLDB_LOG(log, "Found global variable \"{0}\" without metadata",
                global_variable->getName());
 
-      return true;
+      return false;
     }
 
     llvm::StringRef name(named_decl->getName());