blob: 8200f4bb270f9af7be7064a294a27fac894c8a16 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
// PR c++/65209
// { dg-additional-options "-fno-pie" { target sparc*-*-* } }
// { dg-final { scan-assembler-not "comdat" } }
// Everything involving the anonymous namespace bits should be private, not
// COMDAT.
struct Bar
{
static Bar *self();
char pad[24];
};
template <Bar *(&holderFunction)()>
struct BarGlobalStatic
{
Bar *operator()() { return holderFunction(); }
};
namespace {
namespace Q_QGS_s_self {
inline Bar *innerFunction() {
static struct Holder {
Bar value;
~Holder() {}
} holder;
return &holder.value;
}
}
}
static BarGlobalStatic<Q_QGS_s_self::innerFunction> s_self;
Bar *Bar::self()
{
return s_self();
}
int main(int argc, char *argv[])
{
Bar* bar = Bar::self();
return 0;
}
|