mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-02 04:45:23 +08:00
[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. From-SVN: r267985
This commit is contained in:
parent
15b93db9ca
commit
e42589bd62
@ -1,3 +1,9 @@
|
||||
2019-01-16 Iain Buclaw <ibuclaw@gdcproject.org>
|
||||
|
||||
PR d/87824
|
||||
* d-lang.cc (d_post_options): Disable implicit
|
||||
-forder-blocks-and-partition.
|
||||
|
||||
2019-01-16 Iain Buclaw <ibuclaw@gdcproject.org>
|
||||
|
||||
* d-codegen.cc (build_typeof_null_value): New function.
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user