Thread View: gnu.gcc.bug
1 messages
1 total messages
Started by Thomas E. Shields
Wed, 05 Aug 1992 10:54
gcc-2.2.2 generates incorrect warning message
Author: Thomas E. Shields
Date: Wed, 05 Aug 1992 10:54
Date: Wed, 05 Aug 1992 10:54
157 lines
4775 bytes
4775 bytes
* GCC version: gcc-2.2.2
* Hardware: Intel System 302 (25 MHz 386/387)
* OS: Interactive Unix System V/386 Release 3.2 Version 3.0
* Configuration (config.status):
# GCC was configured as follows:
../gcc-2.2/configure --srcdir=../gcc-2.2 i386-isc
* Description:
The following example results in the warning message:
warning: comparison is always 1 due to limited range of data type
although the generated assembly code (both with and without optimization)
looks just fine to me
Tom Shields
===================== source file (gcc.bug.c) ============================
/* example derived from function "zdomap" in vftovp.c, as generated by
web2c version 5.851c (May 14 1992), from the Web/Pascal original, so
don't give me any grief about this stupid code */
int map ( c )
unsigned char c ;
{
if ( ( ( c >= 0 ) && ( c <= 127 ) ) || ( ( c >= 128 ) && ( c <= 131 ) )
|| ( ( c >= 133 ) && ( c <= 136 ) ) )
return 1;
else
return 2;
}
=================== end source file (gcc.bug.c) ==========================
==================== compile with gcc (no opt) ===========================
% gcc -v -g -S gcc.bug.c
Reading specs from /usr/local/lib/gcc-lib/i386-isc/2.2.2/specs
gcc version 2.2.2
/usr/local/lib/gcc-lib/i386-isc/2.2.2/cpp -lang-c -v -undef -D__GNUC__=2 -Dunix
-Di386 -D__unix__ -D__i386__ -D__unix -D__i386 -g gcc.bug.c /usr/tmp/cca13201.i
GNU CPP version 2.2.2 (80386, ATT syntax)
/usr/local/lib/gcc-lib/i386-isc/2.2.2/cc1 /usr/tmp/cca13201.i -quiet -dumpbase
gcc.bug.c -g -version -o gcc.bug.s
GNU C version 2.2.2 (80386, ATT syntax) compiled by GNU C version 2.2.2.
gcc.bug.c: In function `map':
gcc.bug.c:4: warning: comparison is always 1 due to limited range of data type
================== end compile with gcc (no opt) =========================
=============== assembly source (gcc.bug.s, no opt) ======================
.file "gcc.bug.c"
gcc2_compiled.:
.text
.align 4
.def map; .val map; .scl 2; .type 044; .endef
.globl map
map:
pushl %ebp
movl %esp,%ebp
movb 8(%ebp),%dl
movb %dl,8(%ebp)
.def .bf; .val .; .scl 101; .line 3; .endef
.def c; .val 8; .scl 9; .type 014; .endef
.def c; .val 8; .scl 1; .type 014; .endef
.ln 2
cmpb $127,8(%ebp)
jbe .L3
cmpb $127,8(%ebp)
jbe .L4
cmpb $131,8(%ebp)
jbe .L3
jmp .L4
.align 4
.L4:
cmpb $132,8(%ebp)
jbe .L2
cmpb $136,8(%ebp)
jbe .L3
jmp .L2
.align 4
.L3:
.ln 4
movl $1,%eax
jmp .L1
.align 4
jmp .L5
.align 4
.L2:
.ln 6
movl $2,%eax
jmp .L1
.align 4
.L5:
.ln 7
.ln 7
.L1:
.def .ef; .val .; .scl 101; .line 7; .endef
leave
ret
.def map; .val .; .scl -1; .endef
============= end assembly source (gcc.bug.s, no opt) ====================
====================== compile with gcc (opt) ============================
% gcc -v -g -O -S gcc.bug.c
Reading specs from /usr/local/lib/gcc-lib/i386-isc/2.2.2/specs
gcc version 2.2.2
/usr/local/lib/gcc-lib/i386-isc/2.2.2/cpp -lang-c -v -undef
-D__GNUC__=2 -Dunix -Di386 -D__unix__ -D__i386__ -D__unix -D__i386
-D__OPTIMIZE__ -g gcc.bug.c /usr/tmp/cca13217.i
GNU CPP version 2.2.2 (80386, ATT syntax)
/usr/local/lib/gcc-lib/i386-isc/2.2.2/cc1 /usr/tmp/cca13217.i -quiet
-dumpbase gcc.bug.c -g -O -version -o gcc.bug.s
GNU C version 2.2.2 (80386, ATT syntax) compiled by GNU C version 2.2.2.
gcc.bug.c: In function `map':
gcc.bug.c:4: warning: comparison is always 1 due to limited range of data type
==================== end compile with gcc (opt) ==========================
================= assembly source (gcc.bug.s, opt) =======================
% cat gcc.bug.s
.file "gcc.bug.c"
gcc2_compiled.:
.text
.align 4
.def map; .val map; .scl 2; .type 044; .endef
.globl map
map:
pushl %ebp
movl %esp,%ebp
movb 8(%ebp),%al
.def .bf; .val .; .scl 101; .line 3; .endef
.def c; .val 8; .scl 9; .type 04; .endef
.def c; .val 0; .scl 4; .type 014; .endef
.ln 2
cmpb $127,%al
jbe .L3
cmpb $131,%al
jbe .L3
cmpb $132,%al
jbe .L2
cmpb $136,%al
ja .L2
.L3:
.ln 4
movl $1,%eax
leave
ret
.align 4
.L2:
.ln 6
movl $2,%eax
.ln 7
leave
ret
.align 4
.def .ef; .val .; .scl 101; .line 7; .endef
.def map; .val .; .scl -1; .endef
=============== end assembly source (gcc.bug.s, opt) =====================
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads