================
Comment at: lib/Basic/LangOptions.cpp:17-21
@@ -16,3 +16,7 @@
 
-const SanitizerOptions SanitizerOptions::Disabled = {};
+const SanitizerOptions SanitizerOptions::Disabled = {
+#define SANITIZER(NAME, ID) 0,
+#include "clang/Basic/Sanitizers.def"
+};
+
 
----------------
Edwin Vane wrote:
> Dmitri Gribenko wrote:
> > Edwin Vane wrote:
> > > Dmitri Gribenko wrote:
> > > > David Blaikie wrote:
> > > > > Not sure of the motivation for this change - shouldn't the {} in the 
> > > > > original code produce the same effect (zero initializing all the 
> > > > > elements)?
> > > > I have mixed feelings about this.  -Wmissing-field-initializers is a 
> > > > different thing: all members are initialized by {}, but gcc complains 
> > > > that initializers are not explicitly spelled in the source.
> > > Is it a problem to explicitly do the initialization to make gcc happy if 
> > > it has the same result as {}? I wasn't aware empty braces was defined to 
> > > cause all fields to be initialized to 0.
> > It just adds noise to satisfy the warning.  In this particular case it is 
> > not actually that bad, since SanitizerOptions is generated by the same .def 
> > file, so it will not go out of sync.
> > 
> Would you prefer using default constructor instead? At least I was able to 
> find defined behaviour for this situation:
> 
> const SanitizerOptions SanitizerOptions::Disabled = SanitizerOptions();
This is dynamic initialization, if I'm reading [basic.init.start] correctly.  
(But Clang does it as static initialization because it is allowed to do so, but 
not required.)  #define/#include is better.


http://llvm-reviews.chandlerc.com/D342
_______________________________________________
cfe-commits mailing list
cfe-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to