diff options
author | George Burgess IV <george.burgess.iv@gmail.com> | 2016-06-24 01:41:29 +0000 |
---|---|---|
committer | George Burgess IV <george.burgess.iv@gmail.com> | 2016-06-24 01:41:29 +0000 |
commit | d9c39fcbcad1dd38954fef547ad77b7674b97052 (patch) | |
tree | 2e3cbd3862d3c551a387ae035ae6e80556fce87b /llvm/lib/Analysis/CFLAliasAnalysis.cpp | |
parent | a3d62be73331b62329594c0f8cbdd171b40bacb7 (diff) | |
download | bcm5719-llvm-d9c39fcbcad1dd38954fef547ad77b7674b97052.tar.gz bcm5719-llvm-d9c39fcbcad1dd38954fef547ad77b7674b97052.zip |
Attempt to fix MSVC breakage caused by r273636.
Apparently earlier versions of MSVC don't have constexpr bitset ctors.
llvm-svn: 273637
Diffstat (limited to 'llvm/lib/Analysis/CFLAliasAnalysis.cpp')
-rw-r--r-- | llvm/lib/Analysis/CFLAliasAnalysis.cpp | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/llvm/lib/Analysis/CFLAliasAnalysis.cpp b/llvm/lib/Analysis/CFLAliasAnalysis.cpp index b00c78a90f2..659443fc0ab 100644 --- a/llvm/lib/Analysis/CFLAliasAnalysis.cpp +++ b/llvm/lib/Analysis/CFLAliasAnalysis.cpp @@ -142,13 +142,17 @@ LLVM_CONSTEXPR unsigned AttrFirstArgIndex = 4; LLVM_CONSTEXPR unsigned AttrLastArgIndex = MaxStratifiedAttrIndex; LLVM_CONSTEXPR unsigned AttrMaxNumArgs = AttrLastArgIndex - AttrFirstArgIndex; -LLVM_CONSTEXPR StratifiedAttrs AttrNone = 0; -LLVM_CONSTEXPR StratifiedAttrs AttrEscaped = 1 << AttrEscapedIndex; -LLVM_CONSTEXPR StratifiedAttrs AttrUnknown = 1 << AttrUnknownIndex; -LLVM_CONSTEXPR StratifiedAttrs AttrGlobal = 1 << AttrGlobalIndex; -LLVM_CONSTEXPR StratifiedAttrs AttrCaller = 1 << AttrCallerIndex; -LLVM_CONSTEXPR StratifiedAttrs ExternalAttrMask = - (1 << AttrEscapedIndex) | (1 << AttrUnknownIndex) | (1 << AttrGlobalIndex); +// NOTE: These aren't StratifiedAttrs because bitsets don't have a constexpr +// ctor for some versions of MSVC that we support. We could maybe refactor, +// but... +using StratifiedAttr = unsigned; +LLVM_CONSTEXPR StratifiedAttr AttrNone = 0; +LLVM_CONSTEXPR StratifiedAttr AttrEscaped = 1 << AttrEscapedIndex; +LLVM_CONSTEXPR StratifiedAttr AttrUnknown = 1 << AttrUnknownIndex; +LLVM_CONSTEXPR StratifiedAttr AttrGlobal = 1 << AttrGlobalIndex; +LLVM_CONSTEXPR StratifiedAttr AttrCaller = 1 << AttrCallerIndex; +LLVM_CONSTEXPR StratifiedAttr ExternalAttrMask = + AttrEscaped | AttrUnknown | AttrGlobal; /// The maximum number of arguments we can put into a summary. LLVM_CONSTEXPR unsigned MaxSupportedArgsInSummary = 50; @@ -744,7 +748,7 @@ static bool isUnknownAttr(StratifiedAttrs Attr) { static Optional<StratifiedAttrs> valueToAttr(Value *Val) { if (isa<GlobalValue>(Val)) - return AttrGlobal; + return StratifiedAttrs(AttrGlobal); if (auto *Arg = dyn_cast<Argument>(Val)) // Only pointer arguments should have the argument attribute, @@ -827,7 +831,7 @@ CFLAAResult::FunctionInfo::FunctionInfo(Function &Fn, auto &Link = Sets.getLink(SetIndex); InterfaceMap.insert(std::make_pair(SetIndex, CurrValue)); - auto ExternalAttrs = Link.Attrs & ExternalAttrMask; + auto ExternalAttrs = Link.Attrs & StratifiedAttrs(ExternalAttrMask); if (ExternalAttrs.any()) RetParamAttributes.push_back( ExternalAttribute{CurrValue, ExternalAttrs}); |