[AST] Use data-recursion when building ParentMap, avoid stack overflow.
authorSam McCall <sam.mccall@gmail.com>
Thu, 24 Sep 2020 12:26:11 +0000 (14:26 +0200)
committerSam McCall <sam.mccall@gmail.com>
Thu, 24 Sep 2020 20:49:44 +0000 (22:49 +0200)
commit1ad94624f8a092fbfcb74685e11243c186b04c8f
treea813b858596cbf04f6b7b59a60dfd341506125fa
parent4b8cb665a13b1eef4df3e09080098b5f8f520016
[AST] Use data-recursion when building ParentMap, avoid stack overflow.

The following crashes on my system before this patch, but not after:

  void foo(int i) {
    switch (i) {
      case 1:
      case 2:
      ... 100000 cases ...
        ;
    }
  }

  clang-query -c="match stmt(hasAncestor(stmt()))" deep.c

I'm not sure it's actually a sane testcase to run though, it's pretty slow :-)

Differential Revision: https://reviews.llvm.org/D88222
clang/lib/AST/ParentMapContext.cpp