diff options
author | Iain Buclaw <ibuclaw@gdcproject.org> | 2019-01-20 12:55:38 +0000 |
---|---|---|
committer | Iain Buclaw <ibuclaw@gcc.gnu.org> | 2019-01-20 12:55:38 +0000 |
commit | 5bdebb51a649d04569324f4f1124d5e64a3cbff7 (patch) | |
tree | 420e7c58ae557015dac5d880c91f9f924489f3aa /gcc/testsuite | |
parent | 70d87497e760dca94ef78e4e936f6d461f36e80d (diff) | |
download | gcc-5bdebb51a649d04569324f4f1124d5e64a3cbff7.zip gcc-5bdebb51a649d04569324f4f1124d5e64a3cbff7.tar.gz gcc-5bdebb51a649d04569324f4f1124d5e64a3cbff7.tar.bz2 |
[D] Fix identity comparison for structs with complex float fields.
gcc/d/ChangeLog:
2019-01-20 Iain Buclaw <ibuclaw@gdcproject.org>
* d-codegen.cc (identity_compare_p): Return false if seen built-in
type with padding.
(build_float_identity): Moved here from expr.cc.
(lower_struct_comparison): Handle real and complex types.
* d-tree.h (build_float_identity): New.
* expr.cc (build_float_identity): Move to d-codegen.cc.
gcc/testsuite/ChangeLog:
2019-01-20 Iain Buclaw <ibuclaw@gdcproject.org>
* gdc.dg/runnable.d: Add more tests for comparing complex types.
From-SVN: r268104
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gdc.dg/runnable.d | 20 |
2 files changed, 24 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index de3a3c4..8532240 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2019-01-20 Iain Buclaw <ibuclaw@gdcproject.org> + + * gdc.dg/runnable.d: Add more tests for comparing complex types. + 2019-01-20 Johannes Pfau <johannespfau@gmail.com> * gdc.dg/runnable.d: Add tests for comparing complex types. diff --git a/gcc/testsuite/gdc.dg/runnable.d b/gcc/testsuite/gdc.dg/runnable.d index 65c71e8..e36a258 100644 --- a/gcc/testsuite/gdc.dg/runnable.d +++ b/gcc/testsuite/gdc.dg/runnable.d @@ -1553,6 +1553,26 @@ void test309() assert(!(f1 is f3)); assert(!(f2 is f3)); assert(!(f1 !is f4)); + + struct CReal + { + creal value; + } + + CReal s1 = CReal(+0.0 + 0.0i); + CReal s2 = CReal(+0.0 - 0.0i); + CReal s3 = CReal(-0.0 + 0.0i); + CReal s4 = CReal(+0.0 + 0.0i); + + assert(s1 !is s2); + assert(s1 !is s3); + assert(s2 !is s3); + assert(s1 is s4); + + assert(!(s1 is s2)); + assert(!(s1 is s3)); + assert(!(s2 is s3)); + assert(!(s1 !is s4)); } /******************************************/ |