Hi,

On Fri, Nov 29 2019, Jan Hubicka wrote:
>> Hi,
>> 
>> the patch below fixes the i686 failures reported in PR 92476.  Newly
>> expanded "artificial" thunks need to be analyzed when expanded so that
>> we create necessary function summaries and jump functions for them.
>> They still don't get IPA-CP lattices, so I looked at all accesses to
>> those and verified that only the functions saving IPA-VR and IPA-bits
>> analyses could try to access non-existing lattices.
>> 
>> After that, Martin's testcase in comment 4 of the bug also revealed two
>> places where we try to access summaries of unoptimized functions and
>> segfault, so I fixed those too.  Unfortunately it seems our testsuite
>> cannot optimize different LTO compilation units with different options
>> and so I could not add the testcase there.  But it no longer ICEs.
> I think you can simply add different flag into different testcases:
> 20090210_1.c:/* { dg-options "-fPIC" { target { ! sparc*-*-* } } } */
> 20090218-1_1.c:/* { dg-options "-fgnu89-inline" } */
> 20090218-2_1.c:/* { dg-options { -fgnu89-inline } } */
> 20111207-1_1.c:/* { dg-options "-fno-lto" } */
>

Ah, servers me right for only grepping for dg-lto-options.

I have committed the fix and will commit the following testcase addition
as a follow-up.

Thanks,

Martin


2019-11-29  Martin Jambor  <mjam...@suse.cz>

        PR ipa/92476
        * g++.dg/lto/pr92476_[01].C: New test.
---
 gcc/testsuite/g++.dg/lto/pr92476_0.C | 20 ++++++++++++++++++++
 gcc/testsuite/g++.dg/lto/pr92476_1.C | 13 +++++++++++++
 2 files changed, 33 insertions(+)
 create mode 100644 gcc/testsuite/g++.dg/lto/pr92476_0.C
 create mode 100644 gcc/testsuite/g++.dg/lto/pr92476_1.C

diff --git a/gcc/testsuite/g++.dg/lto/pr92476_0.C 
b/gcc/testsuite/g++.dg/lto/pr92476_0.C
new file mode 100644
index 00000000000..5bbc9236f4d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/lto/pr92476_0.C
@@ -0,0 +1,20 @@
+// { dg-lto-do link }
+// { dg-lto-options { { -O0 -flto -shared -fPIC -fvisibility=hidden } } }
+// { dg-require-effective-target fpic }
+// { dg-require-effective-target shared }
+// { dg-extra-ld-options "-shared" }
+
+namespace Passenger {
+namespace Json {
+class Value {};
+} // namespace Json
+namespace ConfigKit {
+class Translator {};
+} // namespace ConfigKit
+namespace LoggingKit {
+void initialize(const Json::Value & = Json::Value(),
+                const ConfigKit::Translator & = ConfigKit::Translator());
+void init_module() { initialize(); }
+} // namespace LoggingKit
+} // namespace Passenger
+
diff --git a/gcc/testsuite/g++.dg/lto/pr92476_1.C 
b/gcc/testsuite/g++.dg/lto/pr92476_1.C
new file mode 100644
index 00000000000..cd29613b808
--- /dev/null
+++ b/gcc/testsuite/g++.dg/lto/pr92476_1.C
@@ -0,0 +1,13 @@
+// { dg-options { -O2 -flto -shared -fPIC -fvisibility=hidden } }
+
+namespace Passenger {
+namespace Json {
+class Value;
+}
+namespace ConfigKit {
+class Translator;
+}
+namespace LoggingKit {
+void initialize(const Json::Value &, const ConfigKit::Translator &) {}
+} // namespace LoggingKit
+} // namespace Passenger
-- 
2.24.0

Reply via email to