When testing with -g g++.dg/ext/attr-alias-3.C ICEs because we mess up the context of class-scope vars with aliases. The following fixes this.
Bootstrapped and tested on x86_64-unknown-linux-gnu, applied. Richard. 2015-09-21 Richard Biener <rguent...@suse.de> * passes.c (rest_of_decl_compilation): Do not call dwarf2out_early_global_decl for aliases. * g++.dg/ext/attr-alias-3.C: Add -g. Index: gcc/passes.c =================================================================== *** gcc/passes.c (revision 227899) --- gcc/passes.c (working copy) *************** rest_of_decl_compilation (tree decl, *** 327,333 **** and thus have incomplete early debug and late debug called from varpool node removal fails to handle it properly. */ ! || (TREE_CODE (decl) == VAR_DECL && TREE_STATIC (decl) && !DECL_EXTERNAL (decl))) /* Avoid confusing the debug information machinery when there are errors. */ --- 327,334 ---- and thus have incomplete early debug and late debug called from varpool node removal fails to handle it properly. */ ! || (finalize ! && TREE_CODE (decl) == VAR_DECL && TREE_STATIC (decl) && !DECL_EXTERNAL (decl))) /* Avoid confusing the debug information machinery when there are errors. */ Index: gcc/testsuite/g++.dg/ext/attr-alias-3.C =================================================================== *** gcc/testsuite/g++.dg/ext/attr-alias-3.C (revision 227899) --- gcc/testsuite/g++.dg/ext/attr-alias-3.C (working copy) *************** *** 1,5 **** --- 1,6 ---- // PR c++/56134 // { dg-require-alias "" } + // { dg-options "-g" } char a; class Q