On Fri, Nov 22, 2013 at 04:38:58PM +0100, Dodji Seketeli wrote: > Jakub Jelinek <ja...@redhat.com> writes: > > > --- gcc/cgraph.h.jj 2013-11-13 18:32:52.000000000 +0100 > > +++ gcc/cgraph.h 2013-11-15 12:05:25.950985500 +0100 > > @@ -520,6 +520,11 @@ class GTY((tag ("SYMTAB_VARIABLE"))) var > > public: > > /* Set when variable is scheduled to be assembled. */ > > unsigned output : 1; > > + /* Set if the variable is dynamically initialized. Not set for > > + function local statics or variables that can be initialized in > > + multiple compilation units (such as template static data members > > + that need construction). */ > > + unsigned asan_dynamically_initialized : 1; > > }; > > Maybe this could just be called dynamically_initialized? It's just used > by asan today, but it looks like an information that could be used more > generally, independently from asan.
I used that name initially, but then changed it, because it actually is quite asan specific. E.g. template static data members are dynamically initialized, but we intentionally don't set asan_dynamically_initialized on those, because their initializer can be called from multiple CUs, there is no CU that owns the variable. > > /* If we're using __cxa_atexit, register a function that calls the > > destructor for the object. */ > > @@ -3498,6 +3507,9 @@ do_static_initialization_or_destruction > > tf_warning_or_error); > > finish_if_stmt_cond (cond, init_if_stmt); > > > > + if (flag_sanitize & SANITIZE_ADDRESS) > > + finish_expr_stmt (asan_dynamic_init_call (/*after_p=*/false)); > > + Will add the comments. > Also, do we have some tests for this? I am not sure how I'd write > multi-tu dejagnu tests for this myself though ;-) I've postponed tests for stage3, when I find spare time I'll try to port libsanitizer tests that are applicable to gcc over to dejagnu, plus perhaps add new tests as needed. Jakub