]> granicus.if.org Git - clang/commit
Thread Safety Analysis: Avoid infinite recursion in an operator<<
authorJustin Bogner <mail@justinbogner.com>
Thu, 11 Sep 2014 19:44:04 +0000 (19:44 +0000)
committerJustin Bogner <mail@justinbogner.com>
Thu, 11 Sep 2014 19:44:04 +0000 (19:44 +0000)
commit37e48be46c18b9322ff88daca6c096d86bd8e619
tree6d6242bf4c9621c2e77277145bc56e7519f86fd7
parentd2490044a6ee81ddd435485e357db9d787d8f834
Thread Safety Analysis: Avoid infinite recursion in an operator<<

r217556 introduced an operator<<(std::ostream &, StringRef) that seems
to self recurse on some systems, because str.data(), which is a char *,
was being implicitly converted back to StringRef in overload
resolution.

This manifested as SemaCXX/warn-thread-safety-analysis.cpp timing out
in release builds and overflowing the stack in debug builds. One of
the failing systems that saw this is here:

  http://lab.llvm.org:8013/builders/clang-x86_64-darwin11-nobootstrap-RAincremental/builds/4636

Using ostream's write method instead of operator<< should get the bots
going again.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@217621 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/Analysis/Analyses/ThreadSafetyUtil.h