Re: [Lldb-commits] [PATCH] D17618: Improve looking up functions with equivalent mangled names.

2016-07-11 Thread Sean Callanan via lldb-commits
spyffe requested changes to this revision.
spyffe added a comment.
This revision now requires changes to proceed.

I'm concerned about the performance implications here, because 
`FindBestAlternateMangledName` is invoked for every C++ symbol lookup, not just 
for ones that would fail unless we did this workaround.

We have a `ColectFallbackNames` function in IRExecutionUnit.cpp to try hackier 
approaches if the simple approaches don't work.  Would it be feasible to make 
this farily heavyweight search part of the fallback names mechanism?


http://reviews.llvm.org/D17618



___
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


Re: [Lldb-commits] [PATCH] D17618: Improve looking up functions with equivalent mangled names.

2016-02-26 Thread Greg Clayton via lldb-commits
clayborg resigned from this revision.
clayborg removed a reviewer: clayborg.
clayborg added a comment.

Sean should be the one to OK this.


http://reviews.llvm.org/D17618



___
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


Re: [Lldb-commits] [PATCH] D17618: Improve looking up functions with equivalent mangled names.

2016-02-25 Thread Siva Chandra via lldb-commits
sivachandra updated this revision to Diff 49138.
sivachandra added a comment.

Add more gtest unittests.


http://reviews.llvm.org/D17618

Files:
  include/lldb/Symbol/SymbolFile.h
  packages/Python/lldbsuite/test/lang/cpp/stl/TestSTL.py
  packages/Python/lldbsuite/test/lang/cpp/stl/main.cpp
  source/Expression/IRExecutionUnit.cpp
  source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
  source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.h
  source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
  source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h
  source/Symbol/SymbolFile.cpp
  unittests/CMakeLists.txt
  unittests/Language/CMakeLists.txt
  unittests/Language/CPlusPlus/CMakeLists.txt
  unittests/Language/CPlusPlus/SplitIntoArgsTest.cpp
  unittests/Language/CPlusPlus/TypeNamesEqualityTest.cpp

Index: unittests/Language/CPlusPlus/TypeNamesEqualityTest.cpp
===
--- /dev/null
+++ unittests/Language/CPlusPlus/TypeNamesEqualityTest.cpp
@@ -0,0 +1,32 @@
+//===-- ScalarTest.cpp --*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===--===//
+
+#include "gtest/gtest.h"
+
+#include "Plugins/Language/CPlusPlus/CPlusPlusLanguage.h"
+
+using namespace lldb_private;
+
+TEST(TypeNamesEqualTest, Equality)
+{
+ASSERT_TRUE(CPlusPlusLanguage::TypeNamesEqual("int *", "int*"));
+ASSERT_TRUE(CPlusPlusLanguage::TypeNamesEqual("unsigned int *", "unsigned int*"));
+ASSERT_TRUE(CPlusPlusLanguage::TypeNamesEqual("const unsigned int", "unsigned int const"));
+ASSERT_TRUE(CPlusPlusLanguage::TypeNamesEqual("const unsigned int *", "unsigned int const *"));
+ASSERT_TRUE(CPlusPlusLanguage::TypeNamesEqual("unsigned int * const", "unsigned int * const"));
+}
+
+TEST(TypeNamesEqualTest, InEquality)
+{
+ASSERT_FALSE(CPlusPlusLanguage::TypeNamesEqual("int *", "short int*"));
+ASSERT_FALSE(CPlusPlusLanguage::TypeNamesEqual("unsigned int *", "unsigned int"));
+ASSERT_FALSE(CPlusPlusLanguage::TypeNamesEqual("const unsigned int", "int const"));
+ASSERT_FALSE(CPlusPlusLanguage::TypeNamesEqual("const unsigned int *", "unsigned int * const"));
+ASSERT_FALSE(CPlusPlusLanguage::TypeNamesEqual("unsigned int const *", "unsigned int * const"));
+}
Index: unittests/Language/CPlusPlus/SplitIntoArgsTest.cpp
===
--- /dev/null
+++ unittests/Language/CPlusPlus/SplitIntoArgsTest.cpp
@@ -0,0 +1,25 @@
+//===-- ScalarTest.cpp --*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===--===//
+
+#include "gtest/gtest.h"
+
+#include "Plugins/Language/CPlusPlus/CPlusPlusLanguage.h"
+
+using namespace lldb_private;
+
+TEST(SplitIntoArgumentsTest, Equality)
+{
+llvm::StringRef input = "(std::basic_string, std::basic_string)";
+std::vector args;
+
+CPlusPlusLanguage::SplitIntoArguments(input, args);
+ASSERT_EQ(args.size(), static_cast(2));
+ASSERT_STREQ(args[0].c_str(), "std::basic_string");
+ASSERT_STREQ(args[1].c_str(), "std::basic_string");
+}
Index: unittests/Language/CPlusPlus/CMakeLists.txt
===
--- /dev/null
+++ unittests/Language/CPlusPlus/CMakeLists.txt
@@ -0,0 +1,6 @@
+add_lldb_unittest(LLDBCPlusCPlusLanguageTests
+  TypeNamesEqualityTest.cpp
+  SplitIntoArgsTest.cpp
+  )
+
+  target_link_libraries(lldbPluginCPlusPlusLanguage)
Index: unittests/Language/CMakeLists.txt
===
--- /dev/null
+++ unittests/Language/CMakeLists.txt
@@ -0,0 +1 @@
+add_subdirectory(CPlusPlus)
Index: unittests/CMakeLists.txt
===
--- unittests/CMakeLists.txt
+++ unittests/CMakeLists.txt
@@ -28,5 +28,6 @@
 add_subdirectory(Expression)
 add_subdirectory(Host)
 add_subdirectory(Interpreter)
