I should have made it clear but the patch doesn't affect zero initialization of global variables, they are zero-initialized at declaration time with LLVM's zeroinitializer.
On Apr 28, 2011, at 4:42 PM, Chandler Carruth wrote: > On Thu, Apr 28, 2011 at 4:36 PM, Chris Lattner <[email protected]> wrote: > > On Apr 28, 2011, at 3:57 PM, Argyrios Kyrtzidis wrote: > > > Author: akirtzidis > > Date: Thu Apr 28 17:57:55 2011 > > New Revision: 130453 > > > > URL: http://llvm.org/viewvc/llvm-project?rev=130453&view=rev > > Log: > > Cut down unnecessary zero'ing when value-initializing arrays of C++ objects. > > > > -C++ objects with user-declared constructor don't need zero'ing. > > Are you sure that this is true? Apparently the C++ standard requires that > global variables (at least) are zero initialized and that constructors can > take advantage of this. This is apparently well defined: > > struct foo { > int x; > > foo() { > ++x; > } > } f; > > I'm pretty sure that this doesn't apply to temporaries etc, but it would be > worth checking if you haven't already. > > I checked. Variables of static and thread storage must be zero initialized > first as you describe. This is governed by [basic.start.init]p2 in the C++11 > ISFD. > > The initialization chapter provides no such pre-initialization for the other > storage classes. > > > -Chris > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
