https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108945
--- Comment #1 from CVS Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Iain Buclaw <ibuc...@gcc.gnu.org>: https://gcc.gnu.org/g:51af8a6401eea726d3498e6b2aba456b6af246d6 commit r13-6430-g51af8a6401eea726d3498e6b2aba456b6af246d6 Author: Iain Buclaw <ibuc...@gdcproject.org> Date: Mon Feb 27 16:02:21 2023 +0100 d: vector float comparison doesn't result in 0 or -1 [PR108945] When comparing two vectors, the type of vector was used as the result of the condition result. This meant that for floating point comparisons, each value would either be `0.0' or `-1.0' reinterpreted as an integer, not the expected integral bitmask values `0' and `-1'. Instead, use the comparison type determined by truth_type_for as the result of the comparison. If a reinterpret is later required by the final conversion for generating CmpExp, it is still only going to reinterpret one integer kind as another. PR d/108945 gcc/d/ChangeLog: * d-codegen.cc (build_boolop): Evaluate vector comparison as the truth_type_for vector type. gcc/testsuite/ChangeLog: * gdc.dg/pr108945.d: New test.