re PR target/18925 (Invalid gprel relocation in PIC)

PR c++/18925
	* class.c (layout_class_type): Determine the visibility of static
	data members.

	PR c++/18925
	* g++.dg/ext/visibility/staticdatamem.C: New test.

From-SVN: r92120
This commit is contained in:
Mark Mitchell 2004-12-14 02:15:55 +00:00 committed by Mark Mitchell
parent fd2ad93d8f
commit 532b37d9b8
4 changed files with 38 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2004-12-13 Mark Mitchell <mark@codesourcery.com>
PR c++/18925
* class.c (layout_class_type): Determine the visibility of static
data members.
2004-12-12 Roger Sayle <roger@eyesopen.com>
PR middle-end/12454

View File

@ -4553,7 +4553,13 @@ layout_class_type (tree t, tree *virtuals_p)
At this point, finish_record_layout will be called, but
S1 is still incomplete.) */
if (TREE_CODE (field) == VAR_DECL)
maybe_register_incomplete_var (field);
{
maybe_register_incomplete_var (field);
/* The visibility of static data members is determined
at their point of declaration, not their point of
definition. */
determine_visibility (field);
}
continue;
}

View File

@ -1,3 +1,8 @@
2004-12-13 Mark Mitchell <mark@codesourcery.com>
PR c++/18925
* g++.dg/ext/visibility/staticdatamem.C: New test.
2004-12-13 Kelley Cook <kcook@gcc.gnu.org>
* gcc.target/xstormy16/below100.S: Remove DOS line endings.

View File

@ -0,0 +1,20 @@
// PR c++/18925
// { dg-do compile { target ia64-*-linux* } }
// { dg-options "-fPIC -fvisibility=hidden" }
// { dg-final { scan-assembler-not "gprel" } }
class __attribute__ ((visibility("default"))) Type
{
private:
static long _staticTypeCount;
public:
Type() { _staticTypeCount++; }
~Type();
};
long Type::_staticTypeCount = 0;
Type::~Type()
{
_staticTypeCount--;
}