New comment by dnkl on void-packages repository https://github.com/void-linux/void-packages/issues/29526#issuecomment-872740075 Comment: > since PGO is affected by the CPU that's being used. It's actually not. PGO counts functions and branches executed, and helps re-organize the code; it clusters "hot" functions, to improve cache locality. It can also re-arrange code within a function to make the "normal" path the fast path (i.e. placing the not-often executed branches at e.g. the end of the function). But PGO in itself does not emit CPU specific instructions, nor does it depend on CPU-specific knowledge for e.g. instruction scheduling. Over at nix, @sternenseemann has been able to do reproducable PGO builds. That is, builds on different systems produce identical output. I can't for my life find the issue, or comment, where I saw this, but pretty sure sterni can fill in the details, if needed. Oh, and as a bonus, PGO builds tend to be smaller (in binary size) than regular release builds. This is _at least_ true for LTO builds (which I strongly recommend building foot with, with or without PGO).