[Attributor][NFC] Add `const` and missing state constructors
authorJohannes Doerfert <johannes@jdoerfert.de>
Wed, 22 Apr 2020 21:02:10 +0000 (16:02 -0500)
committerJohannes Doerfert <johannes@jdoerfert.de>
Fri, 24 Apr 2020 06:08:23 +0000 (01:08 -0500)
llvm/include/llvm/Transforms/IPO/Attributor.h

index 3002a11..c4ace30 100644 (file)
@@ -1360,6 +1360,9 @@ struct IntegerStateBase : public AbstractState {
 
   /// Return the worst possible representable state.
   static constexpr base_t getWorstState() { return WorstState; }
+  static constexpr base_t getWorstState(const IntegerStateBase &) {
+    return getWorstState();
+  }
 
   /// See AbstractState::isValidState()
   /// NOTE: For now we simply pretend that the worst possible state is invalid.
@@ -2273,6 +2276,16 @@ struct DerefState : AbstractState {
   static DerefState getBestState() { return DerefState(); }
   static DerefState getBestState(const DerefState &) { return getBestState(); }
 
+  /// Return the worst possible representable state.
+  static DerefState getWorstState() {
+    DerefState DS;
+    DS.indicatePessimisticFixpoint();
+    return DS;
+  }
+  static DerefState getWorstState(const DerefState &) {
+    return getWorstState();
+  }
+
   /// State representing for dereferenceable bytes.
   IncIntegerState<> DerefBytesState;
 
@@ -2363,13 +2376,13 @@ struct DerefState : AbstractState {
   }
 
   /// Equality for DerefState.
-  bool operator==(const DerefState &R) {
+  bool operator==(const DerefState &R) const {
     return this->DerefBytesState == R.DerefBytesState &&
            this->GlobalState == R.GlobalState;
   }
 
   /// Inequality for DerefState.
-  bool operator!=(const DerefState &R) { return !(*this == R); }
+  bool operator!=(const DerefState &R) const { return !(*this == R); }
 
   /// See IntegerStateBase::operator^=
   DerefState operator^=(const DerefState &R) {