小松です。

AIXのgccのデフォルトのcharの型がunsignedのようなので、
以下のようなwarningが出てしまいます。
ccもcharデフォルトはunsigned。

        gcc -O2 -I. -I. -I/usr/local/include -c y.tab.c
parse.y: In function `read_escape':
parse.y:1886: warning: comparison is always 0 due to limited range of data type
parse.y: In function `yylex':
parse.y:3132: warning: comparison is always 1 due to limited range of data type
    ……
        gcc -O2 -I. -I. -I/usr/local/include  -c string.c
string.c: In function `rb_str_succ':
string.c:715: warning: comparison is always 0 due to limited range of data type
string.c: In function `tr_trans':
string.c:1718: warning: comparison is always 0 due to limited range of data type

下の例のようにcharがunsignedだと、char c = -1;
の後の(c == -1)はfalseです。

オプションを指定して、
    env CFLAGS='-O2 -fsigned-char' ./configure \\
	--with-readline-dir=/usr/local
とか、
    env CC=cc CFLAGS='-O -qchars=signed -qmaxmem=8192' ./configure \
	    --with-readline-dir=/usr/local
とかすれば済みますが、
parse.y, string.cの-1を(char)-1にした方が安全かな?

	/	/	/

% echo `uname -s; oslevel`
AIX 4.1.3.0
% cat char.c
#include <stdio.h>
int main()
{
    char c = -1;
    if (c == -1)
	printf("c == -1\n");
    else
	printf("c != -1\n");
    if (c == (char)-1)
	printf("c == (char)-1\n");
    else
	printf("c != (char)-1\n");
    return 0;
}
% cc char.c; ./a.out
c != -1
c == (char)-1
% cc -qchars=unsigned char.c; ./a.out
c != -1
c == (char)-1
% cc -qchars=signed char.c; ./a.out
c == -1
c == (char)-1
% gcc char.c; ./a.out
char.c: In function `main':
char.c:5: warning: comparison is always 0 due to limited range of data type
c != -1
c == (char)-1
% gcc -funsigned-char char.c; ./a.out
char.c: In function `main':
char.c:5: warning: comparison is always 0 due to limited range of data type
c != -1
c == (char)-1
% gcc -fsigned-char char.c; ./a.out
c == -1
c == (char)-1
% 

--
小松克行 / Katsuyuki Komatsu <komatsu / sarion.co.jp>