[PATCH] D136444: [llvm-debuginfo-analyzer] (05/09) - Select elements - Test case (UndefinedBehaviorSanitizer)

Carlos Alberto Enciso via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Oct 21 05:42:13 PDT 2022


CarlosAlbertoEnciso created this revision.
CarlosAlbertoEnciso added reviewers: probinson, Orlando, jryans, psamolysov.
CarlosAlbertoEnciso added projects: All, debug-info, LLVM.
Herald added subscribers: manas, ASDenysPetrov, dkrupp, donat.nagy, Szelethus, a.sidorin, baloghadamsoftware, hiraditya.
CarlosAlbertoEnciso requested review of this revision.
Herald added a subscriber: llvm-commits.

The test case 'checkFlexiblePatterns' caused a failure in:

https://lab.llvm.org/buildbot/#/builders/85/builds/11590
`SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior`

  runtime error: applying zero offset to null pointer
  llvm/lib/Support/regengine.inc:151:18

The logical view is traversed and for each logical element a
series of match criterias are applied. One of those criterias
is to match its name or type name to a given pattern.

If the logical element does not have a type (for instance a
'namespace') do not try to use its type name, which is a
empty string as the 'matcher' function receives a null pointer.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D136444

Files:
  llvm/include/llvm/DebugInfo/LogicalView/Core/LVOptions.h
  llvm/lib/DebugInfo/LogicalView/Core/LVOptions.cpp


Index: llvm/lib/DebugInfo/LogicalView/Core/LVOptions.cpp
===================================================================
--- llvm/lib/DebugInfo/LogicalView/Core/LVOptions.cpp
+++ llvm/lib/DebugInfo/LogicalView/Core/LVOptions.cpp
@@ -505,6 +505,9 @@
 // Match a general pattern.
 bool LVPatterns::matchPattern(StringRef Input, const LVMatchInfo &MatchInfo) {
   bool Matched = false;
+  // Do not match an empty 'Input'.
+  if (Input.empty())
+    return Matched;
   // Traverse all match specifications.
   for (const LVMatch &Match : MatchInfo) {
     switch (Match.Mode) {
Index: llvm/include/llvm/DebugInfo/LogicalView/Core/LVOptions.h
===================================================================
--- llvm/include/llvm/DebugInfo/LogicalView/Core/LVOptions.h
+++ llvm/include/llvm/DebugInfo/LogicalView/Core/LVOptions.h
@@ -511,8 +511,8 @@
   void resolveGenericPatternMatch(T *Element, const U &Requests) {
     assert(Element && "Element must not be nullptr");
     auto CheckPattern = [=]() -> bool {
-      return Element->isNamed() &&
-             (matchGenericPattern(Element->getName()) ||
+      return (Element->isNamed() && matchGenericPattern(Element->getName())) ||
+             (Element->isTyped() &&
               matchGenericPattern(Element->getTypeName()));
     };
     auto CheckOffset = [=]() -> bool {


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D136444.469562.patch
Type: text/x-patch
Size: 1338 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20221021/189f46d6/attachment.bin>


More information about the llvm-commits mailing list