[Bug c++/14167] Unneeded C++ types are output in debug info due to use of static constants
--- Comment #5 from jason at gcc dot gnu dot org 2006-08-22 19:34 --- [basic.def.odr] says that an object that appears in an integral constant expression is not thereby "used", and it seems reasonable to extend that to not setting TREE_USED. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14167
[Bug c++/14167] Unneeded C++ types are output in debug info due to use of static constants
--- Comment #6 from drow at gcc dot gnu dot org 2006-08-22 20:03 --- The use in main should still set TREE_USED, though; should TREE_USED on a member ought to cause the class to be emitted? -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14167
[Bug c++/14167] Unneeded C++ types are output in debug info due to use of static constants
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=14167 Eric Gallager changed: What|Removed |Added Keywords||wrong-debug CC||egallager at gcc dot gnu.org, ||pinskia at gcc dot gnu.org --- Comment #7 from Eric Gallager --- This is the last bug still open that blocks bug 24551; fixing this would allow us to close that one too.
[Bug c++/14167] Unneeded C++ types are output in debug info due to use of static constants
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=14167 Richard Biener changed: What|Removed |Added Status|NEW |WAITING --- Comment #8 from Richard Biener --- For the original testcase we emit nothing of Class1 or Class2 into debuginfo which just has <0>: Abbrev Number: 1 (DW_TAG_compile_unit) DW_AT_producer: (indirect string, offset: 0x0): GNU C++14 9.2.0 -m tune=generic -march=x86-64 -g <10> DW_AT_language: 4(C++) <11> DW_AT_name: t.C <15> DW_AT_comp_dir: (indirect string, offset: 0x30): /tmp <19> DW_AT_stmt_list : 0x0 <1><1d>: Abbrev Number: 2 (DW_TAG_base_type) <1e> DW_AT_byte_size : 4 <1f> DW_AT_encoding: 5(signed) <20> DW_AT_name: int <1><24>: Abbrev Number: 0 even with GCC 4.8 ... (4.3.6 still has var1). For the testcase in comment#4 we get nothing as well since even without optimization the C++ frontend propagates the constant and the symtab code removes the unused variables before we even get to debug info creation. That is btw the issue we get nothing for the original testcase as well. So whether the bug is fixed remains unknown, but the testcases clearly do not show the original issue?
[Bug c++/14167] Unneeded C++ types are output in debug info due to use of static constants
--- Additional Comments From pinskia at gcc dot gnu dot org 2005-05-12 02:06 --- I think this has now been fixed (I tried to reproduce this with the testcase but I don't know if I did the correct thing to check). -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14167
[Bug c++/14167] Unneeded C++ types are output in debug info due to use of static constants
--- Comment #3 from drow at gcc dot gnu dot org 2006-01-21 16:27 --- I don't have G++ 3.4 handy at the moment. 3.3 emits about three and a half times as large of a .debug_info section as 4.0, however, so I believe this is fixed. There's still lots of unneeded debug information output, but I believe I've got another open PR describing that. -- drow at gcc dot gnu dot org changed: What|Removed |Added Status|NEW |RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14167
[Bug c++/14167] Unneeded C++ types are output in debug info due to use of static constants
--- Comment #4 from drow at gcc dot gnu dot org 2006-01-21 16:37 --- Oops, not so clear after all. Debug information for Class1 is no longer emitted, but debug information for Class1::var1 is still emitted. It just doesn't trigger the output of the containing class any more. If I add a real use of var1: class Class1 { public: static const int var1 = 1; static const int var2 = var1; }; class Class2 { static const int var1 = 1; static const int var2 = 1; }; int main(void) { return Class1::var1; } Still no change. We get a declaration for var1, but no definition for it, and not even a declaration of the containing class. It looks like this: <1><244>: Abbrev Number: 5 (DW_TAG_variable) DW_AT_name: var1 DW_AT_decl_file : 1 DW_AT_decl_line : 3 DW_AT_MIPS_linkage_name: _ZN6Class14var1E DW_AT_type: <219> DW_AT_external: 1 DW_AT_declaration : 1 DW_AT_const_value : 1 That's pretty useless. It doesn't let a debugger print Class1::var1. -- drow at gcc dot gnu dot org changed: What|Removed |Added Status|RESOLVED|REOPENED Resolution|FIXED | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14167
[Bug c++/14167] Unneeded C++ types are output in debug info due to use of static constants
-- pinskia at gcc dot gnu dot org changed: What|Removed |Added Status|REOPENED|NEW http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14167