diff -cpr pgsql-orig/src/include/c.h pgsql/src/include/c.h
*** pgsql-orig/src/include/c.h	2006-01-19 23:17:21.000000000 +0900
--- pgsql/src/include/c.h	2006-01-20 01:33:04.000000000 +0900
*************** typedef NameData *Name;
*** 603,610 ****
  	} while (0)
  
  
! /* Get a bit mask of the bits set in non-int32 aligned addresses */
! #define INT_ALIGN_MASK (sizeof(int32) - 1)
  
  /*
   * MemSet
--- 603,610 ----
  	} while (0)
  
  
! /* Get a bit mask of the bits set in non-long aligned addresses */
! #define LONG_ALIGN_MASK (sizeof(long) - 1)
  
  /*
   * MemSet
*************** typedef NameData *Name;
*** 626,638 ****
  		int		_val = (val); \
  		Size	_len = (len); \
  \
! 		if ((((long) _vstart) & INT_ALIGN_MASK) == 0 && \
! 			(_len & INT_ALIGN_MASK) == 0 && \
  			_val == 0 && \
  			_len <= MEMSET_LOOP_LIMIT) \
  		{ \
! 			int32 *_start = (int32 *) _vstart; \
! 			int32 *_stop = (int32 *) ((char *) _start + _len); \
  			while (_start < _stop) \
  				*_start++ = 0; \
  		} \
--- 626,638 ----
  		int		_val = (val); \
  		Size	_len = (len); \
  \
! 		if ((((long) _vstart) & LONG_ALIGN_MASK) == 0 && \
! 			(_len & LONG_ALIGN_MASK) == 0 && \
  			_val == 0 && \
  			_len <= MEMSET_LOOP_LIMIT) \
  		{ \
! 			long *_start = (long *) _vstart; \
! 			long *_stop = (long *) ((char *) _start + _len); \
  			while (_start < _stop) \
  				*_start++ = 0; \
  		} \
*************** typedef NameData *Name;
*** 651,665 ****
  #define MemSetAligned(start, val, len) \
  	do \
  	{ \
! 		int32  *_start = (int32 *) (start); \
  		int		_val = (val); \
  		Size	_len = (len); \
  \
! 		if ((_len & INT_ALIGN_MASK) == 0 && \
  			_val == 0 && \
  			_len <= MEMSET_LOOP_LIMIT) \
  		{ \
! 			int32 *_stop = (int32 *) ((char *) _start + _len); \
  			while (_start < _stop) \
  				*_start++ = 0; \
  		} \
--- 651,665 ----
  #define MemSetAligned(start, val, len) \
  	do \
  	{ \
! 		long  *_start = (long *) (start); \
  		int		_val = (val); \
  		Size	_len = (len); \
  \
! 		if ((_len & LONG_ALIGN_MASK) == 0 && \
  			_val == 0 && \
  			_len <= MEMSET_LOOP_LIMIT) \
  		{ \
! 			long *_stop = (long *) ((char *) _start + _len); \
  			while (_start < _stop) \
  				*_start++ = 0; \
  		} \
*************** typedef NameData *Name;
*** 677,691 ****
   * this approach.
   */
  #define MemSetTest(val, len) \
! 	( ((len) & INT_ALIGN_MASK) == 0 && \
  	(len) <= MEMSET_LOOP_LIMIT && \
  	(val) == 0 )
  
  #define MemSetLoop(start, val, len) \
  	do \
  	{ \
! 		int32 * _start = (int32 *) (start); \
! 		int32 * _stop = (int32 *) ((char *) _start + (Size) (len)); \
  	\
  		while (_start < _stop) \
  			*_start++ = 0; \
--- 677,691 ----
   * this approach.
   */
  #define MemSetTest(val, len) \
! 	( ((len) & LONG_ALIGN_MASK) == 0 && \
  	(len) <= MEMSET_LOOP_LIMIT && \
  	(val) == 0 )
  
  #define MemSetLoop(start, val, len) \
  	do \
  	{ \
! 		long * _start = (long *) (start); \
! 		long * _stop = (long *) ((char *) _start + (Size) (len)); \
  	\
  		while (_start < _stop) \
  			*_start++ = 0; \
