[compiler-rt] f3f4bc8 - [NFC] [scudo] syntax-check DCHECK arguments if DCHECK is off

Florian Mayer via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 17 16:56:56 PST 2023


Author: Florian Mayer
Date: 2023-01-17T16:56:49-08:00
New Revision: f3f4bc814bfe1131f7ab30eed03a825bf47521ea

URL: https://github.com/llvm/llvm-project/commit/f3f4bc814bfe1131f7ab30eed03a825bf47521ea
DIFF: https://github.com/llvm/llvm-project/commit/f3f4bc814bfe1131f7ab30eed03a825bf47521ea.diff

LOG: [NFC] [scudo] syntax-check DCHECK arguments if DCHECK is off

This is a widespread technique, used in at least:

* ABSL: https://github.com/abseil/abseil-cpp/blob/master/absl/log/internal/check_op.h#L52
* Chromium: https://source.chromium.org/chromium/chromium/src/+/main:base/check.h;l=185?q=DCHECK%20f:base&ss=chromium
* Android: https://cs.android.com/android/platform/superproject/+/master:system/libbase/include/android-base/logging.h;drc=bda7f0a0cc945c860713a1dc497919f17fad1651;l=321

Reviewed By: Chia-hungDuan, vitalybuka

Differential Revision: https://reviews.llvm.org/D141713

Added: 
    

Modified: 
    compiler-rt/lib/scudo/standalone/internal_defs.h

Removed: 
    


################################################################################
diff  --git a/compiler-rt/lib/scudo/standalone/internal_defs.h b/compiler-rt/lib/scudo/standalone/internal_defs.h
index 621fc9c45e952..27c6b451ffe72 100644
--- a/compiler-rt/lib/scudo/standalone/internal_defs.h
+++ b/compiler-rt/lib/scudo/standalone/internal_defs.h
@@ -133,25 +133,25 @@ void NORETURN reportCheckFailed(const char *File, int Line,
 #else
 #define DCHECK(A)                                                              \
   do {                                                                         \
-  } while (false)
+  } while (false && (A))
 #define DCHECK_EQ(A, B)                                                        \
   do {                                                                         \
-  } while (false)
+  } while (false && (A) == (B))
 #define DCHECK_NE(A, B)                                                        \
   do {                                                                         \
-  } while (false)
+  } while (false && (A) != (B))
 #define DCHECK_LT(A, B)                                                        \
   do {                                                                         \
-  } while (false)
+  } while (false && (A) < (B))
 #define DCHECK_LE(A, B)                                                        \
   do {                                                                         \
-  } while (false)
+  } while (false && (A) <= (B))
 #define DCHECK_GT(A, B)                                                        \
   do {                                                                         \
-  } while (false)
+  } while (false && (A) > (B))
 #define DCHECK_GE(A, B)                                                        \
   do {                                                                         \
-  } while (false)
+  } while (false && (A) >= (B))
 #endif
 
 // The superfluous die() call effectively makes this macro NORETURN.


        


More information about the llvm-commits mailing list