https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70129
chuck cranor <chuck at ece dot cmu.edu> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |chuck at ece dot cmu.edu --- Comment #3 from chuck cranor <chuck at ece dot cmu.edu> --- If the only difference between "-isystem" and "-I" was the change in the handling of warnings, the #include_next of stdlib.h in libstdc++ would not be a problem. The real problem here is that "-isystem /usr/include" changes the include search path in a way that is incompatible with "-I /usr/include" e.g. % cat try.cc #include <cstdlib> % g++ -c try.cc % g++ -I /usr/include -c try.cc % g++ -isystem /usr/include -c try.cc In file included from try.cc:1:0: /proj/testbed/data/travis/cache/gcc/include/c++/6.2.0/cstdlib:75:25: fatal error: stdlib.h: No such file or directory #include_next <stdlib.h> ^ compilation terminated. % I think you'll find most build systems that do "-isystem /usr/include" instead of "-I /usr/include" are only using "-isystem" for the change in the warning behavior. The change in the include path order is not wanted...