if you give the compiler the same inputs, including flags, you will get the same out.
In the situation you're describing the inputs are being changed on each run. You can think of a compiler as a function. And your source code is not the only input.
Some compilers make controlling inputs impossible, thus you can't get a bit-for-bit binary that's identical for each compiler run.
Compilers are deterministic. For a given set of inputs you will get the same output.