From 5ecf218eca3558aa647bbc8120dfa734a233953c Mon Sep 17 00:00:00 2001 From: Philip Reames Date: Fri, 18 Feb 2022 08:40:58 -0800 Subject: [PATCH] [instsimplify] Add a comment hinting how compares involving two globals are handled [NFC] --- llvm/lib/Analysis/InstructionSimplify.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/llvm/lib/Analysis/InstructionSimplify.cpp b/llvm/lib/Analysis/InstructionSimplify.cpp index 5fa6b69..54895de 100644 --- a/llvm/lib/Analysis/InstructionSimplify.cpp +++ b/llvm/lib/Analysis/InstructionSimplify.cpp @@ -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 @@ -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(V1) && (isa(V2) || isa(V2)); } -- 2.7.4