diff --git a/llvm/lib/Transforms/IPO/Attributor.cpp b/llvm/lib/Transforms/IPO/Attributor.cpp --- a/llvm/lib/Transforms/IPO/Attributor.cpp +++ b/llvm/lib/Transforms/IPO/Attributor.cpp @@ -1658,9 +1658,10 @@ /// See AbstractState::isValidState() bool isValidState() const override { return DerefBytesState.isValidState(); } - // See AbstractState::isAtFixpoint() + /// See AbstractState::isAtFixpoint() bool isAtFixpoint() const override { - return DerefBytesState.isAtFixpoint() && NonNullGlobalState.isAtFixpoint(); + return !isValidState() || (DerefBytesState.isAtFixpoint() && + NonNullGlobalState.isAtFixpoint()); } /// See AbstractState::indicateOptimisticFixpoint(...)