[Bug c++/14167] Unneeded C++ types are output in debug info due to use of static constants

2006-08-22 Thread jason at gcc dot gnu dot org


--- 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

2006-08-22 Thread drow at gcc dot gnu dot org


--- 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

2018-09-20 Thread egallager at gcc dot gnu.org
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

2019-09-30 Thread rguenth at gcc dot gnu.org
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

2005-05-11 Thread pinskia at gcc dot gnu dot org

--- 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

2006-01-21 Thread drow at gcc dot gnu dot org


--- 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

2006-01-21 Thread drow at gcc dot gnu dot org


--- 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

2006-01-29 Thread pinskia at gcc dot gnu dot org


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|REOPENED|NEW


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14167