https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91130
--- Comment #1 from Martin Liška <marxin at gcc dot gnu.org> --- It's interesting that: echo "int main() {}" > main.c && gcc -c -flto main.c && gcc main.o -flto -MF deps/a.d -MMD is fine. I really suspect: $ cat ./gcc/d/lang-specs.h ... {".d", "@d", 0, 1, 0 }, {".dd", "@d", 0, 1, 0 }, {".di", "@d", 0, 1, 0 }, {"@d", "%{!E:d21 %i %(cc1_options) %I %{nostdinc*} %{i*} %{I*} %{J*} \ %{H} %{Hd*} %{Hf*} %{MD:-MD %b.deps} %{MMD:-MMD %b.deps} \ <--- THESE 2 probably %{M} %{MM} %{MF*} %{MG} %{MP} %{MQ*} %{MT*} \ %{X:-Xf %b.json} %{Xf*} \ %{v} %{!fsyntax-only:%(invoke_as)}}", 0, 1, 0 },