diff options
author | Iain Buclaw <ibuclaw@gdcproject.org> | 2023-06-26 03:24:27 +0200 |
---|---|---|
committer | Iain Buclaw <ibuclaw@gdcproject.org> | 2023-06-26 03:26:22 +0200 |
commit | ab98db1e8c1b997414539f41b7fb814019497d8d (patch) | |
tree | 8d9ff30f938173dc164d56a95ae7dd27a356d7ea /libjava/javax | |
parent | f445b42e1881fe875c61ad8f7aa080121dd89ab3 (diff) | |
download | gcc-ab98db1e8c1b997414539f41b7fb814019497d8d.zip gcc-ab98db1e8c1b997414539f41b7fb814019497d8d.tar.gz gcc-ab98db1e8c1b997414539f41b7fb814019497d8d.tar.bz2 |
d: Suboptimal codegen for __builtin_expect(cond, false)
Since PR96435, both boolean objects and expressions have been evaluated
in the following way.
(*(ubyte*)&obj_or_expr) & 1
It has been noted that sometimes this can cause the back-end to optimize
in non-obvious ways - in particular with __builtin_expect.
This @safe feature is now restricted to just when reading the value of a
bool field that comes from a union.
PR d/110359
gcc/d/ChangeLog:
* d-convert.cc (convert_for_rvalue): Only apply the @safe boolean
conversion to boolean fields of a union.
(convert_for_condition): Call convert_for_rvalue in the default case.
gcc/testsuite/ChangeLog:
* gdc.dg/pr110359.d: New test.
Diffstat (limited to 'libjava/javax')
0 files changed, 0 insertions, 0 deletions