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