https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93196
Bug ID: 93196 Summary: GCC compiles c code, provides no executable output with option -O2 Product: gcc Version: 5.4.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: xiehongbiao at sensetime dot com Target Milestone: --- Thanks for reading this. I'm using gcc 5.4.0 to compile an open source project gmp-6.1.2. Some errors happen in my Ubuntu16.04 mechine like below: checking compiler cc -m32 -O2 -pedantic -fomit-frame-pointer ... no checking compiler cc -O2 -pedantic -fomit-frame-pointer ... no, cmov instruction, program does not run configure: error: could not find a working compiler, see config.log for details By check the config.log the issue can be narrow down to be an option "-O2" lead to no executatle output in some special c code: jiaojiancheng@jiaojiancheng:~/test_compile$ cat conftest.c /* The following provokes an invalid instruction syntax from i386 gcc -march=pentiumpro on Solaris 2.8. The native sun assembler requires a non-standard syntax for cmov which gcc (as of 2.95.2 at least) doesn't know. */ #include "stdio.h" int n; int cmov () { return (n >= 0 ? n : 0); } int main () { return 0; } if run: gcc-5 -O1 -pedantic -fomit-frame-pointer -m64 conftest.c There is an "a.out" generated. This is expected behavior if run gcc-5 -O2 -pedantic -fomit-frame-pointer -m64 conftest.c Compiler doesn't report any message. But no "a.out" generated. Is that an normal benavior? if yes, does that mean the logic in gmp-6.1.2 have mistake. Thanks.