diff options
| author | Vitaly Buka <vitalybuka@google.com> | 2020-06-12 17:41:28 -0700 |
|---|---|---|
| committer | Vitaly Buka <vitalybuka@google.com> | 2020-06-12 17:42:32 -0700 |
| commit | e6ce0dc5de37a51afed255c7e384d2016924dbbb (patch) | |
| tree | afec5bc013d3d1481abf37e1cb38ce9939b28874 /llvm/lib/Analysis/StackSafetyAnalysis.cpp | |
| parent | 4741835e031b559f2effcad70f59e35c32c1eece (diff) | |
[StackSafety,NFC] Extract addOverflowNever
Diffstat (limited to 'llvm/lib/Analysis/StackSafetyAnalysis.cpp')
| -rw-r--r-- | llvm/lib/Analysis/StackSafetyAnalysis.cpp | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/llvm/lib/Analysis/StackSafetyAnalysis.cpp b/llvm/lib/Analysis/StackSafetyAnalysis.cpp index 853707e9c23d..3fb5c294acf6 100644 --- a/llvm/lib/Analysis/StackSafetyAnalysis.cpp +++ b/llvm/lib/Analysis/StackSafetyAnalysis.cpp @@ -98,6 +98,13 @@ bool isUnsafe(const ConstantRange &R) { return R.isEmptySet() || R.isFullSet() || R.isUpperSignWrapped(); } +ConstantRange addOverflowNever(const ConstantRange &L, const ConstantRange &R) { + if (L.signedAddMayOverflow(R) != + ConstantRange::OverflowResult::NeverOverflows) + return ConstantRange(L.getBitWidth(), true); + return L.add(R); +} + /// Calculate the allocation size of a given alloca. Returns empty range // in case of confution. ConstantRange getStaticAllocaSizeRange(const AllocaInst &AI) { @@ -237,10 +244,7 @@ StackSafetyLocalAnalysis::getAccessRange(Value *Addr, Value *Base, if (isUnsafe(Offsets)) return UnknownRange; - if (Offsets.signedAddMayOverflow(SizeRange) != - ConstantRange::OverflowResult::NeverOverflows) - return UnknownRange; - Offsets = Offsets.add(SizeRange); + Offsets = addOverflowNever(Offsets, SizeRange); if (isUnsafe(Offsets)) return UnknownRange; return Offsets; @@ -453,10 +457,7 @@ ConstantRange StackSafetyDataFlowAnalysis<CalleeTy>::getArgumentAccessRange( return Access; if (Access.isFullSet()) return UnknownRange; - if (Offsets.signedAddMayOverflow(Access) != - ConstantRange::OverflowResult::NeverOverflows) - return UnknownRange; - return Access.add(Offsets); + return addOverflowNever(Access, Offsets); } template <typename CalleeTy> |
