On Monday 2013-11-18 18:44 -0500, Ehsan Akhgari wrote: > On 2013-11-17 7:50 PM, L. David Baron wrote: > >On Sunday 2013-11-17 16:45 -0800, Jonas Sicking wrote: > >>On Thu, Nov 14, 2013 at 2:49 PM, Ehsan Akhgari <ehsan.akhg...@gmail.com> > >>wrote: > >>>I've started to work on a project in my spare time to switch us to use > >>>unified builds for C/C++ compilation. The way that unified builds work is > >>>by using the UNIFIED_SOURCES instead of the SOURCES variable in moz.build > >>>files. With that, the build system creates files such as: > >>> > >>>// Unified_cpp_path_0.cpp > >>>#include "Source1.cpp" > >>>#include "Source2.cpp" > >>>// ... > >> > >>Doesn't this negate the advantage of static global variables. I.e. > >>when changing how you use a static global, rather than just auditing > >>the .cpp file where that static global lives, you now how to audit all > >>.cpp files that are "unified together". > > > >Could we do a static analysis to look for things whose semantics are > >changed by this unification, such as statics with the same name > >between files that are/might be unified? (And could we make the > >tree turn red if it failed?) > > That analysis is quite hard to perform if we try to catch all kinds > of such leakage. I think a periodic non-unified build is a much > better way of discovering such problems.
I'm inclined to think it'll need to be more than periodic, actually. I expect that otherwise we'd get pretty frequent bustage with people forgetting to add #includes, and that bustage would then show up when we add or remove files, which would make it a huge pain to add or remove files. But I'm actually also worried (perhaps *more* worried) about cases where there are semantic differences but things will still compile, such as two static variables of the same name and type, in different files (e.g., "static bool gInitialized"). We could end up with breakage both because of code that expects such variables to be distinct, or from new code that expects such variables to be merged. -David -- 𝄞 L. David Baron http://dbaron.org/ 𝄂 𝄢 Mozilla https://www.mozilla.org/ 𝄂 Before I built a wall I'd ask to know What I was walling in or walling out, And to whom I was like to give offense. - Robert Frost, Mending Wall (1914)
signature.asc
Description: Digital signature
_______________________________________________ dev-platform mailing list dev-platform@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-platform