You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Three findings from the whole-branch review, two of them defects introduced
by this batch.
1. diag::flush() was never called outside its own unit test. The one new
degradation this branch introduces (#257's windows + non-MSVC "no depfile"
case) would print its warning and then be ignored, and `mcpp build
--strict` would still exit 0. The channel built to stop silent degradation
was itself silently degrading. BuildContext now carries `strict` and
run_build_plan calls flush() after the build — after, because backend
emission is where degradations are discovered, so end-of-prepare_build
would be too early.
2. `-MMD` was applied to `.s` as well as `.S`. The C driver preprocesses `.S`
but not `.s`, so clang emits two `argument unused during compilation`
warnings per file and writes no depfile (measured on 20.1.7; gcc writes
none either, just quietly) — and ninja's `deps = gcc` treats an absent
depfile as an error, so the cases cannot share a rule. Split into
asm_object (.S, tracked) and asm_object_raw (.s, pre-#257 shape).
3. The feature axis was still folding its per-glob flags field-by-field
rather than through append(BuildInputs&), so the "one funnel for both
axes" claim held for only one axis. Now routed through append. The other
two feature tables stay out on purpose and the comment says why: feature
`sources` carry DROP-then-ADD semantics, and feature `defines` are
interface contributions that propagate along Public edges — neither is a
plain append, so neither belongs in BuildInputs.
Also fixes an ordering bug found while re-reading the #254 change: the target
platform was computed at the top of prepare_build, but overrides.target_triple
is only filled in from `[build] target` / the config default and canonicalized
some 200 lines later. Any project that sets its target in the manifest rather
than on the command line would have silently fallen back to the host axis —
the exact bug #254 is about, reintroduced one level up. Moved below the
resolution block, with a comment recording why it cannot move back.
0 commit comments