http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57242
--- Comment #6 from etherice <scottbaldwin at gmail dot com> ---
(In reply to Richard Biener from comment #5)
> (In reply to etherice from comment #4)
> > (In reply to Andrew Pinski from comment #1)
> > > This is by design as -g changes the information produced by the front-end
> > > and maybe even predefines too.
> >
> > I created a simpler test to demonstrate the bug. Two files:
> >
> > ----------
> > pch.hpp
> > ----------
> > #ifndef __PCH_HPP__
> > #define __PCH_HPP__
> > #pragma message "[ not using pre-compiled headers ]"
> > #include <iostream>
> > #endif
> >
> > ----------
> > test.cpp
> > ----------
> > #include <pch.hpp>
> > int main() {
> > std::cout << "hello world" << std::endl;
> > return 0;
> > }
> >
> > ----------
> >
> > If you run commands [1] and [2] below, you will notice that pch is ignored.
> >
> > [1] g++ -I. pch.hpp -o pch.hpp.gch
> > [2] g++ -I. -c test.cpp -o test.o
> > [3] g++ -I. -c test.cpp -o test.o -include pch.hpp
>
> How? I see
>
> rguenther@murzim:/tmp> g++-4.7 -I. pch.hpp -o pch.hpp.gch
> pch.hpp:3:19: note: #pragma message: [ not using pre-compiled headers ]
> rguenther@murzim:/tmp> g++-4.7 -I. -c test.cpp -o test.o
> rguenther@murzim:/tmp> g++-4.7 -I. -c test.cpp -o test.o -include pch.hpp
>
> rguenther@murzim:/tmp> g++-4.8 -I. pch.hpp -o pch.hpp.gch
> pch.hpp:3:19: note: #pragma message: [ not using pre-compiled headers ]
> #pragma message "[ not using pre-compiled headers ]"
> ^
> rguenther@murzim:/tmp> g++-4.8 -I. -c test.cpp -o test.o
> rguenther@murzim:/tmp> g++-4.8 -I. -c test.cpp -o test.o -include pch.hpp
>
> the issue is probably that there are pre-installed precompiled headers
> for libstdc++ which use certain flags. Maybe in your case this confuses
> things? (disclaimer: I always install gcc built with
> --disable-libstdcxx-pch)
> Try removing them.
I did a clean rebuild of 4.8 with --disable-libstdcxx-pch and results were the
same, pch ignored, but... after triple-checking some things I realized ccache
was still being used.
Once ccache was disabled, the issue went away and gcc-pch worked as expected.
So this appears to be a bug with ccache, not gcc.
Fortunately, the workaround is simple (using '-g3' or the '-include' option).