[Bug c/7652] -Wswitch-break : Warn if a switch case falls through
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=7652 Michael Chapman changed: What|Removed |Added CC||michael.chapman at cortus dot com --- Comment #21 from Michael Chapman --- Created attachment 32716 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=32716&action=edit Proposed patch Patch to enable warnings (-Wswitch-fallthrough) when a switch case falls through. Enabled by -Wall.
[Bug c/7652] -Wswitch-break : Warn if a switch case falls through
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=7652 --- Comment #33 from Michael Chapman --- (In reply to Florian Weimer from comment #30) > (In reply to Manuel López-Ibáñez from comment #29) > > > I like the previous suggestion of using "goto LABEL;". In fact, the warning > > message could explicitly say "use % to silence this warning". > > Does this mean that you propose a GCC extension which allows to write this? > > goto 5; >case 5: > > I'm not sure if the extension is worth it, and it creates another source of > errors/unclarities if another switch branch is inserted before "case 5:". > It looks like fall-through, but it isn't one because the case labels aren't > aligned. Why an extension? What is wrong with:- goto case_5; case 5: case_5:
[Bug c/64186] New: Conversion of signed to unsigned of same rank not performed
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64186 Bug ID: 64186 Summary: Conversion of signed to unsigned of same rank not performed Product: gcc Version: 4.9.2 Status: UNCONFIRMED Severity: minor Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: michael.chapman at cortus dot com Created attachment 34192 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=34192&action=edit Test case which should return 0, but returns 1 I believe the attached test program should return 0 from main. However, it returns 1. This seems to be a common front end problem which applies to many versions of the compiler. Tested on:- gcc-4.6 (Ubuntu/Linaro 4.6.4-1ubuntu1~12.04) 4.6.4 and aps-gcc (GCC) 4.9.2 20141128 (Cortus) Adding an explicit cast of (unsigned short) just before x (as indicated in the comment in the attached test case) in the divide produces the correct result. My interpretation of the C99 conversion rules is that the conversion to unsigned short is what should happen implicitly. The code generated seems to suggest that an implicit conversion of x to signed int was performed.
[Bug c/64186] Conversion of signed to unsigned of same rank not performed
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64186 --- Comment #2 from Michael Chapman --- I think you are right. Geez you need to be a lawyer to understand this sometimes.
[Bug tree-optimization/68840] New: Wrong code in loop optimization
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68840 Bug ID: 68840 Summary: Wrong code in loop optimization Product: gcc Version: 5.1.0 Status: UNCONFIRMED Severity: major Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: michael.chapman at cortus dot com Target Milestone: --- Created attachment 36983 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=36983&action=edit Test case The loop counter (i) in the attached code runs of the end. The test (i < 4) seems to have been optimized away in the cunrolli pass. The attached test program exits with status 0 when compiled with gcc -O1. It aborts when compiled with gcc -O2 (and higher optimizations). Version information:- $ gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu 5.1.0-0ubuntu11~14.04.1' --with-bugurl=file:///usr/share/doc/gcc-5/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-5 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=c++98 --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-5-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-5-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-5-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix gcc version 5.1.0 (Ubuntu 5.1.0-0ubuntu11~14.04.1)