Package: gcc-4.2 Version: 4.2.1-5 Severity: normal % cat > t.c << EOF void foo() { foo(); } EOF
% gcc -O -S -o - -fomit-frame-pointer -Wall t.c .file "t.c" .text .globl foo .type foo, @function foo: rep ; ret .size foo, .-foo .ident "GCC: (GNU) 4.2.1 (Debian 4.2.1-5)" .section .note.GNU-stack,"",@progbits As far as I know, there are two acceptable behaviours for function foo(): - loop indefinitely (if tail recursion is used) - overflow the stack (if tail recursion is not used) As soon as -O is used on x86-32, GCC generates code that just returns ("rep ; ret"). Note that the bug is also present with the following Ada program: procedure U begin U; end U; although the Ada front-end warns about a possibly infinite recursion. The very same code gets generated. This may be platform-specific and generates bogus code with any non-O0 optimization level. -- System Information: Debian Release: lenny/sid APT prefers unstable APT policy: (990, 'unstable'), (500, 'testing'), (500, 'stable'), (1, 'experimental') Architecture: i386 (i686) Kernel: Linux 2.6.22-rc5 Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8) (ignored: LC_ALL set to en_US.UTF-8) Shell: /bin/sh linked to /bin/bash Versions of packages gcc-4.2 depends on: ii binutils 2.18-1 The GNU assembler, linker and bina ii cpp-4.2 4.2.1-5 The GNU C preprocessor ii gcc-4.2-base 4.2.1-5 The GNU Compiler Collection (base ii libc6 2.6.1-5 GNU C Library: Shared libraries ii libgcc1 1:4.2.1-5 GCC support library ii libgomp1 4.2.1-5 GCC OpenMP (GOMP) support library Versions of packages gcc-4.2 recommends: ii libc6-dev 2.6.1-5 GNU C Library: Development Librari ii libmudflap0-4.2-dev 4.2.1-5 GCC mudflap support libraries (dev -- no debconf information -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]