Add test-case (PR ipa/84805).
[official-gcc.git] / gcc / testsuite / g++.dg / lto / pr84805_0.C
blobc34c6340201c8d80282e2db03f2ff7744ead5075
1 // { dg-lto-do link }
2 // { dg-lto-options {{-O2 -fPIC -shared -flto}} }
4 template < typename _Tp, _Tp __v > struct integral_constant {
5   static constexpr _Tp value = __v;
6 };
7 typedef integral_constant< bool, false > false_type;
8 struct __is_void_helper : false_type {};
9 struct is_void : __is_void_helper {};
10 template < typename > struct is_array : false_type {};
11 namespace __gnu_cxx {
12 enum _Lock_policy { _S_single, _S_mutex, _S_atomic };
13 const _Lock_policy __default_lock_policy = _S_atomic;
14 } namespace std {
15 using __gnu_cxx::_Lock_policy;
16 using __gnu_cxx::__default_lock_policy;
17 template < _Lock_policy = __default_lock_policy > class _Sp_counted_base;
18 template < typename, _Lock_policy = __default_lock_policy > class __shared_ptr;
19 template < _Lock_policy > class __shared_count { _Sp_counted_base<> *_M_pi; };
20 template < typename _Tp, _Lock_policy, bool = is_array< _Tp >::value,
21            bool = is_void::value >
22 class __shared_ptr_access {};
23 template < typename _Tp, _Lock_policy _Lp >
24 class __shared_ptr : __shared_ptr_access< _Tp, _Lp > {
25   using element_type = _Tp;
26   element_type *_M_ptr;
27   __shared_count< _Lp > _M_refcount;
29 template < typename _Tp > class shared_ptr : __shared_ptr< _Tp > {};
30 } typedef struct _rtl_String rtl_String;
31 typedef struct _rtl_uString rtl_uString;
32 namespace rtl {
33 class OString {
34   rtl_String *pData;
36 } using rtl::OString;
37 namespace rtl {
38 class OUString {
39   rtl_uString *pData;
41 } using rtl::OUString;
42 namespace tools {
43 template < typename T > class SvRef {
44 T *pObj;
46 } class SvRefBase {
47   unsigned nRefCount : 31;
48   unsigned bNoDelete : 1;
50 protected:
51   virtual ~SvRefBase();
53 class ErrCode {
54   unsigned m_value;
56 class SvStream;
57 class SfxMedium;
58 struct strong_int {
59   unsigned short m_value;
61 typedef strong_int LanguageType;
62 class SotObject : virtual SvRefBase {
63   unsigned short nOwnerLockCount;
64   bool bInClose;
66 class BaseStorage;
67 class SotStorage : virtual SotObject {
68   BaseStorage *m_pOwnStg;
69   SvStream *m_pStorStm;
70   ErrCode m_nError;
71   OUString m_aName;
72   bool m_bIsRoot;
73   bool m_bDelStm;
74   OString m_aKey;
75   int m_nVersion;
77 class ScDocument;
78 class ScAddress {
79   int nRow;
80   short nCol;
81   short nTab;
83 enum XclBiff {};
84 enum XclOutput {};
85 enum BiffTyp {};
86 class SharedFormulaBuffer;
87 class ExtNameBuff;
88 class ExtSheetBuffer;
89 class ExcelToSc;
90 class XclImpColRowSettings;
91 struct RootData {
92   BiffTyp eDateiTyp;
93   ExtSheetBuffer *pExtSheetBuff;
94   SharedFormulaBuffer *pShrfmlaBuff;
95   ExtNameBuff *pExtNameBuff;
96   ExcelToSc *pFmlaConverter;
97   XclImpColRowSettings *pColRowBuff;
99 class ScEditEngineDefaulter;
100 class ScHeaderEditEngine;
101 class EditEngine;
102 class ScExtDocOptions;
103 class XclFontPropSetHelper;
104 class XclChPropSetHelper;
105 class XclTracer;
106 struct XclRootData { // { dg-lto-warning "8: type 'struct XclRootData' violates the C\\+\\+ One Definition Rule" }
107   typedef std::shared_ptr< ScEditEngineDefaulter > ScEEDefaulterRef;
108   typedef std::shared_ptr< ScHeaderEditEngine > ScHeaderEERef;
109   typedef std::shared_ptr< EditEngine > EditEngineRef;
110   typedef std::shared_ptr< XclFontPropSetHelper > XclFontPropSetHlpRef;
111   typedef std::shared_ptr< XclChPropSetHelper > XclChPropSetHlpRef;
112   typedef std::shared_ptr< ScExtDocOptions > ScExtDocOptRef;
113   typedef std::shared_ptr< XclTracer > XclTracerRef;
114   typedef std::shared_ptr< RootData > RootDataRef;
115   XclBiff meBiff;
116   XclOutput meOutput;
117   SfxMedium &mrMedium;
118   tools::SvRef< SotStorage > mxRootStrg;
119   ScDocument &mrDoc;
120   OUString maDocUrl;
121   OUString maBasePath;
122   OUString maUserName;
123   OUString maDefPassword;
124   unsigned short meTextEnc;
125   LanguageType meSysLang;
126   LanguageType meDocLang;
127   LanguageType meUILang;
128   short mnDefApiScript;
129   ScAddress maScMaxPos;
130   ScAddress maXclMaxPos;
131   ScAddress maMaxPos;
132   ScEEDefaulterRef mxEditEngine;
133   ScHeaderEERef mxHFEditEngine;
134   EditEngineRef mxDrawEditEng;
135   XclFontPropSetHlpRef mxFontPropSetHlp;
136   XclChPropSetHlpRef mxChPropSetHlp;
137   ScExtDocOptRef mxExtDocOpt;
138   XclTracerRef mxTracer;
139   RootDataRef mxRD;
140   virtual ~XclRootData();
142 class XclRoot { // { dg-lto-warning "7: type 'struct XclRoot' violates the C\\+\\+ One Definition Rule" }
143 public:
144   virtual ~XclRoot();
145   XclRootData &mrData;
147 class XclImpRoot : XclRoot {}; // { dg-lto-warning "7: type 'struct XclImpRoot' violates the C\\+\\+ One Definition Rule" }
148 class XclImpColRowSettings : XclImpRoot {};
149 void lcl_ExportExcelBiff() {
150 XclRootData aExpData();