forked from OSchip/llvm-project
[Attributor][FIX] Avoid double free (and useless state copy)
In an attempt to remove the memory leak we introduced a double free. The problem was that we allowed a plain copy of the state and it was actually used. The use was useless, so it is gone now. The copy constructor is gone as well. The move constructor ensures the Accesses pointers are owned by a single state, I hope. Reported by: https://lab.llvm.org/buildbot/#/builders/16/builds/25820
This commit is contained in:
parent
30c5269d93
commit
9ddb1a49ac
|
@ -884,8 +884,9 @@ struct AA::PointerInfo::State : public AbstractState {
|
|||
}
|
||||
|
||||
State() = default;
|
||||
State(const State &SIS) : AccessBins(SIS.AccessBins) {}
|
||||
State(State &&SIS) : AccessBins(std::move(SIS.AccessBins)) {}
|
||||
State(State &&SIS) : AccessBins(std::move(SIS.AccessBins)) {
|
||||
SIS.AccessBins.clear();
|
||||
}
|
||||
|
||||
const State &getAssumed() const { return *this; }
|
||||
|
||||
|
@ -1336,7 +1337,6 @@ struct AAPointerInfoFloating : public AAPointerInfoImpl {
|
|||
/// See AbstractAttribute::updateImpl(...).
|
||||
ChangeStatus updateImpl(Attributor &A) override {
|
||||
using namespace AA::PointerInfo;
|
||||
State S = getState();
|
||||
ChangeStatus Changed = ChangeStatus::UNCHANGED;
|
||||
Value &AssociatedValue = getAssociatedValue();
|
||||
|
||||
|
|
Loading…
Reference in New Issue