https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120006
--- Comment #6 from Sam James <sjames at gcc dot gnu.org> --- (In reply to Avraham Hollander from comment #5) > So it could be code from either of those files. How would you narrow that > down further? What I usually do is: * Build it manually (git clone ... && cd ... && ./autogen.sh && ./configure && make, make sure The Thing works) * Build it again w/ `make clean && ./configure CFLAGS="-O2 -fipa-pta" && make` (or whatever flags), make sure I can reproduce * make clean, git clean -fdx to clean up * mkdir build-{good,bad,maybe} * cd into each of those, do ~/git/util-linux/configure CFLAGS="-O2 -fipa-pta" for bad, do ~/git/util-linux/configure for good & maybe * get a list of differing objects between build-good/ and build-bad/ * bisect the list of differing objects by copying and rerunning make (inside build-maybe) But that's when I have no idea. If I have a clue or idea that it's in a specific file, I may modify the build system first to just add -fipa-pta for a single file or object to see if it works. Or I'll read the build log from a regular build, and re-run the commands involved (put them in a script first, make sure it works) to make each object + relink the executable, then tweak it. (This is a rough outline of what I'm doing now.) If you want to very quickly confirm (sort of -- see below (*)), you can read the build.log, re-run that fsck-fsck.o comman with -fno-ipa-pta appended, then run the command which linked fsck. Does it work now? Repeat with fsck-monotonic.o to be sure. (*) This isn't strictly accurate because it could be something inside libmount.la libblkid.la libcommon.la.