|  | @@ -122,7 +122,17 @@ extern INLINE double U64_TO_DBL(uint64_t x) {
 | 
	
		
			
				|  |  |  #define ATTR_CONST __attribute__((const))
 | 
	
		
			
				|  |  |  #define ATTR_MALLOC __attribute__((malloc))
 | 
	
		
			
				|  |  |  #define ATTR_NORETURN __attribute__((noreturn))
 | 
	
		
			
				|  |  | -#define ATTR_NONNULL(x) __attribute__((nonnull x))
 | 
	
		
			
				|  |  | +/* Alas, nonnull is not at present a good idea for us.  We'd like to get
 | 
	
		
			
				|  |  | + * warnings when we pass NULL where we shouldn't (which nonnull does, albeit
 | 
	
		
			
				|  |  | + * spottily), but we don't want to tell the compiler to make optimizations
 | 
	
		
			
				|  |  | + * with the assumption that the argument can't be NULL (since this would make
 | 
	
		
			
				|  |  | + * many of our checks go away, and make our code less robust against
 | 
	
		
			
				|  |  | + * programming errors).  Unfortunately, nonnull currently does both of these
 | 
	
		
			
				|  |  | + * things, and there's no good way to split them up.
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  | + * #define ATTR_NONNULL(x) __attribute__((nonnull x)) */
 | 
	
		
			
				|  |  | +#define ATTR_NONNULL(x)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  /** Macro: Evaluates to <b>exp</b> and hints the compiler that the value
 | 
	
		
			
				|  |  |   * of <b>exp</b> will probably be true. */
 | 
	
		
			
				|  |  |  #define PREDICT_LIKELY(exp) __builtin_expect((exp), 1)
 |