+add_subdirectory(Language)
 add_subdirectory(ScriptInterpreter)
 add_subdirectory(Utility)
Index: source/Symbol/SymbolFile.cpp
===
--- source/Symbol/SymbolFile.cpp
+++ source/Symbol/SymbolFile.cpp
@@ -135,7 +135,10 @@
 }
 
 void
-SymbolFile::GetMangledNamesForFunction(const std::string _qualified_name, std::vector _names)
+SymbolFile::GetMangledNamesForFunction(const SymbolContext ,
+

Re: [Lldb-commits] [PATCH] D17618: Improve looking up functions with equivalent mangled names.

2016-02-25 Thread Siva Chandra via lldb-commits
sivachandra updated this revision to Diff 49098.
sivachandra added a comment.

Fix a comment in file, fix formatting in another.


http://reviews.llvm.org/D17618

Files:
  include/lldb/Symbol/SymbolFile.h
  packages/Python/lldbsuite/test/lang/cpp/stl/TestSTL.py
  packages/Python/lldbsuite/test/lang/cpp/stl/main.cpp
  source/Expression/IRExecutionUnit.cpp
  source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
  source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.h
  source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
  source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h
  source/Symbol/SymbolFile.cpp
  unittests/CMakeLists.txt
  unittests/Language/CMakeLists.txt
  unittests/Language/CPlusPlus/CMakeLists.txt
  unittests/Language/CPlusPlus/TypeNamesEqualityTest.cpp

Index: unittests/Language/CPlusPlus/TypeNamesEqualityTest.cpp
===
--- /dev/null
+++ unittests/Language/CPlusPlus/TypeNamesEqualityTest.cpp
@@ -0,0 +1,32 @@
+//===-- ScalarTest.cpp --*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===--===//
+
+#include "gtest/gtest.h"
+
+#include "Plugins/Language/CPlusPlus/CPlusPlusLanguage.h"
+
+using namespace lldb_private;
+
+TEST(TypeNamesEqualTest, Equality)
+{
+ASSERT_TRUE(CPlusPlusLanguage::TypeNamesEqual("int *", "int*"));
+ASSERT_TRUE(CPlusPlusLanguage::TypeNamesEqual("unsigned int *", "unsigned int*"));
+ASSERT_TRUE(CPlusPlusLanguage::TypeNamesEqual("const unsigned int", "unsigned int const"));
+ASSERT_TRUE(CPlusPlusLanguage::TypeNamesEqual("const unsigned int *", "unsigned int const *"));
+ASSERT_TRUE(CPlusPlusLanguage::TypeNamesEqual("unsigned int * const", "unsigned int * const"));
+}
+
+TEST(TypeNamesEqualTest, InEquality)
+{
+ASSERT_FALSE(CPlusPlusLanguage::TypeNamesEqual("int *", "short int*"));
+ASSERT_FALSE(CPlusPlusLanguage::TypeNamesEqual("unsigned int *", "unsigned int"));
+ASSERT_FALSE(CPlusPlusLanguage::TypeNamesEqual("const unsigned int", "int const"));
+ASSERT_FALSE(CPlusPlusLanguage::TypeNamesEqual("const unsigned int *", "unsigned int * const"));
+ASSERT_FALSE(CPlusPlusLanguage::TypeNamesEqual("unsigned int const *", "unsigned int * const"));
+}
Index: unittests/Language/CPlusPlus/CMakeLists.txt
===
--- /dev/null
+++ unittests/Language/CPlusPlus/CMakeLists.txt
@@ -0,0 +1,5 @@
+add_lldb_unittest(LLDBCPlusCPlusLanguageTests
+  TypeNamesEqualityTest.cpp
+  )
+
+  target_link_libraries(lldbPluginCPlusPlusLanguage)
Index: unittests/Language/CMakeLists.txt
===
--- /dev/null
+++ unittests/Language/CMakeLists.txt
@@ -0,0 +1 @@
+add_subdirectory(CPlusPlus)
Index: unittests/CMakeLists.txt
===
--- unittests/CMakeLists.txt
+++ unittests/CMakeLists.txt
@@ -28,5 +28,6 @@
 add_subdirectory(Expression)
 add_subdirectory(Host)
 add_subdirectory(Interpreter)
+add_subdirectory(Language)
 add_subdirectory(ScriptInterpreter)
 add_subdirectory(Utility)
Index: source/Symbol/SymbolFile.cpp
===
--- source/Symbol/SymbolFile.cpp
+++ source/Symbol/SymbolFile.cpp
@@ -135,7 +135,10 @@
 }
 
 void
-SymbolFile::GetMangledNamesForFunction(const std::string _qualified_name, std::vector _names)
+SymbolFile::GetMangledNamesForFunction(const SymbolContext ,
+   const std::string _qualified_name,
+   const std::vector ,
+   std::vector _names)
 {
 return;
 }
Index: source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h
===
--- source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h
+++ source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h
@@ -209,7 +209,9 @@
lldb_private::SymbolContextList& sc_list) override;
 
 void
-GetMangledNamesForFunction (const std::string _qualified_name,
+GetMangledNamesForFunction (const lldb_private::SymbolContext& sc,
+const std::string _qualified_name,
+const std::vector ,
 std::vector _names) override;
 
 uint32_t
Index: source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
===
--- source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
+++ source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
@@ -2966,7 +2966,9 @@
 }
 
 void
-SymbolFileDWARF::GetMangledNamesForFunction (const std::string _qualified_name,