aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorThomas Koenig <tkoenig@gcc.gnu.org>2024-10-19 10:26:17 +0200
committerThomas Koenig <tkoenig@gcc.gnu.org>2024-10-19 10:26:17 +0200
commit4f9b1735ab5eaf93d07d65c81d83cd123a8f3478 (patch)
tree25d8228312802381048d7c6afaffbf78a4e154d0 /gcc
parent04b4a5e4866daa7b6f4a4a3e7ed1a23f7787841d (diff)
downloadgcc-4f9b1735ab5eaf93d07d65c81d83cd123a8f3478.zip
gcc-4f9b1735ab5eaf93d07d65c81d83cd123a8f3478.tar.gz
gcc-4f9b1735ab5eaf93d07d65c81d83cd123a8f3478.tar.bz2
Fix an ICE with UNSIGNED in match_sym_complex_part.
gcc/fortran/ChangeLog: PR fortran/117225 * primary.cc (match_sym_complex_part): An UNSIGNED in a complex part is an error. gcc/testsuite/ChangeLog: PR fortran/117225 * gfortran.dg/unsigned_38.f90: New test.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/primary.cc3
-rw-r--r--gcc/testsuite/gfortran.dg/unsigned_38.f906
2 files changed, 9 insertions, 0 deletions
diff --git a/gcc/fortran/primary.cc b/gcc/fortran/primary.cc
index c11359a..e114bf1 100644
--- a/gcc/fortran/primary.cc
+++ b/gcc/fortran/primary.cc
@@ -1471,6 +1471,9 @@ match_sym_complex_part (gfc_expr **result)
goto error;
break;
+ case BT_UNSIGNED:
+ goto error;
+
default:
gfc_internal_error ("gfc_match_sym_complex_part(): Bad type");
}
diff --git a/gcc/testsuite/gfortran.dg/unsigned_38.f90 b/gcc/testsuite/gfortran.dg/unsigned_38.f90
new file mode 100644
index 0000000..0d169ac
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/unsigned_38.f90
@@ -0,0 +1,6 @@
+! { dg-do compile }
+! { dg-options "-funsigned" }
+program main
+ unsigned, parameter :: u = 7u
+ print *,mod(-(u+1u),u)
+end program main