aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
authorIain Buclaw <ibuclaw@gdcproject.org>2019-01-20 12:55:38 +0000
committerIain Buclaw <ibuclaw@gcc.gnu.org>2019-01-20 12:55:38 +0000
commit5bdebb51a649d04569324f4f1124d5e64a3cbff7 (patch)
tree420e7c58ae557015dac5d880c91f9f924489f3aa /gcc/testsuite
parent70d87497e760dca94ef78e4e936f6d461f36e80d (diff)
downloadgcc-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/ChangeLog4
-rw-r--r--gcc/testsuite/gdc.dg/runnable.d20
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));
}
/******************************************/