https://gcc.gnu.org/bugzilla/show_bug.cgi?id=49401
Martin Sebor <msebor at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed|2012-03-05 00:00:00 |2015-12-01 CC| |msebor at gcc dot gnu.org Known to work| |4.5.3 Ever confirmed|0 |1 Known to fail| |4.7.0, 4.8.5, 4.9.3, 5.1.0, | |6.0 --- Comment #2 from Martin Sebor <msebor at gcc dot gnu.org> --- Warning confirmed with GCC 4.8.5, 4.9.3, 5.1.0, and the latest trunk on both x86_64 and powerpc64le (i.e., it's most likely not architecture specific). GCC 4.5.3 doesn't complain. The return type of foo() matters, as does the goto statement. $ cat pr49401.c && /build/gcc-trunk-svn/gcc/xgcc -B /build/gcc-trunk-svn/gcc -O2 -S -Wall -Werror -Wextra pr49401.c extern int foo (void); int mep_pragma_coprocessor_subclass (int *a) { if (!a) goto error; int rclass; int c = foo (); if (c >= 0 && c <= 1) switch (c) { case 0: rclass = 0; break; case 1: rclass = 1; break; } else return 0; return a [rclass]; error: return 2; }