On Tue, Nov 19, 2013 at 11:04:25AM +0800, L. David Baron wrote:
> 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.

The spilling of "using namespace" across source files could also cause
some headaches.

Mike
_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform

Reply via email to