From 199fb02a7813cabc00dd5802f26aea27e977f372 Mon Sep 17 00:00:00 2001 From: Ilya Enkovich Date: Fri, 12 Feb 2016 13:17:28 +0000 Subject: [PATCH] re PR middle-end/69729 ([CHKP] internal compiler error: Segmentation fault) gcc/ PR target/69729 * lto-streamer-out.c (lto_output): Use thunk.add_pointer_bounds_args to correctly determine instrumentation thunks. gcc/testsuite/ * g++.dg/lto/lto.exp: Include and init mpx. * g++.dg/lto/pr69729_0.C: New test. From-SVN: r233376 --- gcc/ChangeLog | 6 +++++ gcc/lto-streamer-out.c | 2 +- gcc/testsuite/ChangeLog | 5 ++++ gcc/testsuite/g++.dg/lto/lto.exp | 3 +++ gcc/testsuite/g++.dg/lto/pr69729_0.C | 35 ++++++++++++++++++++++++++++ 5 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/lto/pr69729_0.C diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 642f7d3a80e..65b32b85f56 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2016-02-12 Ilya Enkovich + + PR target/69729 + * lto-streamer-out.c (lto_output): Use thunk.add_pointer_bounds_args + to correctly determine instrumentation thunks. + 2016-02-12 Jakub Jelinek PR ipa/69241 diff --git a/gcc/lto-streamer-out.c b/gcc/lto-streamer-out.c index 6bb76cc6ebb..997a28b0159 100644 --- a/gcc/lto-streamer-out.c +++ b/gcc/lto-streamer-out.c @@ -2321,7 +2321,7 @@ lto_output (void) { if (lto_symtab_encoder_encode_body_p (encoder, node) && !node->alias - && (!node->thunk.thunk_p || !node->instrumented_version)) + && (!node->thunk.thunk_p || !node->thunk.add_pointer_bounds_args)) { if (flag_checking) { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 33d2f2227ba..6d65e1f2085 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2016-02-12 Ilya Enkovich + + * g++.dg/lto/lto.exp: Include and init mpx. + * g++.dg/lto/pr69729_0.C: New test. + 2016-02-12 Jakub Jelinek PR ipa/69241 diff --git a/gcc/testsuite/g++.dg/lto/lto.exp b/gcc/testsuite/g++.dg/lto/lto.exp index 8d99418aef5..48f09476381 100644 --- a/gcc/testsuite/g++.dg/lto/lto.exp +++ b/gcc/testsuite/g++.dg/lto/lto.exp @@ -31,6 +31,7 @@ if $tracelevel then { load_lib standard.exp load_lib g++.exp load_lib target-libpath.exp +load_lib mpx-dg.exp # Load the language-independent compabibility support procedures. load_lib lto.exp @@ -42,6 +43,7 @@ if { ![check_effective_target_lto] } { g++_init lto_init no-mathlib +mpx_init # Define an identifier for use with this suite to avoid name conflicts # with other lto tests running at the same time. @@ -57,4 +59,5 @@ foreach src [lsort [find $srcdir/$subdir *_0.\[cC\]]] { lto-execute $src $sid } +mpx_finish lto_finish diff --git a/gcc/testsuite/g++.dg/lto/pr69729_0.C b/gcc/testsuite/g++.dg/lto/pr69729_0.C new file mode 100644 index 00000000000..b736406e0cb --- /dev/null +++ b/gcc/testsuite/g++.dg/lto/pr69729_0.C @@ -0,0 +1,35 @@ +/* { dg-lto-do link } */ +/* { dg-require-effective-target mpx } */ +/* { dg-lto-options {{-fcheck-pointer-bounds -mmpx -flto -flto-partition=max}} } */ + +class cl1 +{ + public: + virtual ~cl1 () { }; +}; + +class cl2 +{ + public: + virtual ~cl2 () { }; +}; + +class cl3 : cl1, cl2 +{ +}; + +class cl4 : cl3 +{ + public: + ~cl4 (); +}; + +cl4::~cl4 () +{ +} + +int main (int argc, char **argv) +{ + cl4 c; + return 0; +} -- 2.30.2