Skip to content

Commit

Permalink
[instsimplify] Add a comment hinting how compares involving two globa…
Browse files Browse the repository at this point in the history
…ls are handled [NFC]
  • Loading branch information
preames committed Feb 18, 2022
1 parent f20f9f5 commit 5ecf218
Showing 1 changed file with 6 additions and 3 deletions.
9 changes: 6 additions & 3 deletions llvm/lib/Analysis/InstructionSimplify.cpp
Expand Up @@ -2512,8 +2512,12 @@ static Value *ExtractEquivalentCondition(Value *V, CmpInst::Predicate Pred,
/// *are* possible, and that zero sized regions do not overlap with any other.
static bool HaveNonOverlappingStorage(const Value *V1, const Value *V2) {
// Global variables always exist, so they always exist during the lifetime
// of each other and all allocas. Two different allocas usually have
// different addresses...
// of each other and all allocas. Global variables themselves usually have
// non-overlapping storage, but since their addresses are constants, the
// case involving two globals does not reach here and is instead handled in
// constant folding.
//
// Two different allocas usually have different addresses...
//
// However, if there's an @llvm.stackrestore dynamically in between two
// allocas, they may have the same address. It's tempting to reduce the
Expand All @@ -2532,7 +2536,6 @@ static bool HaveNonOverlappingStorage(const Value *V1, const Value *V2) {
//
// So, we'll assume that two non-empty allocas have different addresses
// for now.
//
return isa<AllocaInst>(V1) &&
(isa<AllocaInst>(V2) || isa<GlobalVariable>(V2));
}
Expand Down

0 comments on commit 5ecf218

Please sign in to comment.