Do not do null pointer arithmetic

Let me introduce builtin function instead.

This is a preparation CL to remove -Wno-null-pointer-arithmetic warning suppression.

Bug: chromium:766891
Change-Id: I05434ba0c525fd2fddf916c042d1443b1f25d7d7
Reviewed-on: https://pdfium-review.googlesource.com/c/44191
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/third_party/base/logging.h b/third_party/base/logging.h
index 2aeca31..76555f5 100644
--- a/third_party/base/logging.h
+++ b/third_party/base/logging.h
@@ -9,16 +9,15 @@
 #include <stdlib.h>
 
 #ifndef _WIN32
-#define NULL_DEREF_IF_POSSIBLE \
-  *(reinterpret_cast<volatile char*>(NULL) + 42) = 0x42;
+#define NULL_DEREF_IF_POSSIBLE __builtin_unreachable()
 #else
-#define NULL_DEREF_IF_POSSIBLE
+#define NULL_DEREF_IF_POSSIBLE __assume(0)
 #endif
 
 #define CHECK(condition)   \
   if (!(condition)) {      \
     abort();               \
-    NULL_DEREF_IF_POSSIBLE \
+    NULL_DEREF_IF_POSSIBLE;\
   }
 
 // TODO(palmer): These are quick hacks to import PartitionAlloc with minimum