13.1.1-4
Tweak gcc13-libstdc++-compat.patch Drop 3 Fortran patches Update 0018-Use-CXX11-ABI.patch Add libhwasan Resolves: #2188499
This commit is contained in:
parent
7c60ea1290
commit
aa793b4d3f
1
.gitignore
vendored
1
.gitignore
vendored
@ -0,0 +1 @@
|
|||||||
|
/gcc-13.1.1-20230614.tar.xz
|
@ -11,16 +11,3 @@ index 47f97dcb636..66f07aaa749 100644
|
|||||||
#include <memory>
|
#include <memory>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
diff --git a/gcc/testsuite/g++.dg/torture/pr106922.C b/gcc/testsuite/g++.dg/torture/pr106922.C
|
|
||||||
index 046fc6cce76..4214a31f276 100644
|
|
||||||
--- a/gcc/testsuite/g++.dg/torture/pr106922.C
|
|
||||||
+++ b/gcc/testsuite/g++.dg/torture/pr106922.C
|
|
||||||
@@ -4,6 +4,8 @@
|
|
||||||
// -O1 doesn't iterate VN and thus has bogus uninit diagnostics
|
|
||||||
// { dg-skip-if "" { *-*-* } { "-O1" } { "" } }
|
|
||||||
|
|
||||||
+#define _GLIBCXX_USE_CXX11_ABI 1
|
|
||||||
+
|
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
#include <optional>
|
|
||||||
|
159
gcc.spec
159
gcc.spec
@ -5,13 +5,13 @@ BuildRequires: scl-utils-build
|
|||||||
%{?scl:%global __strip %%{_scl_root}/usr/bin/strip}
|
%{?scl:%global __strip %%{_scl_root}/usr/bin/strip}
|
||||||
%{?scl:%global __objdump %%{_scl_root}/usr/bin/objdump}
|
%{?scl:%global __objdump %%{_scl_root}/usr/bin/objdump}
|
||||||
%{?scl:%scl_package gcc}
|
%{?scl:%scl_package gcc}
|
||||||
%global DATE 20230426
|
%global DATE 20230614
|
||||||
%global gitrev 99aa4c60d1f6a96b09f65b669d44bbab206f0a75
|
%global gitrev 0d7019741b037c7e9c4e57d6de3bce6bb2ed8026
|
||||||
%global gcc_version 13.1.1
|
%global gcc_version 13.1.1
|
||||||
%global gcc_major 13
|
%global gcc_major 13
|
||||||
# Note, gcc_release must be integer, if you want to add suffixes to
|
# Note, gcc_release must be integer, if you want to add suffixes to
|
||||||
# %%{release}, append them after %%{gcc_release} on Release: line.
|
# %%{release}, append them after %%{gcc_release} on Release: line.
|
||||||
%global gcc_release 1
|
%global gcc_release 4
|
||||||
%global nvptx_tools_gitrev 93e00909ceb9cbbc104f0fcba56c0361ffb3ca4b
|
%global nvptx_tools_gitrev 93e00909ceb9cbbc104f0fcba56c0361ffb3ca4b
|
||||||
%global newlib_cygwin_gitrev 9e09d6ed83cce4777a5950412647ccc603040409
|
%global newlib_cygwin_gitrev 9e09d6ed83cce4777a5950412647ccc603040409
|
||||||
%global mpc_version 1.0.3
|
%global mpc_version 1.0.3
|
||||||
@ -163,8 +163,8 @@ License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2
|
|||||||
# rm -rf gcc-dir.tmp
|
# rm -rf gcc-dir.tmp
|
||||||
Source0: gcc-%{version}-%{DATE}.tar.xz
|
Source0: gcc-%{version}-%{DATE}.tar.xz
|
||||||
Source1: https://gcc.gnu.org/pub/gcc/infrastructure/isl-%{isl_version}.tar.bz2
|
Source1: https://gcc.gnu.org/pub/gcc/infrastructure/isl-%{isl_version}.tar.bz2
|
||||||
#Source2: http://www.multiprecision.org/mpc/download/mpc-%{mpc_version}.tar.gz
|
#Source2: http://www.multiprecision.org/mpc/download/mpc-%%{mpc_version}.tar.gz
|
||||||
#Source3: ftp://ftp.stack.nl/pub/users/dimitri/doxygen-%{doxygen_version}.src.tar.gz
|
#Source3: ftp://ftp.stack.nl/pub/users/dimitri/doxygen-%%{doxygen_version}.src.tar.gz
|
||||||
# The source for nvptx-tools package was pulled from upstream's vcs. Use the
|
# The source for nvptx-tools package was pulled from upstream's vcs. Use the
|
||||||
# following commands to generate the tarball:
|
# following commands to generate the tarball:
|
||||||
# git clone --depth 1 git://github.com/MentorEmbedded/nvptx-tools.git nvptx-tools-dir.tmp
|
# git clone --depth 1 git://github.com/MentorEmbedded/nvptx-tools.git nvptx-tools-dir.tmp
|
||||||
@ -179,8 +179,8 @@ Source4: nvptx-tools-%{nvptx_tools_gitrev}.tar.xz
|
|||||||
# rm -rf newlib-cygwin-dir.tmp
|
# rm -rf newlib-cygwin-dir.tmp
|
||||||
Source5: newlib-cygwin-%{newlib_cygwin_gitrev}.tar.xz
|
Source5: newlib-cygwin-%{newlib_cygwin_gitrev}.tar.xz
|
||||||
Source6: libgomp_nonshared.c
|
Source6: libgomp_nonshared.c
|
||||||
#Source7: http://gcc.gnu.org/pub/gcc/infrastructure/mpfr-%{mpfr_version}.tar.bz2
|
#Source7: http://gcc.gnu.org/pub/gcc/infrastructure/mpfr-%%{mpfr_version}.tar.bz2
|
||||||
#Source8: http://gcc.gnu.org/pub/gcc/infrastructure/gmp-%{gmp_version}.tar.bz2
|
#Source8: http://gcc.gnu.org/pub/gcc/infrastructure/gmp-%%{gmp_version}.tar.bz2
|
||||||
URL: http://gcc.gnu.org
|
URL: http://gcc.gnu.org
|
||||||
# Need binutils with -pie support >= 2.14.90.0.4-4
|
# Need binutils with -pie support >= 2.14.90.0.4-4
|
||||||
# Need binutils which can omit dot symbols and overlap .opd on ppc64 >= 2.15.91.0.2-4
|
# Need binutils which can omit dot symbols and overlap .opd on ppc64 >= 2.15.91.0.2-4
|
||||||
@ -333,9 +333,6 @@ Patch11: gcc13-d-shared-libphobos.patch
|
|||||||
Patch50: isl-rh2155127.patch
|
Patch50: isl-rh2155127.patch
|
||||||
|
|
||||||
Patch100: gcc13-fortran-fdec-duplicates.patch
|
Patch100: gcc13-fortran-fdec-duplicates.patch
|
||||||
Patch101: gcc13-fortran-flogical-as-integer.patch
|
|
||||||
Patch102: gcc13-fortran-fdec-override-kind.patch
|
|
||||||
Patch103: gcc13-fortran-fdec-non-logical-if.patch
|
|
||||||
|
|
||||||
Patch1000: gcc13-libstdc++-compat.patch
|
Patch1000: gcc13-libstdc++-compat.patch
|
||||||
Patch1001: gcc13-libgfortran-compat.patch
|
Patch1001: gcc13-libgfortran-compat.patch
|
||||||
@ -574,9 +571,6 @@ This package contains GNU Atomic static libraries.
|
|||||||
|
|
||||||
%package -n libasan8
|
%package -n libasan8
|
||||||
Summary: The Address Sanitizer runtime library from GCC 13
|
Summary: The Address Sanitizer runtime library from GCC 13
|
||||||
Group: System Environment/Libraries
|
|
||||||
Requires(post): /sbin/install-info
|
|
||||||
Requires(preun): /sbin/install-info
|
|
||||||
|
|
||||||
%description -n libasan8
|
%description -n libasan8
|
||||||
This package contains the Address Sanitizer library from GCC 13
|
This package contains the Address Sanitizer library from GCC 13
|
||||||
@ -590,10 +584,23 @@ Obsoletes: libasan5 <= 8.3.1
|
|||||||
%description -n %{?scl_prefix}libasan-devel
|
%description -n %{?scl_prefix}libasan-devel
|
||||||
This package contains Address Sanitizer static runtime library.
|
This package contains Address Sanitizer static runtime library.
|
||||||
|
|
||||||
|
%package -n libhwasan
|
||||||
|
Summary: The Hardware-assisted Address Sanitizer runtime library
|
||||||
|
|
||||||
|
%description -n libhwasan
|
||||||
|
This package contains the Hardware-assisted Address Sanitizer library
|
||||||
|
which is used for -fsanitize=hwaddress instrumented programs.
|
||||||
|
|
||||||
|
%package -n %{?scl_prefix}libhwasan-devel
|
||||||
|
Summary: The Hardware-assisted Address Sanitizer static library
|
||||||
|
Requires: libhwasan >= 13.1.1
|
||||||
|
|
||||||
|
%description -n %{?scl_prefix}libhwasan-devel
|
||||||
|
This package contains Hardware-assisted Address Sanitizer static runtime
|
||||||
|
library.
|
||||||
|
|
||||||
%package -n libtsan2
|
%package -n libtsan2
|
||||||
Summary: The Thread Sanitizer runtime library
|
Summary: The Thread Sanitizer runtime library
|
||||||
Requires(post): /sbin/install-info
|
|
||||||
Requires(preun): /sbin/install-info
|
|
||||||
|
|
||||||
%description -n libtsan2
|
%description -n libtsan2
|
||||||
This package contains the Thread Sanitizer library
|
This package contains the Thread Sanitizer library
|
||||||
@ -608,8 +615,6 @@ This package contains Thread Sanitizer static runtime library.
|
|||||||
|
|
||||||
%package -n libubsan1
|
%package -n libubsan1
|
||||||
Summary: The Undefined Behavior Sanitizer runtime library
|
Summary: The Undefined Behavior Sanitizer runtime library
|
||||||
Requires(post): /sbin/install-info
|
|
||||||
Requires(preun): /sbin/install-info
|
|
||||||
|
|
||||||
%description -n libubsan1
|
%description -n libubsan1
|
||||||
This package contains the Undefined Behavior Sanitizer library
|
This package contains the Undefined Behavior Sanitizer library
|
||||||
@ -688,9 +693,6 @@ so that there cannot be any synchronization problems.
|
|||||||
|
|
||||||
%if 0%{?rhel} >= 6
|
%if 0%{?rhel} >= 6
|
||||||
%patch -P100 -p1 -b .fortran-fdec-duplicates~
|
%patch -P100 -p1 -b .fortran-fdec-duplicates~
|
||||||
%patch -P101 -p1 -b .fortran-flogical-as-integer~
|
|
||||||
%patch -P102 -p1 -b .fortran-fdec-override-kind~
|
|
||||||
%patch -P103 -p1 -b .fortran-fdec-non-logical-if~
|
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%ifarch %{arm}
|
%ifarch %{arm}
|
||||||
@ -1101,7 +1103,7 @@ cp -a Makefile{,.orig}
|
|||||||
sed -i -e '/^CHECK_TARGETS/s/$/ check-jit/' Makefile
|
sed -i -e '/^CHECK_TARGETS/s/$/ check-jit/' Makefile
|
||||||
touch -r Makefile.orig Makefile
|
touch -r Makefile.orig Makefile
|
||||||
rm Makefile.orig
|
rm Makefile.orig
|
||||||
# TODO
|
# No longer works. See #2213635/#2213634.
|
||||||
#make jit.sphinx.html
|
#make jit.sphinx.html
|
||||||
#make jit.sphinx.install-html jit_htmldir=`pwd`/../../rpm.doc/libgccjit-devel/html
|
#make jit.sphinx.install-html jit_htmldir=`pwd`/../../rpm.doc/libgccjit-devel/html
|
||||||
cd ..
|
cd ..
|
||||||
@ -1543,6 +1545,10 @@ echo '/* GNU ld script */
|
|||||||
%{oformat}
|
%{oformat}
|
||||||
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libubsan.so.1 )' > libubsan.so
|
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libubsan.so.1 )' > libubsan.so
|
||||||
%endif
|
%endif
|
||||||
|
%if %{build_libhwasan}
|
||||||
|
rm -f libhwasan.so
|
||||||
|
echo 'INPUT ( %{_root_prefix}/%{_lib}/'`echo ../../../../%{_lib}/libhwasan.so.0.* | sed 's,^.*libh,libh,'`' )' > libhwasan.so
|
||||||
|
%endif
|
||||||
%if %{build_liblsan}
|
%if %{build_liblsan}
|
||||||
rm -f liblsan.so
|
rm -f liblsan.so
|
||||||
echo '/* GNU ld script */
|
echo '/* GNU ld script */
|
||||||
@ -1567,12 +1573,16 @@ mv -f %{buildroot}%{_prefix}/%{_lib}/libatomic.*a $FULLLPATH/
|
|||||||
mv -f %{buildroot}%{_prefix}/%{_lib}/libasan.*a $FULLLPATH/
|
mv -f %{buildroot}%{_prefix}/%{_lib}/libasan.*a $FULLLPATH/
|
||||||
mv -f %{buildroot}%{_prefix}/%{_lib}/libasan_preinit.o $FULLLPATH/
|
mv -f %{buildroot}%{_prefix}/%{_lib}/libasan_preinit.o $FULLLPATH/
|
||||||
%endif
|
%endif
|
||||||
|
%if %{build_libubsan}
|
||||||
|
mv -f %{buildroot}%{_prefix}/%{_lib}/libubsan.*a $FULLLPATH/
|
||||||
|
%endif
|
||||||
%if %{build_libtsan}
|
%if %{build_libtsan}
|
||||||
mv -f %{buildroot}%{_prefix}/%{_lib}/libtsan.*a $FULLPATH/
|
mv -f %{buildroot}%{_prefix}/%{_lib}/libtsan.*a $FULLPATH/
|
||||||
mv -f %{buildroot}%{_prefix}/%{_lib}/libtsan_preinit.o $FULLPATH/
|
mv -f %{buildroot}%{_prefix}/%{_lib}/libtsan_preinit.o $FULLPATH/
|
||||||
%endif
|
%endif
|
||||||
%if %{build_libubsan}
|
%if %{build_libhwasan}
|
||||||
mv -f %{buildroot}%{_prefix}/%{_lib}/libubsan.*a $FULLLPATH/
|
mv -f %{buildroot}%{_prefix}/%{_lib}/libhwasan.*a $FULLPATH/
|
||||||
|
mv -f %{buildroot}%{_prefix}/%{_lib}/libhwasan_preinit.o $FULLPATH/
|
||||||
%endif
|
%endif
|
||||||
%if %{build_liblsan}
|
%if %{build_liblsan}
|
||||||
mv -f %{buildroot}%{_prefix}/%{_lib}/liblsan.*a $FULLPATH/
|
mv -f %{buildroot}%{_prefix}/%{_lib}/liblsan.*a $FULLPATH/
|
||||||
@ -1885,6 +1895,12 @@ mv %{buildroot}%{_prefix}/%{_lib}/libubsan.so.1* %{buildroot}%{_root_prefix}/%{_
|
|||||||
mkdir -p %{buildroot}%{_root_infodir}
|
mkdir -p %{buildroot}%{_root_infodir}
|
||||||
%endif
|
%endif
|
||||||
%endif
|
%endif
|
||||||
|
%if %{build_libhwasan}
|
||||||
|
chmod 755 %{buildroot}%{_prefix}/%{_lib}/libhwasan.so.0.*
|
||||||
|
mkdir -p %{buildroot}%{_root_prefix}/%{_lib}/
|
||||||
|
mv %{buildroot}%{_prefix}/%{_lib}/libhwasan.so.0* %{buildroot}%{_root_prefix}/%{_lib}/
|
||||||
|
mkdir -p %{buildroot}%{_root_infodir}
|
||||||
|
%endif
|
||||||
%if %{build_liblsan}
|
%if %{build_liblsan}
|
||||||
chmod 755 %{buildroot}%{_prefix}/%{_lib}/liblsan.so.0.*
|
chmod 755 %{buildroot}%{_prefix}/%{_lib}/liblsan.so.0.*
|
||||||
%if 0%{?scl:1}
|
%if 0%{?scl:1}
|
||||||
@ -2489,6 +2505,10 @@ fi
|
|||||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libtsan.a
|
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libtsan.a
|
||||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libtsan.so
|
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libtsan.so
|
||||||
%endif
|
%endif
|
||||||
|
%if %{build_libhwasan}
|
||||||
|
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libhwasan.so
|
||||||
|
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libhwasan_preinit.o
|
||||||
|
%endif
|
||||||
%if %{build_liblsan}
|
%if %{build_liblsan}
|
||||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/liblsan.a
|
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/liblsan.a
|
||||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/liblsan.so
|
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/liblsan.so
|
||||||
@ -2731,21 +2751,9 @@ fi
|
|||||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libasan.a
|
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libasan.a
|
||||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libasan_preinit.o
|
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libasan_preinit.o
|
||||||
%endif
|
%endif
|
||||||
%doc rpm.doc/changelogs/libsanitizer/ChangeLog* libsanitizer/LICENSE.TXT
|
%doc rpm.doc/changelogs/libsanitizer/ChangeLog*
|
||||||
%endif
|
%{!?_licensedir:%global license %%doc}
|
||||||
|
%license libsanitizer/LICENSE.TXT
|
||||||
%if %{build_libtsan}
|
|
||||||
%files -n libtsan2
|
|
||||||
%{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libtsan.so.2*
|
|
||||||
|
|
||||||
%files -n %{?scl_prefix}libtsan-devel
|
|
||||||
%dir %{_prefix}/lib/gcc
|
|
||||||
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
|
|
||||||
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
|
|
||||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libtsan.so
|
|
||||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libtsan_preinit.o
|
|
||||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libtsan.a
|
|
||||||
%doc rpm.doc/changelogs/libsanitizer/ChangeLog* libsanitizer/LICENSE.TXT
|
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%if %{build_libubsan}
|
%if %{build_libubsan}
|
||||||
@ -2761,7 +2769,41 @@ fi
|
|||||||
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
|
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
|
||||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libubsan.so
|
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libubsan.so
|
||||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libubsan.a
|
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libubsan.a
|
||||||
%doc rpm.doc/changelogs/libsanitizer/ChangeLog* libsanitizer/LICENSE.TXT
|
%doc rpm.doc/changelogs/libsanitizer/ChangeLog*
|
||||||
|
%{!?_licensedir:%global license %%doc}
|
||||||
|
%license libsanitizer/LICENSE.TXT
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%if %{build_libtsan}
|
||||||
|
%files -n libtsan2
|
||||||
|
%{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libtsan.so.2*
|
||||||
|
|
||||||
|
%files -n %{?scl_prefix}libtsan-devel
|
||||||
|
%dir %{_prefix}/lib/gcc
|
||||||
|
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
|
||||||
|
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
|
||||||
|
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libtsan.so
|
||||||
|
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libtsan_preinit.o
|
||||||
|
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libtsan.a
|
||||||
|
%doc rpm.doc/changelogs/libsanitizer/ChangeLog*
|
||||||
|
%{!?_licensedir:%global license %%doc}
|
||||||
|
%license libsanitizer/LICENSE.TXT
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%if %{build_libhwasan}
|
||||||
|
%files -n libhwasan
|
||||||
|
%{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libhwasan.so.0*
|
||||||
|
|
||||||
|
%files -n %{?scl_prefix}libhwasan-devel
|
||||||
|
%dir %{_prefix}/lib/gcc
|
||||||
|
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
|
||||||
|
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
|
||||||
|
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libhwasan.so
|
||||||
|
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libhwasan_preinit.o
|
||||||
|
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libhwasan.a
|
||||||
|
%doc rpm.doc/changelogs/libsanitizer/ChangeLog*
|
||||||
|
%{!?_licensedir:%global license %%doc}
|
||||||
|
%license libsanitizer/LICENSE.TXT
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%if %{build_liblsan}
|
%if %{build_liblsan}
|
||||||
@ -2785,7 +2827,9 @@ fi
|
|||||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/liblsan.so
|
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/liblsan.so
|
||||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/liblsan_preinit.o
|
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/liblsan_preinit.o
|
||||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/liblsan.a
|
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/liblsan.a
|
||||||
%doc rpm.doc/changelogs/libsanitizer/ChangeLog* libsanitizer/LICENSE.TXT
|
%doc rpm.doc/changelogs/libsanitizer/ChangeLog*
|
||||||
|
%{!?_licensedir:%global license %%doc}
|
||||||
|
%license libsanitizer/LICENSE.TXT
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%files -n %{?scl_prefix}libgccjit
|
%files -n %{?scl_prefix}libgccjit
|
||||||
@ -2800,10 +2844,12 @@ fi
|
|||||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgccjit.so
|
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgccjit.so
|
||||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/libgccjit*.h
|
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/libgccjit*.h
|
||||||
|
|
||||||
|
%if 0
|
||||||
%files -n %{?scl_prefix}libgccjit-docs
|
%files -n %{?scl_prefix}libgccjit-docs
|
||||||
%{_infodir}/libgccjit.info*
|
%{_infodir}/libgccjit.info*
|
||||||
#%doc rpm.doc/libgccjit-devel/*
|
%doc rpm.doc/libgccjit-devel/*
|
||||||
#%doc gcc/jit/docs/examples
|
%doc gcc/jit/docs/examples
|
||||||
|
%endif
|
||||||
|
|
||||||
%files plugin-devel
|
%files plugin-devel
|
||||||
%dir %{_prefix}/lib/gcc
|
%dir %{_prefix}/lib/gcc
|
||||||
@ -2851,6 +2897,35 @@ fi
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Jun 15 2023 Marek Polacek <polacek@redhat.com> 13.1.1-4
|
||||||
|
- update from releases/gcc-13 branch (#2188499)
|
||||||
|
- PRs bootstrap/110085, c++/109871, fortran/100607, libgcc/109670,
|
||||||
|
libgcc/109685, libstdc++/108178, libstdc++/109261, libstdc++/109758,
|
||||||
|
libstdc++/109822, libstdc++/109949, libstdc++/110139,
|
||||||
|
middle-end/110200, target/82931, target/92729, target/104327,
|
||||||
|
target/105753, target/106907, target/109547, target/109650,
|
||||||
|
target/109800, target/109939, target/109954, target/110036,
|
||||||
|
target/110044, target/110088, target/110108, target/110227,
|
||||||
|
tree-optimization/109505, tree-optimization/110165,
|
||||||
|
tree-optimization/110166
|
||||||
|
|
||||||
|
* Fri May 19 2023 Jakub Jelinek <jakub@redhat.com> 13.1.1-3
|
||||||
|
- update from releases/gcc-13 branch
|
||||||
|
- PRs c++/80488, c++/83258, c++/97700, c++/103807, c++/109651, c++/109745,
|
||||||
|
c++/109761, c++/109774, c++/109868, c++/109884, fortran/109641,
|
||||||
|
fortran/109846, libstdc++/109816, libstdc++/109883, target/104338,
|
||||||
|
target/109697
|
||||||
|
|
||||||
|
* Thu May 11 2023 Jakub Jelinek <jakub@redhat.com> 13.1.1-2
|
||||||
|
- update from releases/gcc-13 branch
|
||||||
|
- PRs c++/91618, c++/96604, c++/109506, c++/109640, c++/109642, c++/109666,
|
||||||
|
c++/109671, c++/109756, c/107682, c/109409, c/109412, debug/109676,
|
||||||
|
fortran/109622, libffi/109447, libgomp/108098, libstdc++/40380,
|
||||||
|
libstdc++/109694, libstdc++/109703, rtl-optimization/109585,
|
||||||
|
target/108758, target/109069, target/109535, target/109661,
|
||||||
|
target/109762, tree-optimization/109573, tree-optimization/109609,
|
||||||
|
tree-optimization/109724, tree-optimization/109778
|
||||||
|
|
||||||
* Thu Apr 27 2023 Marek Polacek <polacek@redhat.com> 13.1.1-1
|
* Thu Apr 27 2023 Marek Polacek <polacek@redhat.com> 13.1.1-1
|
||||||
- update from releases/gcc-13 branch (#2188499)
|
- update from releases/gcc-13 branch (#2188499)
|
||||||
- GCC 13.1 release
|
- GCC 13.1 release
|
||||||
|
@ -1,378 +0,0 @@
|
|||||||
From cc87ddb841017bb0976b05091733609ee17d7f05 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Mark Eggleston <markeggleston@gcc.gnu.org>
|
|
||||||
Date: Fri, 22 Jan 2021 13:15:17 +0000
|
|
||||||
Subject: [PATCH 07/10] Allow non-logical expressions in IF statements
|
|
||||||
|
|
||||||
Use -fdec-non-logical-if to enable feature. Also enabled using -fdec.
|
|
||||||
---
|
|
||||||
gcc/fortran/lang.opt | 4 ++
|
|
||||||
gcc/fortran/options.cc | 1 +
|
|
||||||
gcc/fortran/resolve.cc | 60 ++++++++++++++++---
|
|
||||||
...gical_expressions_if_statements_blocks_1.f | 25 ++++++++
|
|
||||||
...gical_expressions_if_statements_blocks_2.f | 25 ++++++++
|
|
||||||
...gical_expressions_if_statements_blocks_3.f | 25 ++++++++
|
|
||||||
...gical_expressions_if_statements_blocks_4.f | 45 ++++++++++++++
|
|
||||||
...gical_expressions_if_statements_blocks_5.f | 45 ++++++++++++++
|
|
||||||
...gical_expressions_if_statements_blocks_6.f | 45 ++++++++++++++
|
|
||||||
9 files changed, 266 insertions(+), 9 deletions(-)
|
|
||||||
create mode 100644 gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_1.f
|
|
||||||
create mode 100644 gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_2.f
|
|
||||||
create mode 100644 gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_3.f
|
|
||||||
create mode 100644 gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_4.f
|
|
||||||
create mode 100644 gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_5.f
|
|
||||||
create mode 100644 gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_6.f
|
|
||||||
|
|
||||||
diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt
|
|
||||||
index 4a269ebb22d..d886c2f33ed 100644
|
|
||||||
--- a/gcc/fortran/lang.opt
|
|
||||||
+++ b/gcc/fortran/lang.opt
|
|
||||||
@@ -506,6 +506,10 @@ fdec-override-kind
|
|
||||||
Fortran Var(flag_dec_override_kind)
|
|
||||||
Enable support for per variable kind specification.
|
|
||||||
|
|
||||||
+fdec-non-logical-if
|
|
||||||
+Fortran Var(flag_dec_non_logical_if)
|
|
||||||
+Enable support for non-logical expressions in if statements.
|
|
||||||
+
|
|
||||||
fdec-structure
|
|
||||||
Fortran Var(flag_dec_structure)
|
|
||||||
Enable support for DEC STRUCTURE/RECORD.
|
|
||||||
diff --git a/gcc/fortran/options.cc b/gcc/fortran/options.cc
|
|
||||||
index edbab483b36..a946c86790a 100644
|
|
||||||
--- a/gcc/fortran/options.cc
|
|
||||||
+++ b/gcc/fortran/options.cc
|
|
||||||
@@ -79,6 +79,7 @@ set_dec_flags (int value)
|
|
||||||
SET_BITFLAG (flag_dec_char_conversions, value, value);
|
|
||||||
SET_BITFLAG (flag_dec_duplicates, value, value);
|
|
||||||
SET_BITFLAG (flag_dec_override_kind, value, value);
|
|
||||||
+ SET_BITFLAG (flag_dec_non_logical_if, value, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Finalize DEC flags. */
|
|
||||||
diff --git a/gcc/fortran/resolve.cc b/gcc/fortran/resolve.cc
|
|
||||||
index bc0df0fdb99..07dd039f3bf 100644
|
|
||||||
--- a/gcc/fortran/resolve.cc
|
|
||||||
+++ b/gcc/fortran/resolve.cc
|
|
||||||
@@ -10789,10 +10789,31 @@ gfc_resolve_blocks (gfc_code *b, gfc_namespace *ns)
|
|
||||||
switch (b->op)
|
|
||||||
{
|
|
||||||
case EXEC_IF:
|
|
||||||
- if (t && b->expr1 != NULL
|
|
||||||
- && (b->expr1->ts.type != BT_LOGICAL || b->expr1->rank != 0))
|
|
||||||
- gfc_error ("IF clause at %L requires a scalar LOGICAL expression",
|
|
||||||
- &b->expr1->where);
|
|
||||||
+ if (t && b->expr1 != NULL)
|
|
||||||
+ {
|
|
||||||
+ if (flag_dec_non_logical_if && b->expr1->ts.type != BT_LOGICAL)
|
|
||||||
+ {
|
|
||||||
+ gfc_expr* cast;
|
|
||||||
+ cast = gfc_ne (b->expr1,
|
|
||||||
+ gfc_get_int_expr (1, &gfc_current_locus, 0),
|
|
||||||
+ INTRINSIC_NE);
|
|
||||||
+ if (cast == NULL)
|
|
||||||
+ gfc_internal_error ("gfc_resolve_blocks(): Failed to cast "
|
|
||||||
+ "to LOGICAL in IF");
|
|
||||||
+ b->expr1 = cast;
|
|
||||||
+ if (warn_conversion_extra)
|
|
||||||
+ {
|
|
||||||
+ gfc_warning (OPT_Wconversion_extra, "Non-LOGICAL type in"
|
|
||||||
+ " IF statement condition %L will be true if"
|
|
||||||
+ " it evaluates to nonzero",
|
|
||||||
+ &b->expr1->where);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if ((b->expr1->ts.type != BT_LOGICAL || b->expr1->rank != 0))
|
|
||||||
+ gfc_error ("IF clause at %L requires a scalar LOGICAL "
|
|
||||||
+ "expression", &b->expr1->where);
|
|
||||||
+ }
|
|
||||||
break;
|
|
||||||
|
|
||||||
case EXEC_WHERE:
|
|
||||||
@@ -12093,11 +12114,32 @@ start:
|
|
||||||
break;
|
|
||||||
|
|
||||||
case EXEC_IF:
|
|
||||||
- if (t && code->expr1 != NULL
|
|
||||||
- && (code->expr1->ts.type != BT_LOGICAL
|
|
||||||
- || code->expr1->rank != 0))
|
|
||||||
- gfc_error ("IF clause at %L requires a scalar LOGICAL expression",
|
|
||||||
- &code->expr1->where);
|
|
||||||
+ if (t && code->expr1 != NULL)
|
|
||||||
+ {
|
|
||||||
+ if (flag_dec_non_logical_if
|
|
||||||
+ && code->expr1->ts.type != BT_LOGICAL)
|
|
||||||
+ {
|
|
||||||
+ gfc_expr* cast;
|
|
||||||
+ cast = gfc_ne (code->expr1,
|
|
||||||
+ gfc_get_int_expr (1, &gfc_current_locus, 0),
|
|
||||||
+ INTRINSIC_NE);
|
|
||||||
+ if (cast == NULL)
|
|
||||||
+ gfc_internal_error ("gfc_resolve_code(): Failed to cast "
|
|
||||||
+ "to LOGICAL in IF");
|
|
||||||
+ code->expr1 = cast;
|
|
||||||
+ if (warn_conversion_extra)
|
|
||||||
+ {
|
|
||||||
+ gfc_warning (OPT_Wconversion_extra, "Non-LOGICAL type in"
|
|
||||||
+ " IF statement condition %L will be true if"
|
|
||||||
+ " it evaluates to nonzero",
|
|
||||||
+ &code->expr1->where);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (code->expr1->ts.type != BT_LOGICAL || code->expr1->rank != 0)
|
|
||||||
+ gfc_error ("IF clause at %L requires a scalar LOGICAL "
|
|
||||||
+ "expression", &code->expr1->where);
|
|
||||||
+ }
|
|
||||||
break;
|
|
||||||
|
|
||||||
case EXEC_CALL:
|
|
||||||
diff --git a/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_1.f b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_1.f
|
|
||||||
new file mode 100644
|
|
||||||
index 00000000000..0101db893ca
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_1.f
|
|
||||||
@@ -0,0 +1,25 @@
|
|
||||||
+! { dg-do run }
|
|
||||||
+! { dg-options "-fdec -Wconversion-extra" }
|
|
||||||
+!
|
|
||||||
+! Allow logical expressions in if statements and blocks
|
|
||||||
+!
|
|
||||||
+! Contributed by Francisco Redondo Marchena <francisco.marchema@codethink.co.uk>
|
|
||||||
+! and Jeff Law <law@redhat.com>
|
|
||||||
+! Modified by Mark Eggleston <mark.eggleston@codethink.com>
|
|
||||||
+!
|
|
||||||
+ PROGRAM logical_exp_if_st_bl
|
|
||||||
+ INTEGER ipos/1/
|
|
||||||
+ INTEGER ineg/0/
|
|
||||||
+
|
|
||||||
+ ! Test non logical variables
|
|
||||||
+ if (ineg) STOP 1 ! { dg-warning "if it evaluates to nonzero" }
|
|
||||||
+ if (0) STOP 2 ! { dg-warning "if it evaluates to nonzero" }
|
|
||||||
+
|
|
||||||
+ ! Test non logical expressions in if statements
|
|
||||||
+ if (MOD(ipos, 1)) STOP 3 ! { dg-warning "if it evaluates to nonzero" }
|
|
||||||
+
|
|
||||||
+ ! Test non logical expressions in if blocks
|
|
||||||
+ if (MOD(2 * ipos, 2)) then ! { dg-warning "if it evaluates to nonzero" }
|
|
||||||
+ STOP 4
|
|
||||||
+ endif
|
|
||||||
+ END
|
|
||||||
diff --git a/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_2.f b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_2.f
|
|
||||||
new file mode 100644
|
|
||||||
index 00000000000..876f4e09508
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_2.f
|
|
||||||
@@ -0,0 +1,25 @@
|
|
||||||
+! { dg-do run }
|
|
||||||
+! { dg-options "-fdec-non-logical-if -Wconversion-extra" }
|
|
||||||
+!
|
|
||||||
+! Allow logical expressions in if statements and blocks
|
|
||||||
+!
|
|
||||||
+! Contributed by Francisco Redondo Marchena <francisco.marchema@codethink.co.uk>
|
|
||||||
+! and Jeff Law <law@redhat.com>
|
|
||||||
+! Modified by Mark Eggleston <mark.eggleston@codethink.com>
|
|
||||||
+!
|
|
||||||
+ PROGRAM logical_exp_if_st_bl
|
|
||||||
+ INTEGER ipos/1/
|
|
||||||
+ INTEGER ineg/0/
|
|
||||||
+
|
|
||||||
+ ! Test non logical variables
|
|
||||||
+ if (ineg) STOP 1 ! { dg-warning "if it evaluates to nonzero" }
|
|
||||||
+ if (0) STOP 2 ! { dg-warning "if it evaluates to nonzero" }
|
|
||||||
+
|
|
||||||
+ ! Test non logical expressions in if statements
|
|
||||||
+ if (MOD(ipos, 1)) STOP 3 ! { dg-warning "if it evaluates to nonzero" }
|
|
||||||
+
|
|
||||||
+ ! Test non logical expressions in if blocks
|
|
||||||
+ if (MOD(2 * ipos, 2)) then ! { dg-warning "if it evaluates to nonzero" }
|
|
||||||
+ STOP 4
|
|
||||||
+ endif
|
|
||||||
+ END
|
|
||||||
diff --git a/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_3.f b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_3.f
|
|
||||||
new file mode 100644
|
|
||||||
index 00000000000..35cb4c51b8d
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_3.f
|
|
||||||
@@ -0,0 +1,25 @@
|
|
||||||
+! { dg-do compile }
|
|
||||||
+! { dg-options "-fdec -fno-dec-non-logical-if" }
|
|
||||||
+!
|
|
||||||
+! Allow logical expressions in if statements and blocks
|
|
||||||
+!
|
|
||||||
+! Contributed by Francisco Redondo Marchena <francisco.marchema@codethink.co.uk>
|
|
||||||
+! and Jeff Law <law@redhat.com>
|
|
||||||
+! Modified by Mark Eggleston <mark.eggleston@codethink.com>
|
|
||||||
+!
|
|
||||||
+ PROGRAM logical_exp_if_st_bl
|
|
||||||
+ INTEGER ipos/1/
|
|
||||||
+ INTEGER ineg/0/
|
|
||||||
+
|
|
||||||
+ ! Test non logical variables
|
|
||||||
+ if (ineg) STOP 1 ! { dg-error "IF clause at" }
|
|
||||||
+ if (0) STOP 2 ! { dg-error "IF clause at" }
|
|
||||||
+
|
|
||||||
+ ! Test non logical expressions in if statements
|
|
||||||
+ if (MOD(ipos, 1)) STOP 3 ! { dg-error "IF clause at" }
|
|
||||||
+
|
|
||||||
+ ! Test non logical expressions in if blocks
|
|
||||||
+ if (MOD(2 * ipos, 2)) then ! { dg-error "IF clause at" }
|
|
||||||
+ STOP 4
|
|
||||||
+ endif
|
|
||||||
+ END
|
|
||||||
diff --git a/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_4.f b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_4.f
|
|
||||||
new file mode 100644
|
|
||||||
index 00000000000..7b60b60827f
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_4.f
|
|
||||||
@@ -0,0 +1,45 @@
|
|
||||||
+! { dg-do run }
|
|
||||||
+! { dg-options "-fdec -Wconversion-extra" }
|
|
||||||
+!
|
|
||||||
+! Contributed by Francisco Redondo Marchena <francisco.marchema@codethink.co.uk>
|
|
||||||
+! and Jeff Law <law@redhat.com>
|
|
||||||
+! Modified by Mark Eggleston <mark.eggleston@codethink.com>
|
|
||||||
+!
|
|
||||||
+ function othersub1()
|
|
||||||
+ integer*4 othersub1
|
|
||||||
+ othersub1 = 9
|
|
||||||
+ end
|
|
||||||
+
|
|
||||||
+ function othersub2()
|
|
||||||
+ integer*4 othersub2
|
|
||||||
+ othersub2 = 0
|
|
||||||
+ end
|
|
||||||
+
|
|
||||||
+ program MAIN
|
|
||||||
+ integer*4 othersub1
|
|
||||||
+ integer*4 othersub2
|
|
||||||
+ integer a /1/
|
|
||||||
+ integer b /2/
|
|
||||||
+
|
|
||||||
+ if (othersub1()) then ! { dg-warning "if it evaluates to nonzero" }
|
|
||||||
+ write(*,*) "OK"
|
|
||||||
+ else
|
|
||||||
+ stop 1
|
|
||||||
+ end if
|
|
||||||
+ if (othersub2()) then ! { dg-warning "if it evaluates to nonzero" }
|
|
||||||
+ stop 2
|
|
||||||
+ else
|
|
||||||
+ write(*,*) "OK"
|
|
||||||
+ end if
|
|
||||||
+ if (a-b) then ! { dg-warning "if it evaluates to nonzero" }
|
|
||||||
+ write(*,*) "OK"
|
|
||||||
+ else
|
|
||||||
+ stop 3
|
|
||||||
+ end if
|
|
||||||
+ if (b-(a+1)) then ! { dg-warning "if it evaluates to nonzero" }
|
|
||||||
+ stop 3
|
|
||||||
+ else
|
|
||||||
+ write(*,*) "OK"
|
|
||||||
+ end if
|
|
||||||
+ end
|
|
||||||
+
|
|
||||||
diff --git a/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_5.f b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_5.f
|
|
||||||
new file mode 100644
|
|
||||||
index 00000000000..80336f48ca1
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_5.f
|
|
||||||
@@ -0,0 +1,45 @@
|
|
||||||
+! { dg-do run }
|
|
||||||
+! { dg-options "-fdec-non-logical-if -Wconversion-extra" }
|
|
||||||
+!
|
|
||||||
+! Contributed by Francisco Redondo Marchena <francisco.marchema@codethink.co.uk>
|
|
||||||
+! and Jeff Law <law@redhat.com>
|
|
||||||
+! Modified by Mark Eggleston <mark.eggleston@codethink.com>
|
|
||||||
+!
|
|
||||||
+ function othersub1()
|
|
||||||
+ integer*4 othersub1
|
|
||||||
+ othersub1 = 9
|
|
||||||
+ end
|
|
||||||
+
|
|
||||||
+ function othersub2()
|
|
||||||
+ integer*4 othersub2
|
|
||||||
+ othersub2 = 0
|
|
||||||
+ end
|
|
||||||
+
|
|
||||||
+ program MAIN
|
|
||||||
+ integer*4 othersub1
|
|
||||||
+ integer*4 othersub2
|
|
||||||
+ integer a /1/
|
|
||||||
+ integer b /2/
|
|
||||||
+
|
|
||||||
+ if (othersub1()) then ! { dg-warning "Non-LOGICAL type in IF statement" }
|
|
||||||
+ write(*,*) "OK"
|
|
||||||
+ else
|
|
||||||
+ stop 1
|
|
||||||
+ end if
|
|
||||||
+ if (othersub2()) then ! { dg-warning "Non-LOGICAL type in IF statement" }
|
|
||||||
+ stop 2
|
|
||||||
+ else
|
|
||||||
+ write(*,*) "OK"
|
|
||||||
+ end if
|
|
||||||
+ if (a-b) then ! { dg-warning "Non-LOGICAL type in IF statement" }
|
|
||||||
+ write(*,*) "OK"
|
|
||||||
+ else
|
|
||||||
+ stop 3
|
|
||||||
+ end if
|
|
||||||
+ if (b-(a+1)) then ! { dg-warning "Non-LOGICAL type in IF statement" }
|
|
||||||
+ stop 3
|
|
||||||
+ else
|
|
||||||
+ write(*,*) "OK"
|
|
||||||
+ end if
|
|
||||||
+ end
|
|
||||||
+
|
|
||||||
diff --git a/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_6.f b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_6.f
|
|
||||||
new file mode 100644
|
|
||||||
index 00000000000..e1125ca717a
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_6.f
|
|
||||||
@@ -0,0 +1,45 @@
|
|
||||||
+! { dg-do compile }
|
|
||||||
+! { dg-options "-fdec -fno-dec-non-logical-if" }
|
|
||||||
+!
|
|
||||||
+! Contributed by Francisco Redondo Marchena <francisco.marchema@codethink.co.uk>
|
|
||||||
+! and Jeff Law <law@redhat.com>
|
|
||||||
+! Modified by Mark Eggleston <mark.eggleston@codethink.com>
|
|
||||||
+!
|
|
||||||
+ function othersub1()
|
|
||||||
+ integer*4 othersub1
|
|
||||||
+ othersub1 = 9
|
|
||||||
+ end
|
|
||||||
+
|
|
||||||
+ function othersub2()
|
|
||||||
+ integer*4 othersub2
|
|
||||||
+ othersub2 = 0
|
|
||||||
+ end
|
|
||||||
+
|
|
||||||
+ program MAIN
|
|
||||||
+ integer*4 othersub1
|
|
||||||
+ integer*4 othersub2
|
|
||||||
+ integer a /1/
|
|
||||||
+ integer b /2/
|
|
||||||
+
|
|
||||||
+ if (othersub1()) then ! { dg-error "IF clause at" }
|
|
||||||
+ write(*,*) "OK"
|
|
||||||
+ else
|
|
||||||
+ stop 1
|
|
||||||
+ end if
|
|
||||||
+ if (othersub2()) then ! { dg-error "IF clause at" }
|
|
||||||
+ stop 2
|
|
||||||
+ else
|
|
||||||
+ write(*,*) "OK"
|
|
||||||
+ end if
|
|
||||||
+ if (a-b) then ! { dg-error "IF clause at" }
|
|
||||||
+ write(*,*) "OK"
|
|
||||||
+ else
|
|
||||||
+ stop 3
|
|
||||||
+ end if
|
|
||||||
+ if (b-(a+1)) then ! { dg-error "IF clause at" }
|
|
||||||
+ stop 3
|
|
||||||
+ else
|
|
||||||
+ write(*,*) "OK"
|
|
||||||
+ end if
|
|
||||||
+ end
|
|
||||||
+
|
|
||||||
--
|
|
||||||
2.27.0
|
|
||||||
|
|
@ -1,588 +0,0 @@
|
|||||||
From 786869fd62813e80da9b6545a295d53c36275c19 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Mark Eggleston <markeggleston@gcc.gnu.org>
|
|
||||||
Date: Fri, 22 Jan 2021 13:12:14 +0000
|
|
||||||
Subject: [PATCH 06/10] Allow string length and kind to be specified on a per
|
|
||||||
variable basis.
|
|
||||||
|
|
||||||
This allows kind/length to be mixed with array specification in
|
|
||||||
declarations.
|
|
||||||
|
|
||||||
e.g.
|
|
||||||
|
|
||||||
INTEGER*4 x*2, y*8
|
|
||||||
CHARACTER names*20(10)
|
|
||||||
REAL v(100)*8, vv*4(50)
|
|
||||||
|
|
||||||
The per-variable size overrides the kind or length specified for the type.
|
|
||||||
|
|
||||||
Use -fdec-override-kind to enable. Also enabled by -fdec.
|
|
||||||
|
|
||||||
Note: this feature is a merger of two previously separate features.
|
|
||||||
|
|
||||||
Now accepts named constants as kind parameters:
|
|
||||||
|
|
||||||
INTEGER A
|
|
||||||
PARAMETER (A=2)
|
|
||||||
INTEGER B*(A)
|
|
||||||
|
|
||||||
Contributed by Mark Eggleston <mark.eggleston@codethink.com>
|
|
||||||
|
|
||||||
Now rejects invalid kind parameters and prints error messages:
|
|
||||||
|
|
||||||
INTEGER X*3
|
|
||||||
|
|
||||||
caused an internal compiler error.
|
|
||||||
|
|
||||||
Contributed by Mark Eggleston <mark.eggleston@codethink.com>
|
|
||||||
---
|
|
||||||
gcc/fortran/decl.cc | 156 ++++++++++++++----
|
|
||||||
gcc/fortran/lang.opt | 4 +
|
|
||||||
gcc/fortran/options.cc | 1 +
|
|
||||||
.../dec_mixed_char_array_declaration_1.f | 13 ++
|
|
||||||
.../dec_mixed_char_array_declaration_2.f | 13 ++
|
|
||||||
.../dec_mixed_char_array_declaration_3.f | 13 ++
|
|
||||||
.../gfortran.dg/dec_spec_in_variable_1.f | 31 ++++
|
|
||||||
.../gfortran.dg/dec_spec_in_variable_2.f | 31 ++++
|
|
||||||
.../gfortran.dg/dec_spec_in_variable_3.f | 31 ++++
|
|
||||||
.../gfortran.dg/dec_spec_in_variable_4.f | 14 ++
|
|
||||||
.../gfortran.dg/dec_spec_in_variable_5.f | 19 +++
|
|
||||||
.../gfortran.dg/dec_spec_in_variable_6.f | 19 +++
|
|
||||||
.../gfortran.dg/dec_spec_in_variable_7.f | 15 ++
|
|
||||||
.../gfortran.dg/dec_spec_in_variable_8.f | 14 ++
|
|
||||||
14 files changed, 340 insertions(+), 34 deletions(-)
|
|
||||||
create mode 100644 gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_1.f
|
|
||||||
create mode 100644 gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_2.f
|
|
||||||
create mode 100644 gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_3.f
|
|
||||||
create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_1.f
|
|
||||||
create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_2.f
|
|
||||||
create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_3.f
|
|
||||||
create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_4.f
|
|
||||||
create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_5.f
|
|
||||||
create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_6.f
|
|
||||||
create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_7.f
|
|
||||||
create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_8.f
|
|
||||||
|
|
||||||
diff --git a/gcc/fortran/decl.cc b/gcc/fortran/decl.cc
|
|
||||||
index 5c8c1b7981b..f7dc9d8263d 100644
|
|
||||||
--- a/gcc/fortran/decl.cc
|
|
||||||
+++ b/gcc/fortran/decl.cc
|
|
||||||
@@ -1213,6 +1213,54 @@ syntax:
|
|
||||||
return MATCH_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
+/* This matches the nonstandard kind given after a variable name, like:
|
|
||||||
+ INTEGER x*2, y*4
|
|
||||||
+ The per-variable kind will override any kind given in the type
|
|
||||||
+ declaration.
|
|
||||||
+*/
|
|
||||||
+
|
|
||||||
+static match
|
|
||||||
+match_per_symbol_kind (int *length)
|
|
||||||
+{
|
|
||||||
+ match m;
|
|
||||||
+ gfc_expr *expr = NULL;
|
|
||||||
+
|
|
||||||
+ m = gfc_match_char ('*');
|
|
||||||
+ if (m != MATCH_YES)
|
|
||||||
+ return m;
|
|
||||||
+
|
|
||||||
+ m = gfc_match_small_literal_int (length, NULL);
|
|
||||||
+ if (m == MATCH_YES || m == MATCH_ERROR)
|
|
||||||
+ return m;
|
|
||||||
+
|
|
||||||
+ if (gfc_match_char ('(') == MATCH_NO)
|
|
||||||
+ return MATCH_ERROR;
|
|
||||||
+
|
|
||||||
+ m = gfc_match_expr (&expr);
|
|
||||||
+ if (m == MATCH_YES)
|
|
||||||
+ {
|
|
||||||
+ m = MATCH_ERROR; // Assume error
|
|
||||||
+ if (gfc_expr_check_typed (expr, gfc_current_ns, false))
|
|
||||||
+ {
|
|
||||||
+ if ((expr->expr_type == EXPR_CONSTANT)
|
|
||||||
+ && (expr->ts.type == BT_INTEGER))
|
|
||||||
+ {
|
|
||||||
+ *length = mpz_get_si(expr->value.integer);
|
|
||||||
+ m = MATCH_YES;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (m == MATCH_YES)
|
|
||||||
+ {
|
|
||||||
+ if (gfc_match_char (')') == MATCH_NO)
|
|
||||||
+ m = MATCH_ERROR;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (expr != NULL)
|
|
||||||
+ gfc_free_expr (expr);
|
|
||||||
+ return m;
|
|
||||||
+}
|
|
||||||
|
|
||||||
/* Special subroutine for finding a symbol. Check if the name is found
|
|
||||||
in the current name space. If not, and we're compiling a function or
|
|
||||||
@@ -2443,6 +2491,35 @@ check_function_name (char *name)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
+static match
|
|
||||||
+match_character_length_clause (gfc_charlen **cl, bool *cl_deferred, int elem)
|
|
||||||
+{
|
|
||||||
+ gfc_expr* char_len;
|
|
||||||
+ char_len = NULL;
|
|
||||||
+
|
|
||||||
+ match m = match_char_length (&char_len, cl_deferred, false);
|
|
||||||
+ if (m == MATCH_YES)
|
|
||||||
+ {
|
|
||||||
+ *cl = gfc_new_charlen (gfc_current_ns, NULL);
|
|
||||||
+ (*cl)->length = char_len;
|
|
||||||
+ }
|
|
||||||
+ else if (m == MATCH_NO)
|
|
||||||
+ {
|
|
||||||
+ if (elem > 1
|
|
||||||
+ && (current_ts.u.cl->length == NULL
|
|
||||||
+ || current_ts.u.cl->length->expr_type != EXPR_CONSTANT))
|
|
||||||
+ {
|
|
||||||
+ *cl = gfc_new_charlen (gfc_current_ns, NULL);
|
|
||||||
+ (*cl)->length = gfc_copy_expr (current_ts.u.cl->length);
|
|
||||||
+ }
|
|
||||||
+ else
|
|
||||||
+ *cl = current_ts.u.cl;
|
|
||||||
+
|
|
||||||
+ *cl_deferred = current_ts.deferred;
|
|
||||||
+ }
|
|
||||||
+ return m;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
/* Match a variable name with an optional initializer. When this
|
|
||||||
subroutine is called, a variable is expected to be parsed next.
|
|
||||||
Depending on what is happening at the moment, updates either the
|
|
||||||
@@ -2453,7 +2530,7 @@ variable_decl (int elem)
|
|
||||||
{
|
|
||||||
char name[GFC_MAX_SYMBOL_LEN + 1];
|
|
||||||
static unsigned int fill_id = 0;
|
|
||||||
- gfc_expr *initializer, *char_len;
|
|
||||||
+ gfc_expr *initializer;
|
|
||||||
gfc_array_spec *as;
|
|
||||||
gfc_array_spec *cp_as; /* Extra copy for Cray Pointees. */
|
|
||||||
gfc_charlen *cl;
|
|
||||||
@@ -2462,11 +2539,15 @@ variable_decl (int elem)
|
|
||||||
match m;
|
|
||||||
bool t;
|
|
||||||
gfc_symbol *sym;
|
|
||||||
+ match cl_match;
|
|
||||||
+ match kind_match;
|
|
||||||
+ int overridden_kind;
|
|
||||||
char c;
|
|
||||||
|
|
||||||
initializer = NULL;
|
|
||||||
as = NULL;
|
|
||||||
cp_as = NULL;
|
|
||||||
+ kind_match = MATCH_NO;
|
|
||||||
|
|
||||||
/* When we get here, we've just matched a list of attributes and
|
|
||||||
maybe a type and a double colon. The next thing we expect to see
|
|
||||||
@@ -2519,6 +2600,28 @@ variable_decl (int elem)
|
|
||||||
|
|
||||||
var_locus = gfc_current_locus;
|
|
||||||
|
|
||||||
+
|
|
||||||
+ cl = NULL;
|
|
||||||
+ cl_deferred = false;
|
|
||||||
+ cl_match = MATCH_NO;
|
|
||||||
+
|
|
||||||
+ /* Check for a character length clause before an array clause */
|
|
||||||
+ if (flag_dec_override_kind)
|
|
||||||
+ {
|
|
||||||
+ if (current_ts.type == BT_CHARACTER)
|
|
||||||
+ {
|
|
||||||
+ cl_match = match_character_length_clause (&cl, &cl_deferred, elem);
|
|
||||||
+ if (cl_match == MATCH_ERROR)
|
|
||||||
+ goto cleanup;
|
|
||||||
+ }
|
|
||||||
+ else
|
|
||||||
+ {
|
|
||||||
+ kind_match = match_per_symbol_kind (&overridden_kind);
|
|
||||||
+ if (kind_match == MATCH_ERROR)
|
|
||||||
+ goto cleanup;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
/* Now we could see the optional array spec. or character length. */
|
|
||||||
m = gfc_match_array_spec (&as, true, true);
|
|
||||||
if (m == MATCH_ERROR)
|
|
||||||
@@ -2667,40 +2770,12 @@ variable_decl (int elem)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
- char_len = NULL;
|
|
||||||
- cl = NULL;
|
|
||||||
- cl_deferred = false;
|
|
||||||
-
|
|
||||||
- if (current_ts.type == BT_CHARACTER)
|
|
||||||
+ /* Second chance for a character length clause */
|
|
||||||
+ if (cl_match == MATCH_NO && current_ts.type == BT_CHARACTER)
|
|
||||||
{
|
|
||||||
- switch (match_char_length (&char_len, &cl_deferred, false))
|
|
||||||
- {
|
|
||||||
- case MATCH_YES:
|
|
||||||
- cl = gfc_new_charlen (gfc_current_ns, NULL);
|
|
||||||
-
|
|
||||||
- cl->length = char_len;
|
|
||||||
- break;
|
|
||||||
-
|
|
||||||
- /* Non-constant lengths need to be copied after the first
|
|
||||||
- element. Also copy assumed lengths. */
|
|
||||||
- case MATCH_NO:
|
|
||||||
- if (elem > 1
|
|
||||||
- && (current_ts.u.cl->length == NULL
|
|
||||||
- || current_ts.u.cl->length->expr_type != EXPR_CONSTANT))
|
|
||||||
- {
|
|
||||||
- cl = gfc_new_charlen (gfc_current_ns, NULL);
|
|
||||||
- cl->length = gfc_copy_expr (current_ts.u.cl->length);
|
|
||||||
- }
|
|
||||||
- else
|
|
||||||
- cl = current_ts.u.cl;
|
|
||||||
-
|
|
||||||
- cl_deferred = current_ts.deferred;
|
|
||||||
-
|
|
||||||
- break;
|
|
||||||
-
|
|
||||||
- case MATCH_ERROR:
|
|
||||||
- goto cleanup;
|
|
||||||
- }
|
|
||||||
+ m = match_character_length_clause (&cl, &cl_deferred, elem);
|
|
||||||
+ if (m == MATCH_ERROR)
|
|
||||||
+ goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* The dummy arguments and result of the abreviated form of MODULE
|
|
||||||
@@ -2802,6 +2877,19 @@ variable_decl (int elem)
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ if (kind_match == MATCH_YES)
|
|
||||||
+ {
|
|
||||||
+ gfc_find_symbol (name, gfc_current_ns, 1, &sym);
|
|
||||||
+ /* sym *must* be found at this point */
|
|
||||||
+ sym->ts.kind = overridden_kind;
|
|
||||||
+ if (gfc_validate_kind (sym->ts.type, sym->ts.kind, true) < 0)
|
|
||||||
+ {
|
|
||||||
+ gfc_error ("Kind %d not supported for type %s at %C",
|
|
||||||
+ sym->ts.kind, gfc_basic_typename (sym->ts.type));
|
|
||||||
+ return MATCH_ERROR;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
if (!check_function_name (name))
|
|
||||||
{
|
|
||||||
m = MATCH_ERROR;
|
|
||||||
diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt
|
|
||||||
index 25cc948699b..4a269ebb22d 100644
|
|
||||||
--- a/gcc/fortran/lang.opt
|
|
||||||
+++ b/gcc/fortran/lang.opt
|
|
||||||
@@ -502,6 +502,10 @@ fdec-math
|
|
||||||
Fortran Var(flag_dec_math)
|
|
||||||
Enable legacy math intrinsics for compatibility.
|
|
||||||
|
|
||||||
+fdec-override-kind
|
|
||||||
+Fortran Var(flag_dec_override_kind)
|
|
||||||
+Enable support for per variable kind specification.
|
|
||||||
+
|
|
||||||
fdec-structure
|
|
||||||
Fortran Var(flag_dec_structure)
|
|
||||||
Enable support for DEC STRUCTURE/RECORD.
|
|
||||||
diff --git a/gcc/fortran/options.cc b/gcc/fortran/options.cc
|
|
||||||
index d6bd36c3a8a..edbab483b36 100644
|
|
||||||
--- a/gcc/fortran/options.cc
|
|
||||||
+++ b/gcc/fortran/options.cc
|
|
||||||
@@ -78,6 +78,7 @@ set_dec_flags (int value)
|
|
||||||
SET_BITFLAG (flag_dec_blank_format_item, value, value);
|
|
||||||
SET_BITFLAG (flag_dec_char_conversions, value, value);
|
|
||||||
SET_BITFLAG (flag_dec_duplicates, value, value);
|
|
||||||
+ SET_BITFLAG (flag_dec_override_kind, value, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Finalize DEC flags. */
|
|
||||||
diff --git a/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_1.f b/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_1.f
|
|
||||||
new file mode 100644
|
|
||||||
index 00000000000..706ea4112a4
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_1.f
|
|
||||||
@@ -0,0 +1,13 @@
|
|
||||||
+! { dg-do run }
|
|
||||||
+! { dg-options "-fdec" }
|
|
||||||
+!
|
|
||||||
+! Test character declaration with mixed string length and array specification
|
|
||||||
+!
|
|
||||||
+! Contributed by Jim MacArthur <jim.macarthur@codethink.co.uk>
|
|
||||||
+! Modified by Mark Eggleston <mark.eggleston@codethink.com>
|
|
||||||
+!
|
|
||||||
+ PROGRAM character_declaration
|
|
||||||
+ CHARACTER ASPEC_SLENGTH*2 (5) /'01','02','03','04','05'/
|
|
||||||
+ CHARACTER SLENGTH_ASPEC(5)*2 /'01','02','03','04','05'/
|
|
||||||
+ if (ASPEC_SLENGTH(3).NE.SLENGTH_ASPEC(3)) STOP 1
|
|
||||||
+ END
|
|
||||||
diff --git a/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_2.f b/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_2.f
|
|
||||||
new file mode 100644
|
|
||||||
index 00000000000..26d2acf01de
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_2.f
|
|
||||||
@@ -0,0 +1,13 @@
|
|
||||||
+! { dg-do run }
|
|
||||||
+! { dg-options "-fdec-override-kind" }
|
|
||||||
+!
|
|
||||||
+! Test character declaration with mixed string length and array specification
|
|
||||||
+!
|
|
||||||
+! Contributed by Jim MacArthur <jim.macarthur@codethink.co.uk>
|
|
||||||
+! Modified by Mark Eggleston <mark.eggleston@codethink.com>
|
|
||||||
+!
|
|
||||||
+ PROGRAM character_declaration
|
|
||||||
+ CHARACTER ASPEC_SLENGTH*2 (5) /'01','02','03','04','05'/
|
|
||||||
+ CHARACTER SLENGTH_ASPEC(5)*2 /'01','02','03','04','05'/
|
|
||||||
+ if (ASPEC_SLENGTH(3).NE.SLENGTH_ASPEC(3)) STOP 1
|
|
||||||
+ END
|
|
||||||
diff --git a/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_3.f b/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_3.f
|
|
||||||
new file mode 100644
|
|
||||||
index 00000000000..76e4f0bdb93
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_3.f
|
|
||||||
@@ -0,0 +1,13 @@
|
|
||||||
+! { dg-do compile }
|
|
||||||
+! { dg-options "-fdec-override-kind -fno-dec-override-kind" }
|
|
||||||
+!
|
|
||||||
+! Test character declaration with mixed string length and array specification
|
|
||||||
+!
|
|
||||||
+! Contributed by Jim MacArthur <jim.macarthur@codethink.co.uk>
|
|
||||||
+! Modified by Mark Eggleston <mark.eggleston@codethink.com>
|
|
||||||
+!
|
|
||||||
+ PROGRAM character_declaration
|
|
||||||
+ CHARACTER ASPEC_SLENGTH*2 (5) /'01','02','03','04','05'/ ! { dg-error "Syntax error" }
|
|
||||||
+ CHARACTER SLENGTH_ASPEC(5)*2 /'01','02','03','04','05'/
|
|
||||||
+ if (ASPEC_SLENGTH(3).NE.SLENGTH_ASPEC(3)) STOP 1 ! { dg-error " Operands of comparison operator" }
|
|
||||||
+ END
|
|
||||||
diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_1.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_1.f
|
|
||||||
new file mode 100644
|
|
||||||
index 00000000000..edd0f5874b7
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_1.f
|
|
||||||
@@ -0,0 +1,31 @@
|
|
||||||
+! { dg-do run }
|
|
||||||
+! { dg-options "-fdec" }
|
|
||||||
+!
|
|
||||||
+! Test kind specification in variable not in type
|
|
||||||
+!
|
|
||||||
+! Contributed by Mark Eggleston <mark.eggleston@codethink.com>
|
|
||||||
+!
|
|
||||||
+ program spec_in_var
|
|
||||||
+ integer*8 ai*1, bi*4, ci
|
|
||||||
+ real*4 ar*4, br*8, cr
|
|
||||||
+
|
|
||||||
+ ai = 1
|
|
||||||
+ ar = 1.0
|
|
||||||
+ bi = 2
|
|
||||||
+ br = 2.0
|
|
||||||
+ ci = 3
|
|
||||||
+ cr = 3.0
|
|
||||||
+
|
|
||||||
+ if (ai .ne. 1) stop 1
|
|
||||||
+ if (abs(ar - 1.0) > 1.0D-6) stop 2
|
|
||||||
+ if (bi .ne. 2) stop 3
|
|
||||||
+ if (abs(br - 2.0) > 1.0D-6) stop 4
|
|
||||||
+ if (ci .ne. 3) stop 5
|
|
||||||
+ if (abs(cr - 3.0) > 1.0D-6) stop 6
|
|
||||||
+ if (kind(ai) .ne. 1) stop 7
|
|
||||||
+ if (kind(ar) .ne. 4) stop 8
|
|
||||||
+ if (kind(bi) .ne. 4) stop 9
|
|
||||||
+ if (kind(br) .ne. 8) stop 10
|
|
||||||
+ if (kind(ci) .ne. 8) stop 11
|
|
||||||
+ if (kind(cr) .ne. 4) stop 12
|
|
||||||
+ end
|
|
||||||
diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_2.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_2.f
|
|
||||||
new file mode 100644
|
|
||||||
index 00000000000..bfaba584dbb
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_2.f
|
|
||||||
@@ -0,0 +1,31 @@
|
|
||||||
+! { dg-do run }
|
|
||||||
+! { dg-options "-fdec-override-kind" }
|
|
||||||
+!
|
|
||||||
+! Test kind specification in variable not in type
|
|
||||||
+!
|
|
||||||
+! Contributed by Mark Eggleston <mark.eggleston@codethink.com>
|
|
||||||
+!
|
|
||||||
+ program spec_in_var
|
|
||||||
+ integer*8 ai*1, bi*4, ci
|
|
||||||
+ real*4 ar*4, br*8, cr
|
|
||||||
+
|
|
||||||
+ ai = 1
|
|
||||||
+ ar = 1.0
|
|
||||||
+ bi = 2
|
|
||||||
+ br = 2.0
|
|
||||||
+ ci = 3
|
|
||||||
+ cr = 3.0
|
|
||||||
+
|
|
||||||
+ if (ai .ne. 1) stop 1
|
|
||||||
+ if (abs(ar - 1.0) > 1.0D-6) stop 2
|
|
||||||
+ if (bi .ne. 2) stop 3
|
|
||||||
+ if (abs(br - 2.0) > 1.0D-6) stop 4
|
|
||||||
+ if (ci .ne. 3) stop 5
|
|
||||||
+ if (abs(cr - 3.0) > 1.0D-6) stop 6
|
|
||||||
+ if (kind(ai) .ne. 1) stop 7
|
|
||||||
+ if (kind(ar) .ne. 4) stop 8
|
|
||||||
+ if (kind(bi) .ne. 4) stop 9
|
|
||||||
+ if (kind(br) .ne. 8) stop 10
|
|
||||||
+ if (kind(ci) .ne. 8) stop 11
|
|
||||||
+ if (kind(cr) .ne. 4) stop 12
|
|
||||||
+ end
|
|
||||||
diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_3.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_3.f
|
|
||||||
new file mode 100644
|
|
||||||
index 00000000000..5ff434e7466
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_3.f
|
|
||||||
@@ -0,0 +1,31 @@
|
|
||||||
+! { dg-do compile }
|
|
||||||
+! { dg-options "-fdec -fno-dec-override-kind" }
|
|
||||||
+!
|
|
||||||
+! Test kind specification in variable not in type
|
|
||||||
+!
|
|
||||||
+! Contributed by Mark Eggleston <mark.eggleston@codethink.com>
|
|
||||||
+!
|
|
||||||
+ program spec_in_var
|
|
||||||
+ integer*8 ai*1, bi*4, ci ! { dg-error "Syntax error" }
|
|
||||||
+ real*4 ar*4, br*8, cr ! { dg-error "Syntax error" }
|
|
||||||
+
|
|
||||||
+ ai = 1
|
|
||||||
+ ar = 1.0
|
|
||||||
+ bi = 2
|
|
||||||
+ br = 2.0
|
|
||||||
+ ci = 3
|
|
||||||
+ cr = 3.0
|
|
||||||
+
|
|
||||||
+ if (ai .ne. 1) stop 1
|
|
||||||
+ if (abs(ar - 1.0) > 1.0D-6) stop 2
|
|
||||||
+ if (bi .ne. 2) stop 3
|
|
||||||
+ if (abs(br - 2.0) > 1.0D-6) stop 4
|
|
||||||
+ if (ci .ne. 3) stop 5
|
|
||||||
+ if (abs(cr - 3.0) > 1.0D-6) stop 6
|
|
||||||
+ if (kind(ai) .ne. 1) stop 7
|
|
||||||
+ if (kind(ar) .ne. 4) stop 8
|
|
||||||
+ if (kind(bi) .ne. 4) stop 9
|
|
||||||
+ if (kind(br) .ne. 8) stop 10
|
|
||||||
+ if (kind(ci) .ne. 8) stop 11
|
|
||||||
+ if (kind(cr) .ne. 4) stop 12
|
|
||||||
+ end
|
|
||||||
diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_4.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_4.f
|
|
||||||
new file mode 100644
|
|
||||||
index 00000000000..c01980e8b9d
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_4.f
|
|
||||||
@@ -0,0 +1,14 @@
|
|
||||||
+! { dg-do compile }
|
|
||||||
+!
|
|
||||||
+! Test kind specification in variable not in type. The per variable
|
|
||||||
+! kind specification is not enabled so these should fail
|
|
||||||
+!
|
|
||||||
+! Contributed by Mark Eggleston <mark.eggleston@codethink.com>
|
|
||||||
+!
|
|
||||||
+ program spec_in_var
|
|
||||||
+ integer a
|
|
||||||
+ parameter(a=2)
|
|
||||||
+ integer b*(a) ! { dg-error "Syntax error" }
|
|
||||||
+ real c*(8) ! { dg-error "Syntax error" }
|
|
||||||
+ logical d*1_1 ! { dg-error "Syntax error" }
|
|
||||||
+ end
|
|
||||||
diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_5.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_5.f
|
|
||||||
new file mode 100644
|
|
||||||
index 00000000000..e2f39da3f4f
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_5.f
|
|
||||||
@@ -0,0 +1,19 @@
|
|
||||||
+! { dg-do run }
|
|
||||||
+! { dg-options "-fdec-override-kind" }
|
|
||||||
+!
|
|
||||||
+! Test kind specification in variable not in type
|
|
||||||
+!
|
|
||||||
+! Contributed by Mark Eggleston <mark.eggleston@codethink.com>
|
|
||||||
+!
|
|
||||||
+ program spec_in_var
|
|
||||||
+ integer a
|
|
||||||
+ parameter(a=2)
|
|
||||||
+ integer b*(a)
|
|
||||||
+ real c*(8)
|
|
||||||
+ logical d*(1_1)
|
|
||||||
+ character e*(a)
|
|
||||||
+ if (kind(b).ne.2) stop 1
|
|
||||||
+ if (kind(c).ne.8) stop 2
|
|
||||||
+ if (kind(d).ne.1) stop 3
|
|
||||||
+ if (len(e).ne.2) stop 4
|
|
||||||
+ end
|
|
||||||
diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_6.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_6.f
|
|
||||||
new file mode 100644
|
|
||||||
index 00000000000..569747874e3
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_6.f
|
|
||||||
@@ -0,0 +1,19 @@
|
|
||||||
+! { dg-do run }
|
|
||||||
+! { dg-options "-fdec" }
|
|
||||||
+!
|
|
||||||
+! Test kind specification in variable not in type
|
|
||||||
+!
|
|
||||||
+! Contributed by Mark Eggleston <mark.eggleston@codethink.com>
|
|
||||||
+!
|
|
||||||
+ program spec_in_var
|
|
||||||
+ integer a
|
|
||||||
+ parameter(a=2)
|
|
||||||
+ integer b*(a)
|
|
||||||
+ real c*(8)
|
|
||||||
+ logical d*(1_1)
|
|
||||||
+ character e*(a)
|
|
||||||
+ if (kind(b).ne.2) stop 1
|
|
||||||
+ if (kind(c).ne.8) stop 2
|
|
||||||
+ if (kind(d).ne.1) stop 3
|
|
||||||
+ if (len(e).ne.2) stop 4
|
|
||||||
+ end
|
|
||||||
diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_7.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_7.f
|
|
||||||
new file mode 100644
|
|
||||||
index 00000000000..b975bfd15c5
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_7.f
|
|
||||||
@@ -0,0 +1,15 @@
|
|
||||||
+! { dg-do compile }
|
|
||||||
+! { dg-options "-fdec -fno-dec-override-kind" }
|
|
||||||
+!
|
|
||||||
+! Test kind specification in variable not in type as the per variable
|
|
||||||
+! kind specification is not enables these should fail
|
|
||||||
+!
|
|
||||||
+! Contributed by Mark Eggleston <mark.eggleston@codethink.com>
|
|
||||||
+!
|
|
||||||
+ program spec_in_var
|
|
||||||
+ integer a
|
|
||||||
+ parameter(a=2)
|
|
||||||
+ integer b*(a) ! { dg-error "Syntax error" }
|
|
||||||
+ real c*(8) ! { dg-error "Syntax error" }
|
|
||||||
+ logical d*1_1 ! { dg-error "Syntax error" }
|
|
||||||
+ end
|
|
||||||
diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_8.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_8.f
|
|
||||||
new file mode 100644
|
|
||||||
index 00000000000..85732e0bd85
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_8.f
|
|
||||||
@@ -0,0 +1,14 @@
|
|
||||||
+! { dg-do compile }
|
|
||||||
+! { dg-options "-fdec" }
|
|
||||||
+!
|
|
||||||
+! Check that invalid kind values are rejected.
|
|
||||||
+!
|
|
||||||
+! Contributed by Mark Eggleston <mark.eggleston@codethink.com>
|
|
||||||
+!
|
|
||||||
+ program spec_in_var
|
|
||||||
+ integer a
|
|
||||||
+ parameter(a=3)
|
|
||||||
+ integer b*(a) ! { dg-error "Kind 3 not supported" }
|
|
||||||
+ real c*(78) ! { dg-error "Kind 78 not supported" }
|
|
||||||
+ logical d*(*) ! { dg-error "Invalid character" }
|
|
||||||
+ end
|
|
||||||
--
|
|
||||||
2.27.0
|
|
||||||
|
|
@ -1,305 +0,0 @@
|
|||||||
From 9b45f3063dfd2b893e7963a4828c1b0afecdc68a Mon Sep 17 00:00:00 2001
|
|
||||||
From: Mark Eggleston <markeggleston@gcc.gnu.org>
|
|
||||||
Date: Fri, 22 Jan 2021 12:41:46 +0000
|
|
||||||
Subject: [PATCH 02/10] Convert LOGICAL to INTEGER for arithmetic ops, and vice
|
|
||||||
versa
|
|
||||||
|
|
||||||
We allow converting LOGICAL types to INTEGER when doing arithmetic
|
|
||||||
operations, and converting INTEGER types to LOGICAL for use in
|
|
||||||
boolean operations.
|
|
||||||
|
|
||||||
This feature is enabled with the -flogical-as-integer flag.
|
|
||||||
|
|
||||||
Note: using this feature will disable bitwise logical operations enabled by
|
|
||||||
-fdec.
|
|
||||||
---
|
|
||||||
gcc/fortran/lang.opt | 4 ++
|
|
||||||
gcc/fortran/resolve.cc | 55 ++++++++++++++++++-
|
|
||||||
.../logical_to_integer_and_vice_versa_1.f | 31 +++++++++++
|
|
||||||
.../logical_to_integer_and_vice_versa_2.f | 31 +++++++++++
|
|
||||||
.../logical_to_integer_and_vice_versa_3.f | 33 +++++++++++
|
|
||||||
.../logical_to_integer_and_vice_versa_4.f | 33 +++++++++++
|
|
||||||
6 files changed, 186 insertions(+), 1 deletion(-)
|
|
||||||
create mode 100644 gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_1.f
|
|
||||||
create mode 100644 gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_2.f
|
|
||||||
create mode 100644 gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_3.f
|
|
||||||
create mode 100644 gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_4.f
|
|
||||||
|
|
||||||
diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt
|
|
||||||
index 52bd522051e..c4da248f07c 100644
|
|
||||||
--- a/gcc/fortran/lang.opt
|
|
||||||
+++ b/gcc/fortran/lang.opt
|
|
||||||
@@ -497,6 +497,10 @@ fdec-static
|
|
||||||
Fortran Var(flag_dec_static)
|
|
||||||
Enable DEC-style STATIC and AUTOMATIC attributes.
|
|
||||||
|
|
||||||
+flogical-as-integer
|
|
||||||
+Fortran Var(flag_logical_as_integer)
|
|
||||||
+Convert from integer to logical or logical to integer for arithmetic operations.
|
|
||||||
+
|
|
||||||
fdefault-double-8
|
|
||||||
Fortran Var(flag_default_double)
|
|
||||||
Set the default double precision kind to an 8 byte wide type.
|
|
||||||
diff --git a/gcc/fortran/resolve.cc b/gcc/fortran/resolve.cc
|
|
||||||
index c075d0fa0c4..4b90cb59902 100644
|
|
||||||
--- a/gcc/fortran/resolve.cc
|
|
||||||
+++ b/gcc/fortran/resolve.cc
|
|
||||||
@@ -3915,7 +3915,6 @@ lookup_uop_fuzzy (const char *op, gfc_symtree *uop)
|
|
||||||
return gfc_closest_fuzzy_match (op, candidates);
|
|
||||||
}
|
|
||||||
|
|
||||||
-
|
|
||||||
/* Callback finding an impure function as an operand to an .and. or
|
|
||||||
.or. expression. Remember the last function warned about to
|
|
||||||
avoid double warnings when recursing. */
|
|
||||||
@@ -3975,6 +3974,22 @@ convert_hollerith_to_character (gfc_expr *e)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
+/* If E is a logical, convert it to an integer and issue a warning
|
|
||||||
+ for the conversion. */
|
|
||||||
+
|
|
||||||
+static void
|
|
||||||
+convert_integer_to_logical (gfc_expr *e)
|
|
||||||
+{
|
|
||||||
+ if (e->ts.type == BT_INTEGER)
|
|
||||||
+ {
|
|
||||||
+ /* Convert to LOGICAL */
|
|
||||||
+ gfc_typespec t;
|
|
||||||
+ t.type = BT_LOGICAL;
|
|
||||||
+ t.kind = 1;
|
|
||||||
+ gfc_convert_type_warn (e, &t, 2, 1);
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
/* Convert to numeric and issue a warning for the conversion. */
|
|
||||||
|
|
||||||
static void
|
|
||||||
@@ -3987,6 +4002,22 @@ convert_to_numeric (gfc_expr *a, gfc_expr *b)
|
|
||||||
gfc_convert_type_warn (a, &t, 2, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
+/* If E is a logical, convert it to an integer and issue a warning
|
|
||||||
+ for the conversion. */
|
|
||||||
+
|
|
||||||
+static void
|
|
||||||
+convert_logical_to_integer (gfc_expr *e)
|
|
||||||
+{
|
|
||||||
+ if (e->ts.type == BT_LOGICAL)
|
|
||||||
+ {
|
|
||||||
+ /* Convert to INTEGER */
|
|
||||||
+ gfc_typespec t;
|
|
||||||
+ t.type = BT_INTEGER;
|
|
||||||
+ t.kind = 1;
|
|
||||||
+ gfc_convert_type_warn (e, &t, 2, 1);
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
/* Resolve an operator expression node. This can involve replacing the
|
|
||||||
operation with a user defined function call. */
|
|
||||||
|
|
||||||
@@ -4072,6 +4103,12 @@ resolve_operator (gfc_expr *e)
|
|
||||||
case INTRINSIC_TIMES:
|
|
||||||
case INTRINSIC_DIVIDE:
|
|
||||||
case INTRINSIC_POWER:
|
|
||||||
+ if (flag_logical_as_integer)
|
|
||||||
+ {
|
|
||||||
+ convert_logical_to_integer (op1);
|
|
||||||
+ convert_logical_to_integer (op2);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
if (gfc_numeric_ts (&op1->ts) && gfc_numeric_ts (&op2->ts))
|
|
||||||
{
|
|
||||||
gfc_type_convert_binary (e, 1);
|
|
||||||
@@ -4108,6 +4145,13 @@ resolve_operator (gfc_expr *e)
|
|
||||||
case INTRINSIC_OR:
|
|
||||||
case INTRINSIC_EQV:
|
|
||||||
case INTRINSIC_NEQV:
|
|
||||||
+
|
|
||||||
+ if (flag_logical_as_integer)
|
|
||||||
+ {
|
|
||||||
+ convert_integer_to_logical (op1);
|
|
||||||
+ convert_integer_to_logical (op2);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
if (op1->ts.type == BT_LOGICAL && op2->ts.type == BT_LOGICAL)
|
|
||||||
{
|
|
||||||
e->ts.type = BT_LOGICAL;
|
|
||||||
@@ -4158,6 +4202,9 @@ resolve_operator (gfc_expr *e)
|
|
||||||
goto simplify_op;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ if (flag_logical_as_integer)
|
|
||||||
+ convert_integer_to_logical (op1);
|
|
||||||
+
|
|
||||||
if (op1->ts.type == BT_LOGICAL)
|
|
||||||
{
|
|
||||||
e->ts.type = BT_LOGICAL;
|
|
||||||
@@ -4198,6 +4245,12 @@ resolve_operator (gfc_expr *e)
|
|
||||||
convert_hollerith_to_character (op2);
|
|
||||||
}
|
|
||||||
|
|
||||||
+ if (flag_logical_as_integer)
|
|
||||||
+ {
|
|
||||||
+ convert_logical_to_integer (op1);
|
|
||||||
+ convert_logical_to_integer (op2);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
if (op1->ts.type == BT_CHARACTER && op2->ts.type == BT_CHARACTER
|
|
||||||
&& op1->ts.kind == op2->ts.kind)
|
|
||||||
{
|
|
||||||
diff --git a/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_1.f b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_1.f
|
|
||||||
new file mode 100644
|
|
||||||
index 00000000000..938a91d9e9a
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_1.f
|
|
||||||
@@ -0,0 +1,31 @@
|
|
||||||
+! { dg-do run }
|
|
||||||
+! { dg-options "-std=legacy -flogical-as-integer" }
|
|
||||||
+!
|
|
||||||
+! Test conversion between logical and integer for logical operators
|
|
||||||
+!
|
|
||||||
+! Test case contributed by Jim MacArthur <jim.macarthur@codethink.co.uk>
|
|
||||||
+! Modified for -flogical-as-integer by Mark Eggleston
|
|
||||||
+! <mark.eggleston@codethink.com>
|
|
||||||
+!
|
|
||||||
+ PROGRAM logical_integer_conversion
|
|
||||||
+ LOGICAL lpos /.true./
|
|
||||||
+ INTEGER ineg/0/
|
|
||||||
+ INTEGER ires
|
|
||||||
+ LOGICAL lres
|
|
||||||
+
|
|
||||||
+ ! Test Logicals converted to Integers
|
|
||||||
+ if ((lpos.AND.ineg).EQ.1) STOP 3
|
|
||||||
+ if ((ineg.AND.lpos).NE.0) STOP 4
|
|
||||||
+ ires = (.true..AND.0)
|
|
||||||
+ if (ires.NE.0) STOP 5
|
|
||||||
+ ires = (1.AND..false.)
|
|
||||||
+ if (ires.EQ.1) STOP 6
|
|
||||||
+
|
|
||||||
+ ! Test Integers converted to Logicals
|
|
||||||
+ if (lpos.EQ.ineg) STOP 7
|
|
||||||
+ if (ineg.EQ.lpos) STOP 8
|
|
||||||
+ lres = (.true..EQ.0)
|
|
||||||
+ if (lres) STOP 9
|
|
||||||
+ lres = (1.EQ..false.)
|
|
||||||
+ if (lres) STOP 10
|
|
||||||
+ END
|
|
||||||
diff --git a/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_2.f b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_2.f
|
|
||||||
new file mode 100644
|
|
||||||
index 00000000000..9f146202ba5
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_2.f
|
|
||||||
@@ -0,0 +1,31 @@
|
|
||||||
+! { dg-do compile }
|
|
||||||
+! { dg-options "-std=legacy -flogical-as-integer -fno-logical-as-integer" }
|
|
||||||
+!
|
|
||||||
+! Based on logical_to_integer_and_vice_versa_1.f but with option disabled
|
|
||||||
+! to test for error messages.
|
|
||||||
+!
|
|
||||||
+! Test case contributed by by Mark Eggleston <mark.eggleston@codethink.com>
|
|
||||||
+!
|
|
||||||
+!
|
|
||||||
+ PROGRAM logical_integer_conversion
|
|
||||||
+ LOGICAL lpos /.true./
|
|
||||||
+ INTEGER ineg/0/
|
|
||||||
+ INTEGER ires
|
|
||||||
+ LOGICAL lres
|
|
||||||
+
|
|
||||||
+ ! Test Logicals converted to Integers
|
|
||||||
+ if ((lpos.AND.ineg).EQ.1) STOP 3 ! { dg-error "Operands of logical operator" }
|
|
||||||
+ if ((ineg.AND.lpos).NE.0) STOP 4 ! { dg-error "Operands of logical operator" }
|
|
||||||
+ ires = (.true..AND.0) ! { dg-error "Operands of logical operator" }
|
|
||||||
+ if (ires.NE.0) STOP 5
|
|
||||||
+ ires = (1.AND..false.) ! { dg-error "Operands of logical operator" }
|
|
||||||
+ if (ires.EQ.1) STOP 6
|
|
||||||
+
|
|
||||||
+ ! Test Integers converted to Logicals
|
|
||||||
+ if (lpos.EQ.ineg) STOP 7 ! { dg-error "Operands of comparison operator" }
|
|
||||||
+ if (ineg.EQ.lpos) STOP 8 ! { dg-error "Operands of comparison operator" }
|
|
||||||
+ lres = (.true..EQ.0) ! { dg-error "Operands of comparison operator" }
|
|
||||||
+ if (lres) STOP 9
|
|
||||||
+ lres = (1.EQ..false.) ! { dg-error "Operands of comparison operator" }
|
|
||||||
+ if (lres) STOP 10
|
|
||||||
+ END
|
|
||||||
diff --git a/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_3.f b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_3.f
|
|
||||||
new file mode 100644
|
|
||||||
index 00000000000..446873eb2dc
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_3.f
|
|
||||||
@@ -0,0 +1,33 @@
|
|
||||||
+! { dg-do compile }
|
|
||||||
+! { dg-options "-std=legacy -flogical-as-integer" }
|
|
||||||
+!
|
|
||||||
+! Test conversion between logical and integer for logical operators
|
|
||||||
+!
|
|
||||||
+ program test
|
|
||||||
+ logical f /.false./
|
|
||||||
+ logical t /.true./
|
|
||||||
+ real x
|
|
||||||
+
|
|
||||||
+ x = 7.7
|
|
||||||
+ x = x + t*3.0
|
|
||||||
+ if (abs(x - 10.7).gt.0.00001) stop 1
|
|
||||||
+ x = x + .false.*5.0
|
|
||||||
+ if (abs(x - 10.7).gt.0.00001) stop 2
|
|
||||||
+ x = x - .true.*5.0
|
|
||||||
+ if (abs(x - 5.7).gt.0.00001) stop 3
|
|
||||||
+ x = x + t
|
|
||||||
+ if (abs(x - 6.7).gt.0.00001) stop 4
|
|
||||||
+ x = x + f
|
|
||||||
+ if (abs(x - 6.7).gt.0.00001) stop 5
|
|
||||||
+ x = x - t
|
|
||||||
+ if (abs(x - 5.7).gt.0.00001) stop 6
|
|
||||||
+ x = x - f
|
|
||||||
+ if (abs(x - 5.7).gt.0.00001) stop 7
|
|
||||||
+ x = x**.true.
|
|
||||||
+ if (abs(x - 5.7).gt.0.00001) stop 8
|
|
||||||
+ x = x**.false.
|
|
||||||
+ if (abs(x - 1.0).gt.0.00001) stop 9
|
|
||||||
+ x = x/t
|
|
||||||
+ if (abs(x - 1.0).gt.0.00001) stop 10
|
|
||||||
+ if ((x/.false.).le.huge(x)) stop 11
|
|
||||||
+ end
|
|
||||||
diff --git a/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_4.f b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_4.f
|
|
||||||
new file mode 100644
|
|
||||||
index 00000000000..4301a4988d8
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_4.f
|
|
||||||
@@ -0,0 +1,33 @@
|
|
||||||
+! { dg-do compile }
|
|
||||||
+! { dg-options "-std=legacy -flogical-as-integer -fno-logical-as-integer" }
|
|
||||||
+!
|
|
||||||
+! Test conversion between logical and integer for logical operators
|
|
||||||
+!
|
|
||||||
+ program test
|
|
||||||
+ logical f /.false./
|
|
||||||
+ logical t /.true./
|
|
||||||
+ real x
|
|
||||||
+
|
|
||||||
+ x = 7.7
|
|
||||||
+ x = x + t*3.0 ! { dg-error "Operands of binary numeric" }
|
|
||||||
+ if (abs(x - 10.7).gt.0.00001) stop 1
|
|
||||||
+ x = x + .false.*5.0 ! { dg-error "Operands of binary numeric" }
|
|
||||||
+ if (abs(x - 10.7).gt.0.00001) stop 2
|
|
||||||
+ x = x - .true.*5.0 ! { dg-error "Operands of binary numeric" }
|
|
||||||
+ if (abs(x - 5.7).gt.0.00001) stop 3
|
|
||||||
+ x = x + t ! { dg-error "Operands of binary numeric" }
|
|
||||||
+ if (abs(x - 6.7).gt.0.00001) stop 4
|
|
||||||
+ x = x + f ! { dg-error "Operands of binary numeric" }
|
|
||||||
+ if (abs(x - 6.7).gt.0.00001) stop 5
|
|
||||||
+ x = x - t ! { dg-error "Operands of binary numeric" }
|
|
||||||
+ if (abs(x - 5.7).gt.0.00001) stop 6
|
|
||||||
+ x = x - f ! { dg-error "Operands of binary numeric" }
|
|
||||||
+ if (abs(x - 5.7).gt.0.00001) stop 7
|
|
||||||
+ x = x**.true. ! { dg-error "Operands of binary numeric" }
|
|
||||||
+ if (abs(x - 5.7).gt.0.00001) stop 8
|
|
||||||
+ x = x**.false. ! { dg-error "Operands of binary numeric" }
|
|
||||||
+ if (abs(x - 1.0).gt.0.00001) stop 9
|
|
||||||
+ x = x/t ! { dg-error "Operands of binary numeric" }
|
|
||||||
+ if (abs(x - 1.0).gt.0.00001) stop 10
|
|
||||||
+ if ((x/.false.).le.huge(x)) stop 11 ! { dg-error "Operands of binary numeric" }
|
|
||||||
+ end
|
|
||||||
--
|
|
||||||
2.27.0
|
|
||||||
|
|
@ -8797,7 +8797,7 @@
|
|||||||
+ $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@
|
+ $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@
|
||||||
--- libstdc++-v3/src/nonshared20/tzdb80.cc.jj 2023-05-19 20:25:50.447297532 +0200
|
--- libstdc++-v3/src/nonshared20/tzdb80.cc.jj 2023-05-19 20:25:50.447297532 +0200
|
||||||
+++ libstdc++-v3/src/nonshared20/tzdb80.cc 2023-05-19 19:51:19.200552634 +0200
|
+++ libstdc++-v3/src/nonshared20/tzdb80.cc 2023-05-19 19:51:19.200552634 +0200
|
||||||
@@ -0,0 +1,107 @@
|
@@ -0,0 +1,124 @@
|
||||||
+// Copyright The GNU Toolchain Authors.
|
+// Copyright The GNU Toolchain Authors.
|
||||||
+//
|
+//
|
||||||
+// This file is part of the GNU ISO C++ Library. This library is free
|
+// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
@ -8877,6 +8877,23 @@
|
|||||||
+asm (".hidden _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv");
|
+asm (".hidden _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv");
|
||||||
+asm (".hidden _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_assignERKS4_");
|
+asm (".hidden _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_assignERKS4_");
|
||||||
+asm (".hidden _ZTSSt19_Sp_make_shared_tag");
|
+asm (".hidden _ZTSSt19_Sp_make_shared_tag");
|
||||||
|
+#ifdef __i386__
|
||||||
|
+asm (".hidden _ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPNSt6chrono14time_zone_linkESt6vectorIS3_SaIS3_EEEEiS3_NS0_5__ops15_Iter_comp_iterIZNSt6ranges8__detail16__make_comp_projINSB_4lessEMS3_KDoFSt17basic_string_viewIcSt11char_traitsIcEEvEEEDaRT_RT0_EUlOSL_OSN_E_EEEvSL_SN_SN_T1_T2_");
|
||||||
|
+asm (".hidden _ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPNSt6chrono14time_zone_linkESt6vectorIS3_SaIS3_EEEEiS3_NS0_5__ops15_Iter_comp_iterIZNSt6ranges8__detail16__make_comp_projINSB_4lessESt8identityEEDaRT_RT0_EUlOSG_OSI_E_EEEvSG_SI_SI_T1_T2_");
|
||||||
|
+asm (".hidden _ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPNSt6chrono9time_zoneESt6vectorIS3_SaIS3_EEEEiS3_NS0_5__ops15_Iter_comp_iterIZNSt6ranges8__detail16__make_comp_projINSB_4lessEMS3_KDoFSt17basic_string_viewIcSt11char_traitsIcEEvEEEDaRT_RT0_EUlOSL_OSN_E_EEEvSL_SN_SN_T1_T2_");
|
||||||
|
+asm (".hidden _ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPNSt6chrono9time_zoneESt6vectorIS3_SaIS3_EEEEiS3_NS0_5__ops15_Iter_comp_iterIZNSt6ranges8__detail16__make_comp_projINSB_4lessESt8identityEEDaRT_RT0_EUlOSG_OSI_E_EEEvSG_SI_SI_T1_T2_");
|
||||||
|
+asm (".hidden _ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPNSt6chrono14time_zone_linkESt6vectorIS3_SaIS3_EEEEiNS0_5__ops15_Iter_comp_iterIZNSt6ranges8__detail16__make_comp_projINSB_4lessEMS3_KDoFSt17basic_string_viewIcSt11char_traitsIcEEvEEEDaRT_RT0_EUlOSL_OSN_E_EEEvSL_SL_SN_T1_");
|
||||||
|
+asm (".hidden _ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPNSt6chrono14time_zone_linkESt6vectorIS3_SaIS3_EEEEiNS0_5__ops15_Iter_comp_iterIZNSt6ranges8__detail16__make_comp_projINSB_4lessESt8identityEEDaRT_RT0_EUlOSG_OSI_E_EEEvSG_SG_SI_T1_");
|
||||||
|
+asm (".hidden _ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPNSt6chrono9time_zoneESt6vectorIS3_SaIS3_EEEEiNS0_5__ops15_Iter_comp_iterIZNSt6ranges8__detail16__make_comp_projINSB_4lessEMS3_KDoFSt17basic_string_viewIcSt11char_traitsIcEEvEEEDaRT_RT0_EUlOSL_OSN_E_EEEvSL_SL_SN_T1_");
|
||||||
|
+asm (".hidden _ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPNSt6chrono9time_zoneESt6vectorIS3_SaIS3_EEEEiNS0_5__ops15_Iter_comp_iterIZNSt6ranges8__detail16__make_comp_projINSB_4lessESt8identityEEDaRT_RT0_EUlOSG_OSI_E_EEEvSG_SG_SI_T1_");
|
||||||
|
+asm (".hidden _ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPNSt6chrono9time_zoneESt6vectorIS3_SaIS3_EEEENS0_5__ops14_Val_comp_iterIZNSt6ranges8__detail16__make_comp_projINSB_4lessEMS3_KDoFSt17basic_string_viewIcSt11char_traitsIcEEvEEEDaRT_RT0_EUlOSL_OSN_E_EEEvSL_SN_");
|
||||||
|
+asm (".hidden _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcjRKS3_");
|
||||||
|
+asm (".hidden _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EPKcjRKS3_");
|
||||||
|
+asm (".hidden _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_mutateEjjPKcj");
|
||||||
|
+asm (".hidden _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEjjPKcj");
|
||||||
|
+asm (".hidden _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKcj");
|
||||||
|
+asm (".hidden _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7reserveEj");
|
||||||
|
+#endif
|
||||||
+#ifndef __i386__
|
+#ifndef __i386__
|
||||||
+asm (".hidden _ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPNSt6chrono14time_zone_linkESt6vectorIS3_SaIS3_EEEElS3_NS0_5__ops15_Iter_comp_iterIZNSt6ranges8__detail16__make_comp_projINSB_4lessEMS3_KDoFSt17basic_string_viewIcSt11char_traitsIcEEvEEEDaRT_RT0_EUlOSL_OSN_E_EEEvSL_SN_SN_T1_T2_");
|
+asm (".hidden _ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPNSt6chrono14time_zone_linkESt6vectorIS3_SaIS3_EEEElS3_NS0_5__ops15_Iter_comp_iterIZNSt6ranges8__detail16__make_comp_projINSB_4lessEMS3_KDoFSt17basic_string_viewIcSt11char_traitsIcEEvEEEDaRT_RT0_EUlOSL_OSN_E_EEEvSL_SN_SN_T1_T2_");
|
||||||
+asm (".hidden _ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPNSt6chrono9time_zoneESt6vectorIS3_SaIS3_EEEElS3_NS0_5__ops15_Iter_comp_iterIZNSt6ranges8__detail16__make_comp_projINSB_4lessEMS3_KDoFSt17basic_string_viewIcSt11char_traitsIcEEvEEEDaRT_RT0_EUlOSL_OSN_E_EEEvSL_SN_SN_T1_T2_");
|
+asm (".hidden _ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPNSt6chrono9time_zoneESt6vectorIS3_SaIS3_EEEElS3_NS0_5__ops15_Iter_comp_iterIZNSt6ranges8__detail16__make_comp_projINSB_4lessEMS3_KDoFSt17basic_string_viewIcSt11char_traitsIcEEvEEEDaRT_RT0_EUlOSL_OSN_E_EEEvSL_SN_SN_T1_T2_");
|
||||||
@ -9823,7 +9840,7 @@
|
|||||||
} // namespace std
|
} // namespace std
|
||||||
--- libstdc++-v3/src/nonshared17/floating_from_chars.cc.jj 2023-05-19 12:22:56.798881312 +0200
|
--- libstdc++-v3/src/nonshared17/floating_from_chars.cc.jj 2023-05-19 12:22:56.798881312 +0200
|
||||||
+++ libstdc++-v3/src/nonshared17/floating_from_chars.cc 2023-05-19 19:52:38.332436134 +0200
|
+++ libstdc++-v3/src/nonshared17/floating_from_chars.cc 2023-05-19 19:52:38.332436134 +0200
|
||||||
@@ -0,0 +1,43 @@
|
@@ -0,0 +1,44 @@
|
||||||
+// Copyright (C) 2019-2023 Free Software Foundation, Inc.
|
+// Copyright (C) 2019-2023 Free Software Foundation, Inc.
|
||||||
+//
|
+//
|
||||||
+// This file is part of the GNU ISO C++ Library. This library is free
|
+// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
@ -9860,6 +9877,7 @@
|
|||||||
+#endif
|
+#endif
|
||||||
+//asm (".hidden _ZZNSt8__detail25__from_chars_alnum_to_valILb0EEEhhE7__table");
|
+//asm (".hidden _ZZNSt8__detail25__from_chars_alnum_to_valILb0EEEhhE7__table");
|
||||||
+#ifdef __i386__
|
+#ifdef __i386__
|
||||||
|
+asm (".hidden _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEE15_M_replace_coldEPcjPKcjj");
|
||||||
+//asm (".hidden _ZSt10from_charsIiENSt9enable_ifIXsrSt5__or_IIS1_IISt7is_sameINSt9remove_cvIT_E4typeEaES2_IS6_sES2_IS6_iES2_IS6_lES2_IS6_xEEES1_IIS2_IS6_hES2_IS6_tES2_IS6_jES2_IS6_mES2_IS6_yEEES2_IcS6_EEE5valueESt17from_chars_resultE4typeEPKcSP_RS4_i");
|
+//asm (".hidden _ZSt10from_charsIiENSt9enable_ifIXsrSt5__or_IIS1_IISt7is_sameINSt9remove_cvIT_E4typeEaES2_IS6_sES2_IS6_iES2_IS6_lES2_IS6_xEEES1_IIS2_IS6_hES2_IS6_tES2_IS6_jES2_IS6_mES2_IS6_yEEES2_IcS6_EEE5valueESt17from_chars_resultE4typeEPKcSP_RS4_i");
|
||||||
+//asm (".hidden _ZSt10from_charsIiENSt9enable_ifIXsrSt5__or_IJS1_IJSt7is_sameINSt9remove_cvIT_E4typeEaES2_IS6_sES2_IS6_iES2_IS6_lES2_IS6_xEEES1_IJS2_IS6_hES2_IS6_tES2_IS6_jES2_IS6_mES2_IS6_yEEES2_IcS6_EEE5valueESt17from_chars_resultE4typeEPKcSP_RS4_i");
|
+//asm (".hidden _ZSt10from_charsIiENSt9enable_ifIXsrSt5__or_IJS1_IJSt7is_sameINSt9remove_cvIT_E4typeEaES2_IS6_sES2_IS6_iES2_IS6_lES2_IS6_xEEES1_IJS2_IS6_hES2_IS6_tES2_IS6_jES2_IS6_mES2_IS6_yEEES2_IcS6_EEE5valueESt17from_chars_resultE4typeEPKcSP_RS4_i");
|
||||||
+#endif
|
+#endif
|
||||||
@ -9869,7 +9887,7 @@
|
|||||||
+asm (".hidden _ZNSt8__detail31__from_chars_alnum_to_val_tableILb0EE5valueE");
|
+asm (".hidden _ZNSt8__detail31__from_chars_alnum_to_val_tableILb0EE5valueE");
|
||||||
--- libstdc++-v3/src/nonshared17/floating_from_chars110.cc.jj 2023-05-19 18:08:44.662186963 +0200
|
--- libstdc++-v3/src/nonshared17/floating_from_chars110.cc.jj 2023-05-19 18:08:44.662186963 +0200
|
||||||
+++ libstdc++-v3/src/nonshared17/floating_from_chars110.cc 2023-05-19 19:46:37.242530879 +0200
|
+++ libstdc++-v3/src/nonshared17/floating_from_chars110.cc 2023-05-19 19:46:37.242530879 +0200
|
||||||
@@ -0,0 +1,40 @@
|
@@ -0,0 +1,47 @@
|
||||||
+// Copyright (C) 2019-2023 Free Software Foundation, Inc.
|
+// Copyright (C) 2019-2023 Free Software Foundation, Inc.
|
||||||
+//
|
+//
|
||||||
+// This file is part of the GNU ISO C++ Library. This library is free
|
+// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
@ -9910,6 +9928,13 @@
|
|||||||
+asm (".hidden _ZSt8to_charsPcS_u9__ieee128St12chars_formati");
|
+asm (".hidden _ZSt8to_charsPcS_u9__ieee128St12chars_formati");
|
||||||
+asm (".hidden _ZSt10from_charsPKcS0_Ru9__ieee128St12chars_format");
|
+asm (".hidden _ZSt10from_charsPKcS0_Ru9__ieee128St12chars_format");
|
||||||
+#endif
|
+#endif
|
||||||
|
+#if defined(__i386__)
|
||||||
|
+asm (".hidden _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEE9_M_mutateEjjPKcj");
|
||||||
|
+asm (".hidden _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEE9_M_createERjj");
|
||||||
|
+asm (".hidden _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEE15_M_replace_coldEPcjPKcjj");
|
||||||
|
+asm (".hidden _ZSt10from_charsIiENSt9enable_ifIXsrSt5__or_IJS1_IJSt7is_sameINSt9remove_cvIT_E4typeEaES2_IS6_sES2_IS6_iES2_IS6_lES2_IS6_xEEES1_IJS2_IS6_hES2_IS6_tES2_IS6_jES2_IS6_mES2_IS6_yEEES2_IcS6_EEE5valueESt17from_chars_resultE4typeEPKcSP_RS4_i");
|
||||||
|
+asm (".hidden _ZSt10from_charsIiENSt9enable_ifIXsrSt5__or_IIS1_IISt7is_sameINSt9remove_cvIT_E4typeEaES2_IS6_sES2_IS6_iES2_IS6_lES2_IS6_xEEES1_IIS2_IS6_hES2_IS6_tES2_IS6_jES2_IS6_mES2_IS6_yEEES2_IcS6_EEE5valueESt17from_chars_resultE4typeEPKcSP_RS4_i");
|
||||||
|
+#endif
|
||||||
--- libstdc++-v3/src/nonshared17/cow-fs_ops.cc.jj 2023-05-19 12:22:56.799881298 +0200
|
--- libstdc++-v3/src/nonshared17/cow-fs_ops.cc.jj 2023-05-19 12:22:56.799881298 +0200
|
||||||
+++ libstdc++-v3/src/nonshared17/cow-fs_ops.cc 2023-05-19 19:21:04.451145483 +0200
|
+++ libstdc++-v3/src/nonshared17/cow-fs_ops.cc 2023-05-19 19:21:04.451145483 +0200
|
||||||
@@ -0,0 +1,82 @@
|
@@ -0,0 +1,82 @@
|
||||||
|
2
sources
2
sources
@ -1,4 +1,4 @@
|
|||||||
SHA512 (gcc-13.1.1-20230426.tar.xz) = 7a588d7720c67fce57ab483168684195810a168f3234667151d0b76638d15ae50d8f9de0c9f2c2aaa1345e45c46577575b717dbb73f8cccce79932c37cacac5a
|
SHA512 (gcc-13.1.1-20230614.tar.xz) = 47deb22e3025f469cd54f60fd64cab91dd9bdc044224a2e913577d663f6218e8e7eaaf755a25e1e208c2f9a454bf657fcd2cb1b483c86805340b7fa65bcb2301
|
||||||
SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95
|
SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95
|
||||||
SHA512 (newlib-cygwin-9e09d6ed83cce4777a5950412647ccc603040409.tar.xz) = bef3fa04f7b1a915fc1356ebed114698b5cc835e9fa04b0becff05a9efc76c59fb376482990873d222d7acdcfee3c4f30f5a4cb7f3be1f291f1fa5f1c7a9d983
|
SHA512 (newlib-cygwin-9e09d6ed83cce4777a5950412647ccc603040409.tar.xz) = bef3fa04f7b1a915fc1356ebed114698b5cc835e9fa04b0becff05a9efc76c59fb376482990873d222d7acdcfee3c4f30f5a4cb7f3be1f291f1fa5f1c7a9d983
|
||||||
SHA512 (nvptx-tools-93e00909ceb9cbbc104f0fcba56c0361ffb3ca4b.tar.xz) = c719fad8689b2b6f3c888d0308604ddef884037d71ec3e755c68052d30075a181c29358fda516833ace437921b17602b147be7886317be94ec9736faa8cb52be
|
SHA512 (nvptx-tools-93e00909ceb9cbbc104f0fcba56c0361ffb3ca4b.tar.xz) = c719fad8689b2b6f3c888d0308604ddef884037d71ec3e755c68052d30075a181c29358fda516833ace437921b17602b147be7886317be94ec9736faa8cb52be
|
||||||
|
Loading…
Reference in New Issue
Block a user