OSDN Git Service

Fix lock order inversion between ManagedStatic and Statistic
authorBob Haarman <llvm@inglorion.net>
Tue, 17 Apr 2018 23:37:18 +0000 (23:37 +0000)
committerBob Haarman <llvm@inglorion.net>
Tue, 17 Apr 2018 23:37:18 +0000 (23:37 +0000)
commit91cfb1b3cd220bdf6511e817bb72fbfe1dddb2df
tree5773f06e31566a1ef280831940c23c9fec155375
parenteca9ecf8f9d0881c140726260e3a6f4b4ddaac91
Fix lock order inversion between ManagedStatic and Statistic

Summary:
Statistic and ManagedStatic both use mutexes. There was a lock order
inversion where, during initialization, Statistic's mutex would be
held while taking ManagedStatic's, and in llvm_shutdown,
ManagedStatic's mutex would be held while taking Statistic's
mutex. This change causes Statistic's initialization code to avoid
holding its mutex while calling ManagedStatic's methods, avoiding the
inversion.

Reviewers: dsanders, rtereshin

Reviewed By: dsanders

Subscribers: hiraditya, llvm-commits

Differential Revision: https://reviews.llvm.org/D45398

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@330236 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Support/Statistic.cpp