diff --git a/quiche/common/quiche_weak_ptr.h b/quiche/common/quiche_weak_ptr.h
index c3005f0..12fc85a 100644
--- a/quiche/common/quiche_weak_ptr.h
+++ b/quiche/common/quiche_weak_ptr.h
@@ -53,7 +53,7 @@
 
   // Returns the pointer to the underlying object if it is alive, or nullptr
   // otherwise.
-  T* absl_nullable GetIfAvailable() const {
+  T* /*absl_nullable*/ GetIfAvailable() const {
     return control_block_ != nullptr ? control_block_->Get() : nullptr;
   }
 
@@ -70,20 +70,20 @@
   // contained pointer is set to nullptr.
   class ControlBlock {
    public:
-    explicit ControlBlock(T* absl_nonnull object) : object_(object) {}
+    explicit ControlBlock(T* /*absl_nonnull*/ object) : object_(object) {}
 
-    T* absl_nullable Get() const { return object_; }
+    T* /*absl_nullable*/ Get() const { return object_; }
     void Clear() { object_ = nullptr; }
     bool IsValid() const { return object_ != nullptr; }
 
    private:
-    T* absl_nullable object_;
+    T* /*absl_nullable*/ object_;
   };
 
   explicit QuicheWeakPtr(std::shared_ptr<ControlBlock> block)
       : control_block_(std::move(block)) {}
 
-  absl_nullable std::shared_ptr<ControlBlock> control_block_ = nullptr;
+  /*absl_nullable*/ std::shared_ptr<ControlBlock> control_block_ = nullptr;
 };
 
 // QuicheWeakPtrFactory generates weak pointers to the parent object, and cleans
@@ -92,7 +92,7 @@
 template <typename T>
 class QUICHE_NO_EXPORT QuicheWeakPtrFactory final {
  public:
-  explicit QuicheWeakPtrFactory(T* absl_nonnull object)
+  explicit QuicheWeakPtrFactory(T* /*absl_nonnull*/ object)
       : control_block_(std::make_shared<ControlBlock>(object)) {}
   ~QuicheWeakPtrFactory() { control_block_->Clear(); }
 
@@ -110,7 +110,7 @@
 
  private:
   using ControlBlock = typename QuicheWeakPtr<T>::ControlBlock;
-  absl_nonnull std::shared_ptr<ControlBlock> control_block_;
+  /*absl_nonnull*/ std::shared_ptr<ControlBlock> control_block_;
 };
 
 }  // namespace quiche
diff --git a/quiche/quic/core/http/http_decoder.h b/quiche/quic/core/http/http_decoder.h
index 2368c74..f040fa6 100644
--- a/quiche/quic/core/http/http_decoder.h
+++ b/quiche/quic/core/http/http_decoder.h
@@ -135,7 +135,7 @@
   };
 
   // |visitor| must be non-null, and must outlive HttpDecoder.
-  explicit HttpDecoder(Visitor* absl_nonnull visitor);
+  explicit HttpDecoder(Visitor* /*absl_nonnull*/ visitor);
 
   ~HttpDecoder();
 
diff --git a/quiche/quic/core/io/quic_server_io_harness.cc b/quiche/quic/core/io/quic_server_io_harness.cc
index de30e62..56d278c 100644
--- a/quiche/quic/core/io/quic_server_io_harness.cc
+++ b/quiche/quic/core/io/quic_server_io_harness.cc
@@ -44,8 +44,8 @@
 }
 
 absl::StatusOr<std::unique_ptr<QuicServerIoHarness>>
