diff options
author | Akira Hatanaka <ahatanaka@apple.com> | 2015-11-12 21:19:18 +0000 |
---|---|---|
committer | Akira Hatanaka <ahatanaka@apple.com> | 2015-11-12 21:19:18 +0000 |
commit | f3aa82f666387a448bfcf6590664ae9d37bc5b0f (patch) | |
tree | e51c38bed3452e643576f755e41c329f696c9c27 /llvm/lib/Analysis/InlineCost.cpp | |
parent | d9fa2b5487549b0b0951bdbbe7a7fcc27bb225ac (diff) | |
download | llvm-f3aa82f666387a448bfcf6590664ae9d37bc5b0f.zip llvm-f3aa82f666387a448bfcf6590664ae9d37bc5b0f.tar.gz llvm-f3aa82f666387a448bfcf6590664ae9d37bc5b0f.tar.bz2 |
Revert r252949.
It broke some of the bots including clang-x64-ninja-win7.
llvm-svn: 252951
Diffstat (limited to 'llvm/lib/Analysis/InlineCost.cpp')
-rw-r--r-- | llvm/lib/Analysis/InlineCost.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/llvm/lib/Analysis/InlineCost.cpp b/llvm/lib/Analysis/InlineCost.cpp index b908434..26f2e7f 100644 --- a/llvm/lib/Analysis/InlineCost.cpp +++ b/llvm/lib/Analysis/InlineCost.cpp @@ -1349,13 +1349,22 @@ InlineCost InlineCostAnalysis::getInlineCost(CallSite CS, int Threshold) { return getInlineCost(CS, CS.getCalledFunction(), Threshold); } +/// \brief Test that two functions either have or have not the given attribute +/// at the same time. +template<typename AttrKind> +static bool attributeMatches(Function *F1, Function *F2, AttrKind Attr) { + return F1->getFnAttribute(Attr) == F2->getFnAttribute(Attr); +} + /// \brief Test that there are no attribute conflicts between Caller and Callee /// that prevent inlining. static bool functionsHaveCompatibleAttributes(Function *Caller, Function *Callee, TargetTransformInfo &TTI) { return TTI.areInlineCompatible(Caller, Callee) && - AttributeFuncs::areInlineCompatible(*Caller, *Callee); + attributeMatches(Caller, Callee, Attribute::SanitizeAddress) && + attributeMatches(Caller, Callee, Attribute::SanitizeMemory) && + attributeMatches(Caller, Callee, Attribute::SanitizeThread); } InlineCost InlineCostAnalysis::getInlineCost(CallSite CS, Function *Callee, |