summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis/CFLAliasAnalysis.cpp
diff options
context:
space:
mode:
authorGeorge Burgess IV <george.burgess.iv@gmail.com>2016-06-24 01:41:29 +0000
committerGeorge Burgess IV <george.burgess.iv@gmail.com>2016-06-24 01:41:29 +0000
commitd9c39fcbcad1dd38954fef547ad77b7674b97052 (patch)
tree2e3cbd3862d3c551a387ae035ae6e80556fce87b /llvm/lib/Analysis/CFLAliasAnalysis.cpp
parenta3d62be73331b62329594c0f8cbdd171b40bacb7 (diff)
downloadbcm5719-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.cpp22
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});
OpenPOWER on IntegriCloud