I am using version 0.12 of your patches with gcc 2.7.0, and came across
a possible bug in the checking library.
 
Please check 'check.c', around line 450:
 
static inline int
check_inequality (int result,
                  void *pointer1, void *pointer2, char *filename, int li
{
  object *obj1, *obj2;
  /* Doing an inequality operation against a NULL pointer is a strange t
   * to want to do. Against an ILLEGAL pointer, it's definitely wrong.
   */
  if (pointer1 == NULL || pointer2 == NULL ||
      pointer1 == ILLEGAL || pointer2 == ILLEGAL) {
 
I would suggest that the comment is wrong, or the code should read:
 
  if ((pointer1 == NULL && pointer2 == ILLEGAL) ||
      (pointer1 == ILLEGAL || pointer2 == NULL) ||
      (pointer1 == ILLEGAL && pointer2 == ILLEGAL)) {
This can of course be optimized by gcc...
 
Making this change enabled me to survive an otherwise valid pointer comp
 
BTW, did you know that gdb has trouble printing the pointer values used
in bounds-checking calls?  Perhaps the values are stored in registers
and don't survive a signal...
 
Anyway, thanks for the good work.  I'm currently trying to debug perl,
and am learning a lot about gcc in the process.
 
Hildo Biersma
