teemperor created this revision.
teemperor added reviewers: LLDB, jasonmolenda.
Herald added subscribers: lldb-commits, mgorny.

The field `m_decompression_scratch_type` is only used when 
`HAVE_LIBCOMPRESSION` is
defined, which caused a warning which I fixed in rLLDB350675 
<https://reviews.llvm.org/rLLDB350675> by just marking the variable as always 
used.

This patch fixes this in a better way by only defining the variable (and the 
related `m_decompression_scratch`
variable) when `HAVE_LIBCOMPRESSION` is defined. This also required changing 
the way we handle
`HAVE_LIBCOMPRESSION` works, as this was previously always defined on macOS 
within the source file
but not in the header. Now it's always defined from within our config header 
when CMake defines it or when
we are on macOS.

The field initialization was moved to the header to prevent that we have 
`#ifdef` within our initializer list.


Repository:
  rLLDB LLDB

https://reviews.llvm.org/D57011

Files:
  include/lldb/Host/Config.h.cmake
  source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp
  source/Plugins/Process/gdb-remote/GDBRemoteCommunication.h


Index: source/Plugins/Process/gdb-remote/GDBRemoteCommunication.h
===================================================================
--- source/Plugins/Process/gdb-remote/GDBRemoteCommunication.h
+++ source/Plugins/Process/gdb-remote/GDBRemoteCommunication.h
@@ -217,8 +217,10 @@
   HostThread m_listen_thread;
   std::string m_listen_url;
 
-  CompressionType m_decompression_scratch_type;
-  void *m_decompression_scratch;
+#if defined(HAVE_LIBCOMPRESSION)
+  CompressionType m_decompression_scratch_type = CompressionType::None;
+  void *m_decompression_scratch = nullptr;
+#endif
 
   DISALLOW_COPY_AND_ASSIGN(GDBRemoteCommunication);
 };
Index: source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp
===================================================================
--- source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp
+++ source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp
@@ -41,8 +41,7 @@
 #define DEBUGSERVER_BASENAME "lldb-server"
 #endif
 
-#if defined(__APPLE__)
-#define HAVE_LIBCOMPRESSION
+#if defined(HAVE_LIBCOMPRESSION)
 #include <compression.h>
 #endif
 
@@ -67,10 +66,7 @@
 #endif
       m_echo_number(0), m_supports_qEcho(eLazyBoolCalculate), m_history(512),
       m_send_acks(true), m_compression_type(CompressionType::None),
-      m_listen_url(), m_decompression_scratch_type(CompressionType::None),
-      m_decompression_scratch(nullptr) {
-  // Unused unless HAVE_LIBCOMPRESSION is defined.
-  (void)m_decompression_scratch_type;
+      m_listen_url() {
 }
 
 //----------------------------------------------------------------------
@@ -81,8 +77,10 @@
     Disconnect();
   }
 
+#if defined(HAVE_LIBCOMPRESSION)
   if (m_decompression_scratch)
     free (m_decompression_scratch);
+#endif
 
   // Stop the communications read thread which is used to parse all incoming
   // packets.  This function will block until the read thread returns.
Index: include/lldb/Host/Config.h.cmake
===================================================================
--- include/lldb/Host/Config.h.cmake
+++ include/lldb/Host/Config.h.cmake
@@ -33,4 +33,10 @@
 #cmakedefine HAVE_LIBCOMPRESSION
 #endif
 
+#ifndef HAVE_LIBCOMPRESSION
+#ifdef __APPLE__
+#define HAVE_LIBCOMPRESSION
+#endif
+#endif
+
 #endif // #ifndef LLDB_HOST_CONFIG_H


Index: source/Plugins/Process/gdb-remote/GDBRemoteCommunication.h
===================================================================
--- source/Plugins/Process/gdb-remote/GDBRemoteCommunication.h
+++ source/Plugins/Process/gdb-remote/GDBRemoteCommunication.h
@@ -217,8 +217,10 @@
   HostThread m_listen_thread;
   std::string m_listen_url;
 
-  CompressionType m_decompression_scratch_type;
-  void *m_decompression_scratch;
+#if defined(HAVE_LIBCOMPRESSION)
+  CompressionType m_decompression_scratch_type = CompressionType::None;
+  void *m_decompression_scratch = nullptr;
+#endif
 
   DISALLOW_COPY_AND_ASSIGN(GDBRemoteCommunication);
 };
Index: source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp
===================================================================
--- source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp
+++ source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp
@@ -41,8 +41,7 @@
 #define DEBUGSERVER_BASENAME "lldb-server"
 #endif
 
-#if defined(__APPLE__)
-#define HAVE_LIBCOMPRESSION
+#if defined(HAVE_LIBCOMPRESSION)
 #include <compression.h>
 #endif
 
@@ -67,10 +66,7 @@
 #endif
       m_echo_number(0), m_supports_qEcho(eLazyBoolCalculate), m_history(512),
       m_send_acks(true), m_compression_type(CompressionType::None),
-      m_listen_url(), m_decompression_scratch_type(CompressionType::None),
-      m_decompression_scratch(nullptr) {
-  // Unused unless HAVE_LIBCOMPRESSION is defined.
-  (void)m_decompression_scratch_type;
+      m_listen_url() {
 }
 
 //----------------------------------------------------------------------
@@ -81,8 +77,10 @@
     Disconnect();
   }
 
+#if defined(HAVE_LIBCOMPRESSION)
   if (m_decompression_scratch)
     free (m_decompression_scratch);
+#endif
 
   // Stop the communications read thread which is used to parse all incoming
   // packets.  This function will block until the read thread returns.
Index: include/lldb/Host/Config.h.cmake
===================================================================
--- include/lldb/Host/Config.h.cmake
+++ include/lldb/Host/Config.h.cmake
@@ -33,4 +33,10 @@
 #cmakedefine HAVE_LIBCOMPRESSION
 #endif
 
+#ifndef HAVE_LIBCOMPRESSION
+#ifdef __APPLE__
+#define HAVE_LIBCOMPRESSION
+#endif
+#endif
+
 #endif // #ifndef LLDB_HOST_CONFIG_H
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to