-QuicServerIoHarness::Create(QuicEventLoop* absl_nonnull event_loop,
-                            QuicDispatcher* absl_nonnull dispatcher,
+QuicServerIoHarness::Create(QuicEventLoop* /*absl_nonnull*/ event_loop,
+                            QuicDispatcher* /*absl_nonnull*/ dispatcher,
                             SocketFd fd) {
   auto harness =
       absl::WrapUnique(new QuicServerIoHarness(event_loop, dispatcher, fd));
diff --git a/quiche/quic/core/io/quic_server_io_harness.h b/quiche/quic/core/io/quic_server_io_harness.h
index 38d8c66..7bd842f 100644
--- a/quiche/quic/core/io/quic_server_io_harness.h
+++ b/quiche/quic/core/io/quic_server_io_harness.h
@@ -33,8 +33,8 @@
   // descriptor.  Does not create a packet writer; the caller has to either call
   // InitializeWriter() manually, or provide their own writer.
   static absl::StatusOr<std::unique_ptr<QuicServerIoHarness>> Create(
-      QuicEventLoop* absl_nonnull event_loop,
-      QuicDispatcher* absl_nonnull dispatcher, SocketFd fd);
+      QuicEventLoop* /*absl_nonnull*/ event_loop,
+      QuicDispatcher* /*absl_nonnull*/ dispatcher, SocketFd fd);
 
   ~QuicServerIoHarness();
   QuicServerIoHarness(const QuicServerIoHarness&) = delete;
diff --git a/quiche/quic/core/quic_alarm_factory_proxy.h b/quiche/quic/core/quic_alarm_factory_proxy.h
index ccd7d03..e7d0d25 100644
--- a/quiche/quic/core/quic_alarm_factory_proxy.h
+++ b/quiche/quic/core/quic_alarm_factory_proxy.h
@@ -19,7 +19,7 @@
 // QuicAlarmFactoryProxy passes calls to the specified unowned QuicAlarmFactory.
 class QUICHE_EXPORT QuicAlarmFactoryProxy : public QuicAlarmFactory {
  public:
-  explicit QuicAlarmFactoryProxy(QuicAlarmFactory* absl_nonnull alarm_factory)
+  explicit QuicAlarmFactoryProxy(QuicAlarmFactory* /*absl_nonnull*/ alarm_factory)
       : alarm_factory_(*alarm_factory) {}
 
   QuicAlarm* CreateAlarm(QuicAlarm::Delegate* delegate) override {
diff --git a/quiche/quic/core/quic_connection_alarms.cc b/quiche/quic/core/quic_connection_alarms.cc
index 2ccbe42..9b181d6 100644
--- a/quiche/quic/core/quic_connection_alarms.cc
+++ b/quiche/quic/core/quic_connection_alarms.cc
@@ -199,7 +199,7 @@
 }
 
 QuicAlarmMultiplexer::QuicAlarmMultiplexer(
-    QuicConnectionAlarmsDelegate* absl_nonnull connection,
+    QuicConnectionAlarmsDelegate* /*absl_nonnull*/ connection,
     QuicConnectionArena& arena, QuicAlarmFactory& alarm_factory)
     : deadlines_({QuicTime::Zero(), QuicTime::Zero(), QuicTime::Zero(),
                   QuicTime::Zero(), QuicTime::Zero(), QuicTime::Zero(),
diff --git a/quiche/quic/core/quic_connection_alarms.h b/quiche/quic/core/quic_connection_alarms.h
index 2bb9d22..aea38f0 100644
--- a/quiche/quic/core/quic_connection_alarms.h
+++ b/quiche/quic/core/quic_connection_alarms.h
@@ -89,7 +89,7 @@
   static constexpr size_t kNumberOfSlots =
       static_cast<size_t>(QuicAlarmSlot::kSlotCount);
 
-  QuicAlarmMultiplexer(QuicConnectionAlarmsDelegate* absl_nonnull connection,
+  QuicAlarmMultiplexer(QuicConnectionAlarmsDelegate* /*absl_nonnull*/ connection,
                        QuicConnectionArena& arena,
                        QuicAlarmFactory& alarm_factory);
 
diff --git a/quiche/quic/core/quic_time_wait_list_manager.cc b/quiche/quic/core/quic_time_wait_list_manager.cc
index 75c4b55..0699656 100644
--- a/quiche/quic/core/quic_time_wait_list_manager.cc
+++ b/quiche/quic/core/quic_time_wait_list_manager.cc
@@ -93,7 +93,7 @@
   connection_id_clean_up_alarm_->Cancel();
 }
 
-QuicTimeWaitListManager::ConnectionIdData* absl_nullable
+QuicTimeWaitListManager::ConnectionIdData* /*absl_nullable*/
 QuicTimeWaitListManager::FindConnectionIdData(
     const QuicConnectionId& connection_id) {
   if (use_old_connection_id_map_) {
diff --git a/quiche/quic/core/quic_time_wait_list_manager.h b/quiche/quic/core/quic_time_wait_list_manager.h
index a2dc1a8..b1e7204 100644
--- a/quiche/quic/core/quic_time_wait_list_manager.h
+++ b/quiche/quic/core/quic_time_wait_list_manager.h
@@ -346,7 +346,7 @@
       indirect_connection_id_map_;
 
   // Find data for the given connection_id. Returns nullptr if not found.
-  ConnectionIdData* absl_nullable FindConnectionIdData(
+  ConnectionIdData* /*absl_nullable*/ FindConnectionIdData(
       const QuicConnectionId& connection_id);
   // Find an iterator for the given connection_id. Returns
   // connection_id_map_.end() if none found.
