------- Comment #3 from ebotcazou at gcc dot gnu dot org 2010-02-11 12:23 ------- I'll write a book about -fstack-check someday... -fstack-check was severely broken during the GCC3 -> GCC4 transition and, despite years of patches posting and pinging, only GCC 4.5 has the beginning of a working implementation, so anything between 4.0 and 4.4 must be forgotten since totally broken.
And, again despite posted patches, the 4.5 implementation only restores the old implementation available in the 3.x series, which doesn't work for this case: e...@atlantis:~/build/gcc/native32> ~/install/gcc-3_4-branch/bin/gcc -v Reading specs from /home/eric/install/gcc-3_4-branch/lib/gcc/x86_64-suse-linux/3.4.6/specs Configured with: /home/eric/svn/gcc-3_4-branch/configure x86_64-suse-linux --prefix=/home/eric/install/gcc-3_4-branch --enable-languages=c,c++,objc,f77,java,ada --enable-__cxa_atexit Thread model: posix gcc version 3.4.6 e...@atlantis:~/build/gcc/native32> ~/install/gcc-3_4-branch/bin/gcc -m32 -S pr43013.c e...@atlantis:~/build/gcc/native32> ~/install/gcc-3_4-branch/bin/gcc -m32 -S pr43013.c -fstack-check pr43013.c: In function `foo': pr43013.c:6: error: label 'lab' used before containing binding contour Granted, we now generate wrong code instead of erroring out, but it's again a fallout of the GCC3 -> GCC4 breakage, not of my patches. This will be fixed once the improved implementation is merged. ETA is 4.6, for x86/x86-64 at least. -- ebotcazou at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|[4.4/4.5 Regression] |[4.5 Regression] "warning: |"warning: 'saved_stack.1' is|'saved_stack.1' is used |used uninitialized in this |uninitialized in this |function" with -fstack-check|function" with -fstack-check http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43013