diff options
author | David Malcolm <dmalcolm@redhat.com> | 2020-11-05 09:54:58 -0500 |
---|---|---|
committer | David Malcolm <dmalcolm@redhat.com> | 2020-11-05 09:54:58 -0500 |
commit | 54cbdb528df16686290ad26e2130a1896915639d (patch) | |
tree | e3d96c31bfdadf9e9d0a057e2c5f8b25b432dd17 /gcc/analyzer/svalue.cc | |
parent | ea937e7d8730b4faa18bc67413dbb14567be7390 (diff) | |
download | gcc-54cbdb528df16686290ad26e2130a1896915639d.zip gcc-54cbdb528df16686290ad26e2130a1896915639d.tar.gz gcc-54cbdb528df16686290ad26e2130a1896915639d.tar.bz2 |
analyzer: fix ICE comparing COMPLEX_CSTs [PR97668]
gcc/analyzer/ChangeLog:
PR analyzer/97668
* svalue.cc (cmp_cst): Handle COMPLEX_CST.
gcc/testsuite/ChangeLog:
PR analyzer/97668
* gcc.dg/analyzer/pr97668.c: New test.
* gfortran.dg/analyzer/pr97668.f: New test.
Diffstat (limited to 'gcc/analyzer/svalue.cc')
-rw-r--r-- | gcc/analyzer/svalue.cc | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/analyzer/svalue.cc b/gcc/analyzer/svalue.cc index 18d9c37..e930452 100644 --- a/gcc/analyzer/svalue.cc +++ b/gcc/analyzer/svalue.cc @@ -291,6 +291,10 @@ cmp_cst (const_tree cst1, const_tree cst2) return memcmp (TREE_REAL_CST_PTR (cst1), TREE_REAL_CST_PTR (cst2), sizeof (real_value)); + case COMPLEX_CST: + if (int cmp_real = cmp_cst (TREE_REALPART (cst1), TREE_REALPART (cst2))) + return cmp_real; + return cmp_cst (TREE_IMAGPART (cst1), TREE_IMAGPART (cst2)); case VECTOR_CST: if (int cmp_log2_npatterns = ((int)VECTOR_CST_LOG2_NPATTERNS (cst1) |