From: Chris Bieneman Date: Fri, 19 Sep 2014 22:46:28 +0000 (+0000) Subject: Converting SpillPlacement's BlockFrequency threshold to a ManagedStatic to avoid... X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=commitdiff_plain;h=3b5a0bf93d0f2e37ea42021aabc44b2ac91eb67f Converting SpillPlacement's BlockFrequency threshold to a ManagedStatic to avoid static constructors and destructors. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@218163 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/SpillPlacement.cpp b/lib/CodeGen/SpillPlacement.cpp index 24e94d11f88..daaecf1f1b2 100644 --- a/lib/CodeGen/SpillPlacement.cpp +++ b/lib/CodeGen/SpillPlacement.cpp @@ -37,6 +37,7 @@ #include "llvm/CodeGen/Passes.h" #include "llvm/Support/Debug.h" #include "llvm/Support/Format.h" +#include "llvm/Support/ManagedStatic.h" using namespace llvm; @@ -61,12 +62,12 @@ void SpillPlacement::getAnalysisUsage(AnalysisUsage &AU) const { } namespace { -static BlockFrequency Threshold; +static ManagedStatic Threshold; } /// Decision threshold. A node gets the output value 0 if the weighted sum of /// its inputs falls in the open interval (-Threshold;Threshold). -static BlockFrequency getThreshold() { return Threshold; } +static BlockFrequency getThreshold() { return *Threshold; } /// \brief Set the threshold for a given entry frequency. /// @@ -78,7 +79,7 @@ static void setThreshold(const BlockFrequency &Entry) { // it. Divide by 2^13, rounding as appropriate. uint64_t Freq = Entry.getFrequency(); uint64_t Scaled = (Freq >> 13) + bool(Freq & (1 << 12)); - Threshold = std::max(UINT64_C(1), Scaled); + *Threshold = std::max(UINT64_C(1), Scaled); } /// Node - Each edge bundle corresponds to a Hopfield node.