[Bug c/7652] -Wswitch-break : Warn if a switch case falls through

2014-04-30 Thread michael.chapman at cortus dot com
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

2014-04-30 Thread michael.chapman at cortus dot com
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

2014-12-04 Thread michael.chapman at cortus dot com
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

2014-12-04 Thread michael.chapman at cortus dot com
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

2015-12-10 Thread michael.chapman at cortus dot com
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)