mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-22 19:11:18 +08:00
re PR middle-end/41611 (guard variable is emitted even when the guarded symbol isn't)
PR c++/41611 * decl2.c (get_guard): Don't use the same comdat group as the decl. From-SVN: r154965
This commit is contained in:
parent
4e3f6d8529
commit
d35311a213
@ -1,5 +1,8 @@
|
||||
2009-12-03 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/41611
|
||||
* decl2.c (get_guard): Don't use the same comdat group as the decl.
|
||||
|
||||
PR c++/42266
|
||||
* cvt.c (convert_from_reference): Do nothing if TREE_TYPE is null.
|
||||
|
||||
|
@ -2555,7 +2555,8 @@ get_guard (tree decl)
|
||||
TREE_STATIC (guard) = TREE_STATIC (decl);
|
||||
DECL_COMMON (guard) = DECL_COMMON (decl);
|
||||
DECL_COMDAT (guard) = DECL_COMDAT (decl);
|
||||
DECL_COMDAT_GROUP (guard) = DECL_COMDAT_GROUP (decl);
|
||||
if (DECL_ONE_ONLY (decl))
|
||||
make_decl_one_only (guard, cxx_comdat_group (guard));
|
||||
if (TREE_PUBLIC (decl))
|
||||
DECL_WEAK (guard) = DECL_WEAK (decl);
|
||||
DECL_VISIBILITY (guard) = DECL_VISIBILITY (decl);
|
||||
|
@ -1,5 +1,8 @@
|
||||
2009-12-03 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/41611
|
||||
* g++.dg/abi/guard2.C: New.
|
||||
|
||||
PR c++/42266
|
||||
* g++.dg/cpp0x/variadic97.C: New.
|
||||
|
||||
|
16
gcc/testsuite/g++.dg/abi/guard2.C
Normal file
16
gcc/testsuite/g++.dg/abi/guard2.C
Normal file
@ -0,0 +1,16 @@
|
||||
// PR c++/41611
|
||||
// Test that the guard gets its own COMDAT group.
|
||||
// { dg-final { scan-assembler "_ZGVZN1A1fEvE1i,comdat" { target i?86-*-* x86_64-*-* } } }
|
||||
|
||||
struct A {
|
||||
static int f()
|
||||
{
|
||||
static int &i = *new int();
|
||||
return i;
|
||||
}
|
||||
};
|
||||
|
||||
int main()
|
||||
{
|
||||
return A::f();
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user