Re: Symbol table 21/many: analyze initializers of external vars

2012-05-21 Thread Jan Hubicka
+ 2012-05-17  Jan Hubicka  j...@suse.cz + +       * lto-symtab.c (lto_symtab_resolve_symbols): Preffer decl with constructor +       over decl without. +       * cgraph.c (cgraph_remove_node): Clear also body of unanalyzed nodes. +       * cgraph.h

Re: Symbol table 21/many: analyze initializers of external vars

2012-05-20 Thread H.J. Lu
On Thu, May 17, 2012 at 9:42 AM, Jan Hubicka hubi...@ucw.cz wrote: Hi, C++ virtual tables keyed to other compilation units are represented as DECL_EXTERNAL variables with constructor known. Knowhing the constructor helps constant folding to do devirtualization. At the moment these

Re: Symbol table 21/many: analyze initializers of external vars

2012-05-18 Thread Eric Botcazou
Bootstrapped/regtested x86_64-linux, comitted. It presumably breaks Ada bootstrap on x86/Linux: /home/eric/build/gcc/native32/./prev-gcc/xgcc -B/home/eric/build/gcc/native32/./prev-gcc/ -B/home/eric/install/gcc/i586-suse-linux/bin/ -B/home/eric/install/gcc/i586-suse-linux/bin/

Re: Symbol table 21/many: analyze initializers of external vars

2012-05-18 Thread Jan Hubicka
Bootstrapped/regtested x86_64-linux, comitted. It presumably breaks Ada bootstrap on x86/Linux: I suppose so. I tested x86_64/linux with Ada. /home/eric/build/gcc/native32/./prev-gcc/xgcc -B/home/eric/build/gcc/native32/./prev-gcc/ -B/home/eric/install/gcc/i586-suse-linux/bin/

Re: Symbol table 21/many: analyze initializers of external vars

2012-05-18 Thread Eric Botcazou
The problem here seems to be that Ada constructs an variable that is DECL_EXTERNAL, passes const_value_known_p and has DECL_INITIAL, yet its TREE_STATIC is not set. C++ always output those variables with TREE_STATIC set and to be honest, I am unsure what is intended semantics of this flag in

Re: Symbol table 21/many: analyze initializers of external vars

2012-05-18 Thread Eric Botcazou
OK, does the following patch fix the problem? I will try to understand how conistent is C++ frontend about the flags. It would be nice to have safer way to declare the static var in other unit than combination of EXTERNAL and STATIC... Not sufficient it seems:

Re: Symbol table 21/many: analyze initializers of external vars

2012-05-18 Thread Jan Hubicka
OK, does the following patch fix the problem? I will try to understand how conistent is C++ frontend about the flags. It would be nice to have safer way to declare the static var in other unit than combination of EXTERNAL and STATIC... Not sufficient it seems:

Re: Symbol table 21/many: analyze initializers of external vars

2012-05-18 Thread Jan Hubicka
Hi, my apologize for the breakage. I somehow missed Ada in --enable-languages list. I've comitted the following fix that also cures enable checking failure of g++.dg/torture/pr46154.C Honza * cgraphunit.c (varpool_finalize_decl): Allow external decls.

Re: Symbol table 21/many: analyze initializers of external vars

2012-05-18 Thread Eric Botcazou
my apologize for the breakage. I somehow missed Ada in --enable-languages list. I've comitted the following fix that also cures enable checking failure of g++.dg/torture/pr46154.C No problem, thanks for the quick fix! -- Eric Botcazou