2018-11-19 Richard Biener <rguenther@suse.de>
PR lto/87229
* tree.c (free_lang_data_in_one_sizepos): Free non-gimple-val
sizepos values.
* g++.dg/lto/pr87229_0.C: New testcase.
From-SVN: r266271
+2018-11-19 Richard Biener <rguenther@suse.de>
+
+ PR lto/87229
+ * tree.c (free_lang_data_in_one_sizepos): Free non-gimple-val
+ sizepos values.
+
2018-11-19 Eric Botcazou <ebotcazou@adacore.com>
* compare-elim.c (struct comparison): Add not_in_a field.
+2018-11-19 Richard Biener <rguenther@suse.de>
+
+ PR lto/87229
+ * g++.dg/lto/pr87229_0.C: New testcase.
+
2018-11-19 Martin Liska <mliska@suse.cz>
* g++.dg/gcov/pr84548.C: Remove remove-gcda.
--- /dev/null
+// { dg-lto-do assemble }
+
+struct Main { Main(char* x); };
+
+Main::Main(char* x) {
+ char cfg[__builtin_strlen(x)];
+}
tree expr = *expr_p;
if (CONTAINS_PLACEHOLDER_P (expr))
*expr_p = build0 (PLACEHOLDER_EXPR, TREE_TYPE (expr));
+ /* ??? We have to reset all non-GIMPLE sizepos because those eventually
+ refer to trees we cannot stream. See for example PR87229 which
+ shows an example with non-gimplified abstract origins in C++.
+ Note this should only happen for abstract copies so setting sizes
+ to NULL is OK (but we cannot easily assert this). */
+ else if (expr && !is_gimple_val (expr))
+ *expr_p = NULL_TREE;
}