+2018-06-19 Jan Hubicka <hubicka@ucw.cz>
+
+ * tree.c (find_decls_types_r): Remove all non-VAR_DECLs from
+ blocks.
+
2018-06-19 Martin Liska <mliska@suse.cz>
* config/i386/i386.c (ix86_can_inline_p): Do not use
+2018-06-19 Jan Hubicka <hubicka@ucw.cz>
+
+ * g++.dg/lto/pr84805_0.C: Update template.
+ * g++.dg/lto/pr84805_1.C: Update template.
+
2018-06-19 Eric Botcazou <ebotcazou@adacore.com>
* gnat.dg/aggr24.adb: New test.
bool = is_void::value >
class __shared_ptr_access {};
template < typename _Tp, _Lock_policy _Lp >
-class __shared_ptr : __shared_ptr_access< _Tp, _Lp > { // { dg-lto-warning "7: type 'struct __shared_ptr' violates the C\\+\\+ One Definition Rule" }
+class __shared_ptr : __shared_ptr_access< _Tp, _Lp > {
using element_type = _Tp;
element_type *_M_ptr;
__shared_count< _Lp > _M_refcount;
class ExtSheetBuffer;
class ExcelToSc;
class XclImpColRowSettings;
-struct RootData { // { dg-lto-warning "8: type 'struct RootData' violates the C\\+\\+ One Definition Rule" }
+struct RootData {
BiffTyp eDateiTyp;
ExtSheetBuffer *pExtSheetBuff;
SharedFormulaBuffer *pShrfmlaBuff;
class XclFontPropSetHelper;
class XclChPropSetHelper;
class XclTracer;
-struct XclRootData { // { dg-lto-warning "8: type 'struct XclRootData' violates the C\\+\\+ One Definition Rule" }
+struct XclRootData {
typedef std::shared_ptr< ScEditEngineDefaulter > ScEEDefaulterRef;
typedef std::shared_ptr< ScHeaderEditEngine > ScHeaderEERef;
typedef std::shared_ptr< EditEngine > EditEngineRef;
RootDataRef mxRD;
virtual ~XclRootData();
};
-class XclRoot { // { dg-lto-warning "7: type 'struct XclRoot' violates the C\\+\\+ One Definition Rule" }
+class XclRoot {
public:
virtual ~XclRoot();
XclRootData &mrData;
};
-class XclImpRoot : XclRoot {}; // { dg-lto-warning "7: type 'struct XclImpRoot' violates the C\\+\\+ One Definition Rule" }
+class XclImpRoot : XclRoot {};
class XclImpColRowSettings : XclImpRoot {};
void lcl_ExportExcelBiff() {
XclRootData aExpData();
-class XclRoot {
+class XclRoot { // { dg-lto-warning "7: type 'struct XclRoot' violates the C\\+\\+ One Definition Rule" }
public:
virtual ~XclRoot();
};
class XclImpRoot : XclRoot {};
-struct RootData {
+struct RootData { // { dg-lto-warning "8: type 'struct RootData' violates the C\\+\\+ One Definition Rule" }
XclImpRoot pIR;
};
class ExcRoot {
/* Drop TYPE_DECLs in TYPE_NAME in favor of the identifier in the
TYPE_DECL if the type doesn't have linkage. */
if (! type_with_linkage_p (type))
- TYPE_NAME (type) = TYPE_IDENTIFIER (type);
+ {
+ TYPE_NAME (type) = TYPE_IDENTIFIER (type);
+ TYPE_STUB_DECL (type) = NULL;
+ }
}
}
else if (TREE_CODE (t) == BLOCK)
{
- tree tem;
- for (tem = BLOCK_VARS (t); tem; tem = TREE_CHAIN (tem))
- fld_worklist_push (tem, fld);
- for (tem = BLOCK_SUBBLOCKS (t); tem; tem = BLOCK_CHAIN (tem))
+ for (tree *tem = &BLOCK_VARS (t); *tem; )
+ {
+ if (TREE_CODE (*tem) != VAR_DECL
+ || !auto_var_in_fn_p (*tem, DECL_CONTEXT (*tem)))
+ {
+ gcc_assert (TREE_CODE (*tem) != RESULT_DECL
+ && TREE_CODE (*tem) != PARM_DECL);
+ *tem = TREE_CHAIN (*tem);
+ }
+ else
+ {
+ fld_worklist_push (*tem, fld);
+ tem = &TREE_CHAIN (*tem);
+ }
+ }
+ for (tree tem = BLOCK_SUBBLOCKS (t); tem; tem = BLOCK_CHAIN (tem))
fld_worklist_push (tem, fld);
fld_worklist_push (BLOCK_ABSTRACT_ORIGIN (t), fld);
}