https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115047
--- Comment #1 from Jørgen Kvalsvik <j at lambda dot is> --- gcc is not wrong here - f(1, 0, 0) = false, while f(1, 0, 1) = true so clearly c has an independent effect on the outcome here, and both its values has been observed. I think clang measures unique-cause and not masking MC/DC which probably explains the difference (at least clang's documentation [1] does not specify which form it measures. Since more than one variable change between the two test vectors I assume that would be it. I don't have clang 19 available right now, does f(0, 0, 1); f(0, 0, 0); cover c? [1] https://clang.llvm.org/docs/SourceBasedCodeCoverage.html#mc-dc-instrumentation