From: ibuclaw Date: Wed, 16 Jan 2019 20:40:21 +0000 (+0000) Subject: [D] Fix failing EH execution test on i386. X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=46c0cb43b0a59a6dfb2b6bbaa1679130e7d348dd;p=thirdparty%2Fgcc.git [D] Fix failing EH execution test on i386. Turn off partitioning unless it was explicitly requested, as it doesn't work with D exception chaining, where personality routines use LSDA to determine whether two thrown exceptions are in the same context. The following distills what was failing in the D testsuite. ``` try { try { fn(); // throws "1" } finally { throw new Exception("2"); } } catch (Exception e) { assert(e.msg == "1"); assert(e.next.msg == "2"); } ``` gcc/d/ChangeLog: PR d/87824 * d-lang.cc (d_post_options): Disable implicit -forder-blocks-and-partition. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267985 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/d/ChangeLog b/gcc/d/ChangeLog index 441fed8ddb17..fa4ba35bf6bc 100644 --- a/gcc/d/ChangeLog +++ b/gcc/d/ChangeLog @@ -1,3 +1,9 @@ +2019-01-16 Iain Buclaw + + PR d/87824 + * d-lang.cc (d_post_options): Disable implicit + -forder-blocks-and-partition. + 2019-01-16 Iain Buclaw * d-codegen.cc (build_typeof_null_value): New function. diff --git a/gcc/d/d-lang.cc b/gcc/d/d-lang.cc index 109bf4bf1393..b53e56e65a27 100644 --- a/gcc/d/d-lang.cc +++ b/gcc/d/d-lang.cc @@ -725,6 +725,12 @@ d_post_options (const char ** fn) global.params.useSwitchError = false; } + /* Turn off partitioning unless it was explicitly requested, as it doesn't + work with D exception chaining, where EH handler uses LSDA to determine + whether two thrown exception are in the same context. */ + if (!global_options_set.x_flag_reorder_blocks_and_partition) + global_options.x_flag_reorder_blocks_and_partition = 0; + /* Error about use of deprecated features. */ if (global.params.useDeprecated == DIAGNOSTICinform && global.params.warnings == DIAGNOSTICerror)