Add lengthof and endof templates that hide a lot of sizeof computations.
Patch by Sterling Stein!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41758 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/System/Unix/Signals.inc b/lib/System/Unix/Signals.inc
index d1493a2..b790e05 100644
--- a/lib/System/Unix/Signals.inc
+++ b/lib/System/Unix/Signals.inc
@@ -13,6 +13,7 @@
 //===----------------------------------------------------------------------===//
 
 #include "Unix.h"
+#include "llvm/ADT/STLExtras.h"
 #include <vector>
 #include <algorithm>
 #if HAVE_EXECINFO_H
@@ -40,7 +41,7 @@
 const int IntSigs[] = {
   SIGHUP, SIGINT, SIGQUIT, SIGPIPE, SIGTERM, SIGUSR1, SIGUSR2
 };
-const int *IntSigsEnd = IntSigs + sizeof(IntSigs)/sizeof(IntSigs[0]);
+const int *IntSigsEnd = array_endof(IntSigs);
 
 // KillSigs - Signals that are synchronous with the program that will cause it
 // to die.
@@ -50,7 +51,7 @@
   , SIGEMT
 #endif
 };
-const int *KillSigsEnd = KillSigs + sizeof(KillSigs)/sizeof(KillSigs[0]);
+const int *KillSigsEnd = array_endof(KillSigs);
 
 #ifdef HAVE_BACKTRACE
 void* StackTrace[256];
@@ -68,7 +69,7 @@
 void PrintStackTrace() {
 #ifdef HAVE_BACKTRACE
   // Use backtrace() to output a backtrace on Linux systems with glibc.
-  int depth = backtrace(StackTrace, sizeof(StackTrace)/sizeof(StackTrace[0]));
+  int depth = backtrace(StackTrace, array_lengthof(StackTrace));
   
   // Create a one-way unix pipe.  The backtracing process writes to PipeFDs[1],
   // the c++filt process reads from PipeFDs[0].