From 8230ff782dc2a83df44c6a4f1342c0172fd76136 Mon Sep 17 00:00:00 2001 From: DistroBaker Date: Tue, 12 Jan 2021 08:17:11 +0000 Subject: [PATCH] Merged update from upstream sources This is an automated DistroBaker update from upstream sources. If you do not know what this is about or would like to opt out, contact the OSCI team. Source: https://src.fedoraproject.org/rpms/gcc.git#ac8f498836cb54282caf6ee9c6bb0c179029c18c --- .fmf/version | 1 + .gitignore | 1 + gating.yaml | 14 ++++ gcc.spec | 62 +++++++++++----- gcc11-pr98282.patch | 118 ------------------------------- plans/ci.fmf | 6 ++ sources | 2 +- tests/build_hello_world.sh | 9 --- tests/data/hello.c | 5 -- tests/data/hello.cpp | 5 -- tests/smoke-test/Makefile | 65 +++++++++++++++++ tests/smoke-test/PURPOSE | 3 + tests/smoke-test/clear_cache.c | 7 ++ tests/smoke-test/hello.c | 7 ++ tests/smoke-test/hello.cpp | 7 ++ tests/smoke-test/hello.f90 | 3 + tests/smoke-test/main.fmf | 22 ++++++ tests/smoke-test/omphello.c | 24 +++++++ tests/smoke-test/quad.c | 38 ++++++++++ tests/smoke-test/runtest.sh | 125 +++++++++++++++++++++++++++++++++ tests/smoke-test/thr-init-2.c | 24 +++++++ tests/smoke-test/tm.c | 34 +++++++++ tests/tests.yml | 14 ---- 23 files changed, 427 insertions(+), 169 deletions(-) create mode 100644 .fmf/version create mode 100644 gating.yaml delete mode 100644 gcc11-pr98282.patch create mode 100644 plans/ci.fmf delete mode 100755 tests/build_hello_world.sh delete mode 100644 tests/data/hello.c delete mode 100644 tests/data/hello.cpp create mode 100644 tests/smoke-test/Makefile create mode 100644 tests/smoke-test/PURPOSE create mode 100644 tests/smoke-test/clear_cache.c create mode 100644 tests/smoke-test/hello.c create mode 100644 tests/smoke-test/hello.cpp create mode 100644 tests/smoke-test/hello.f90 create mode 100644 tests/smoke-test/main.fmf create mode 100644 tests/smoke-test/omphello.c create mode 100644 tests/smoke-test/quad.c create mode 100755 tests/smoke-test/runtest.sh create mode 100644 tests/smoke-test/thr-init-2.c create mode 100644 tests/smoke-test/tm.c delete mode 100644 tests/tests.yml diff --git a/.fmf/version b/.fmf/version new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/.fmf/version @@ -0,0 +1 @@ +1 diff --git a/.gitignore b/.gitignore index add1368..2ec5a75 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,4 @@ /gcc-11.0.0-20201216.tar.xz /gcc-11.0.0-20201217.tar.xz /gcc-11.0.0-20201223.tar.xz +/gcc-11.0.0-20210109.tar.xz diff --git a/gating.yaml b/gating.yaml new file mode 100644 index 0000000..c6030c9 --- /dev/null +++ b/gating.yaml @@ -0,0 +1,14 @@ +--- !Policy +product_versions: + - fedora-* +decision_context: bodhi_update_push_stable +subject_type: koji_build +rules: + - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional} +--- !Policy +product_versions: + - rhel-9 +decision_context: osci_compose_gate +rules: + - !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier1-gating.functional} + - !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier1-gating-p9.functional} diff --git a/gcc.spec b/gcc.spec index 8b6400d..95796d4 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,5 +1,5 @@ -%global DATE 20201223 -%global gitrev 9265a9d6eb38913206ddc37009fd548c2e4f5de0 +%global DATE 20210109 +%global gitrev 9971024e74d1681c78e9b1f0b7ea1e8a6cda7304 %global gcc_version 11.0.0 %global gcc_major 11 # Note, gcc_release must be integer, if you want to add suffixes to @@ -119,7 +119,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.11%{?dist} +Release: %{gcc_release}.12%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -272,8 +272,7 @@ Patch8: gcc11-foffload-default.patch Patch9: gcc11-Wno-format-security.patch Patch10: gcc11-rh1574936.patch Patch11: gcc11-d-shared-libphobos.patch -Patch12: gcc11-pr98282.patch -Patch13: gcc11-pr98338-workaround.patch +Patch12: gcc11-pr98338-workaround.patch # On ARM EABI systems, we do want -gnueabi to be part of the # target triple. @@ -295,7 +294,7 @@ Patch13: gcc11-pr98338-workaround.patch %if %{build_go} # Avoid stripping these libraries and binaries. %global __os_install_post \ -chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.18.* \ +chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.19.* \ chmod 644 %{buildroot}%{_prefix}/bin/go.gcc \ chmod 644 %{buildroot}%{_prefix}/bin/gofmt.gcc \ chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cgo \ @@ -303,7 +302,7 @@ chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major} chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/test2json \ chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/vet \ %__os_install_post \ -chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgo.so.18.* \ +chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgo.so.19.* \ chmod 755 %{buildroot}%{_prefix}/bin/go.gcc \ chmod 755 %{buildroot}%{_prefix}/bin/gofmt.gcc \ chmod 755 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cgo \ @@ -785,8 +784,7 @@ to NVidia PTX capable devices if available. %patch10 -p0 -b .rh1574936~ %endif %patch11 -p0 -b .d-shared-libphobos~ -%patch12 -p0 -b .pr98282~ -%patch13 -p0 -b .pr98338-workaround~ +%patch12 -p0 -b .pr98338-workaround~ echo 'Red Hat %{version}-%{gcc_release}' > gcc/DEV-PHASE @@ -1390,7 +1388,7 @@ ln -sf ../../../libstdc++.so.6.*[0-9] libstdc++.so ln -sf ../../../libgfortran.so.5.* libgfortran.so ln -sf ../../../libgomp.so.1.* libgomp.so %if %{build_go} -ln -sf ../../../libgo.so.18.* libgo.so +ln -sf ../../../libgo.so.19.* libgo.so %endif %if %{build_libquadmath} ln -sf ../../../libquadmath.so.0.* libquadmath.so @@ -1420,7 +1418,7 @@ ln -sf ../../../../%{_lib}/libstdc++.so.6.*[0-9] libstdc++.so ln -sf ../../../../%{_lib}/libgfortran.so.5.* libgfortran.so ln -sf ../../../../%{_lib}/libgomp.so.1.* libgomp.so %if %{build_go} -ln -sf ../../../../%{_lib}/libgo.so.18.* libgo.so +ln -sf ../../../../%{_lib}/libgo.so.19.* libgo.so %endif %if %{build_libquadmath} ln -sf ../../../../%{_lib}/libquadmath.so.0.* libquadmath.so @@ -1540,8 +1538,8 @@ ln -sf ../`echo ../../../../lib/libgfortran.so.5.* | sed s~/lib/~/lib64/~` 64/li ln -sf ../`echo ../../../../lib/libgomp.so.1.* | sed s~/lib/~/lib64/~` 64/libgomp.so %if %{build_go} rm -f libgo.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgo.so.18.* | sed 's,^.*libg,libg,'`' )' > libgo.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgo.so.18.* | sed 's,^.*libg,libg,'`' )' > 64/libgo.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgo.so.19.* | sed 's,^.*libg,libg,'`' )' > libgo.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgo.so.19.* | sed 's,^.*libg,libg,'`' )' > 64/libgo.so %endif %if %{build_libquadmath} rm -f libquadmath.so @@ -1639,8 +1637,8 @@ ln -sf ../`echo ../../../../lib64/libgfortran.so.5.* | sed s~/../lib64/~/~` 32/l ln -sf ../`echo ../../../../lib64/libgomp.so.1.* | sed s~/../lib64/~/~` 32/libgomp.so %if %{build_go} rm -f libgo.so -echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgo.so.18.* | sed 's,^.*libg,libg,'`' )' > libgo.so -echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgo.so.18.* | sed 's,^.*libg,libg,'`' )' > 32/libgo.so +echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgo.so.19.* | sed 's,^.*libg,libg,'`' )' > libgo.so +echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgo.so.19.* | sed 's,^.*libg,libg,'`' )' > 32/libgo.so %endif %if %{build_libquadmath} rm -f libquadmath.so @@ -1827,7 +1825,7 @@ chmod 755 %{buildroot}%{_prefix}/%{_lib}/liblsan.so.0.* %endif %if %{build_go} # Avoid stripping these libraries and binaries. -chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.18.* +chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.19.* chmod 644 %{buildroot}%{_prefix}/bin/go.gcc chmod 644 %{buildroot}%{_prefix}/bin/gofmt.gcc chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cgo @@ -2963,7 +2961,7 @@ end %doc rpm.doc/go/* %files -n libgo -%attr(755,root,root) %{_prefix}/%{_lib}/libgo.so.18* +%attr(755,root,root) %{_prefix}/%{_lib}/libgo.so.19* %doc rpm.doc/libgo/* %files -n libgo-devel @@ -3071,6 +3069,36 @@ end %endif %changelog +* Sat Jan 9 2021 Jakub Jelinek 11.0.0-0.12 +- update from trunk + - PRs analyzer/97072, analyzer/97074, analyzer/98073, analyzer/98223, + analyzer/98293, analyzer/98564, analyzer/98580, bootstrap/98324, + bootstrap/98506, c++/82099, c++/95768, c++/96045, c++/96504, + c++/97597, c++/98206, c++/98305, c++/98316, c++/98329, c++/98332, + c++/98353, c++/98413, c++/98441, c++/98469, c++/98515, c++/98551, + c/98029, d/98427, fortran/83118, fortran/93701, fortran/93794, + fortran/93833, fortran/97612, fortran/97694, fortran/97723, + fortran/98022, fortran/98458, libstdc++/98384, middle-end/98160, + middle-end/98578, other/98437, rtl-optimization/97144, + rtl-optimization/97978, rtl-optimization/98214, + rtl-optimization/98334, rtl-optimization/98403, target/89057, + target/96793, target/97269, target/98461, target/98482, target/98495, + target/98521, target/98522, target/98567, target/98585, + testsuite/98489, testsuite/98566, tree-optimization/56719, + tree-optimization/94785, tree-optimization/94802, + tree-optimization/94994, tree-optimization/95401, + tree-optimization/95582, tree-optimization/95771, + tree-optimization/96239, tree-optimization/96782, + tree-optimization/96928, tree-optimization/96930, + tree-optimization/98282, tree-optimization/98291, + tree-optimization/98302, tree-optimization/98308, + tree-optimization/98371, tree-optimization/98381, + tree-optimization/98393, tree-optimization/98428, + tree-optimization/98464, tree-optimization/98474, + tree-optimization/98513, tree-optimization/98514, + tree-optimization/98516, tree-optimization/98544, + tree-optimization/98560, tree-optimization/98568 + * Wed Dec 23 2020 Jakub Jelinek 11.0.0-0.11 - update from trunk - PRs bootstrap/98300, bootstrap/98380, bootstrap/98412, c++/67343, diff --git a/gcc11-pr98282.patch b/gcc11-pr98282.patch deleted file mode 100644 index 4187c5f..0000000 --- a/gcc11-pr98282.patch +++ /dev/null @@ -1,118 +0,0 @@ -2020-12-15 Jakub Jelinek - - PR tree-optimization/98282 - * tree-ssa-pre.c (compute_avail): Don't try to adjust alias set - if different when ref1->opcode is not MEM_REF or TARGET_MEM_REF. - - * g++.dg/opt/pr98282.C: New test. - ---- gcc/tree-ssa-pre.c.jj 2020-11-30 10:48:31.000000000 +0100 -+++ gcc/tree-ssa-pre.c 2020-12-15 10:51:51.061206572 +0100 -@@ -4176,13 +4176,17 @@ compute_avail (void) - && ref2->opcode != MEM_REF - && ref2 != &operands[0]) - --ref2; -- if ((ref1->opcode == TARGET_MEM_REF -- || ref1->opcode == MEM_REF) -- && (TYPE_ALIGN (ref1->type) -- > TYPE_ALIGN (ref2->type))) -- ref1->type -- = build_aligned_type (ref1->type, -- TYPE_ALIGN (ref2->type)); -+ if (ref1->opcode == TARGET_MEM_REF -+ || ref1->opcode == MEM_REF) -+ { -+ if (TYPE_ALIGN (ref1->type) -+ > TYPE_ALIGN (ref2->type)) -+ ref1->type -+ = build_aligned_type (ref1->type, -+ TYPE_ALIGN (ref2->type)); -+ } -+ else -+ set = ref->set; - /* TBAA behavior is an obvious part so make sure - that the hashtable one covers this as well - by adjusting the ref alias set and its base. */ ---- gcc/testsuite/g++.dg/opt/pr98282.C.jj 2020-12-15 12:26:25.868415230 +0100 -+++ gcc/testsuite/g++.dg/opt/pr98282.C 2020-12-15 12:28:00.346353067 +0100 -@@ -0,0 +1,80 @@ -+// PR tree-optimization/98282 -+// { dg-do compile { target c++11 } } -+// { dg-options "-O2" } -+ -+template struct g; -+template struct g { typedef b c; }; -+template typename g::c &&d(b &&e) { -+ return static_cast::c &&>(e); -+} -+void *operator new(__SIZE_TYPE__, void *f) { return f; } -+struct h; -+struct k { -+ using i = h *; -+}; -+struct D { -+ k::i j; -+}; -+struct p : D { -+ p(p &&) : D() {} -+}; -+struct r { -+ using l = int; -+ r(r &&) : ad() {} -+ l *ad; -+}; -+struct s { -+ static s m(); -+}; -+struct t { -+ template void operator=(ah); -+}; -+struct I { -+ template void q(o ai) { -+ *ai = aj(); -+ s::m(); -+ } -+ h aj(); -+}; -+template class as; -+struct J { -+ int a; -+ char av; -+}; -+template struct aw : J { -+ void ax(...) {} -+}; -+template -+struct aw, an, n...> : aw, n...> { -+ using az = as; -+ using ba = aw; -+ char bb; -+ an &bc() { return *reinterpret_cast(this); } -+ void ax(az *bd) { -+ if (bb) -+ new (bd) an(d(bc())); -+ ba::ax(bd); -+ } -+}; -+template struct as : aw, n...> { -+ as(); -+ as(as &&be) { be.ax(this); } -+ void operator=(as be) { be.ax(this); } -+}; -+struct h { -+ as bg; -+}; -+using bh = t; -+struct u { -+ bh bj; -+}; -+I bk(); -+template void bl() { -+ h a; -+ bk().q(&a); -+} -+template void bn(int) { -+ u b; -+ b.bj = bl; -+} -+void bp() { bn(0); } diff --git a/plans/ci.fmf b/plans/ci.fmf new file mode 100644 index 0000000..1ad2c12 --- /dev/null +++ b/plans/ci.fmf @@ -0,0 +1,6 @@ +summary: CI Gating Plan +discover: + how: fmf + directory: tests +execute: + how: beakerlib diff --git a/sources b/sources index 7997ecd..40a9915 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (gcc-11.0.0-20201223.tar.xz) = 46bd2b601027ce420d5659e0e8638f9f3971eaf637960db9aced7a335ea234b761ae5b671ffc1fcee772c804cbdf9058346f461ad360019777feca89491afdd9 +SHA512 (gcc-11.0.0-20210109.tar.xz) = eb3864cf6fef07077175fec2f1ce0b67e678da70a85ce09888f78d1587e7b4c94c398a19aa4a77c32ffdebc34e877ce28deb881c3545521f22c6b158c3087d5d SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7 diff --git a/tests/build_hello_world.sh b/tests/build_hello_world.sh deleted file mode 100755 index f6aae70..0000000 --- a/tests/build_hello_world.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -set -ex - -gcc -x c $(rpm --eval %build_cflags) data/hello.c -o hello_c.out -./hello_c.out | grep -q "Hello World" - -g++ -x c++ $(rpm --eval %build_cxxflags) data/hello.cpp -o hello_cpp.out -./hello_cpp.out | grep -q "Hello World" diff --git a/tests/data/hello.c b/tests/data/hello.c deleted file mode 100644 index fe064a2..0000000 --- a/tests/data/hello.c +++ /dev/null @@ -1,5 +0,0 @@ -#include -int main() { - printf("Hello World!\n"); - return 0; -} diff --git a/tests/data/hello.cpp b/tests/data/hello.cpp deleted file mode 100644 index 2131d8a..0000000 --- a/tests/data/hello.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#include -int main() { - std::cout << "Hello World!\n"; - return 0; -} diff --git a/tests/smoke-test/Makefile b/tests/smoke-test/Makefile new file mode 100644 index 0000000..fb46790 --- /dev/null +++ b/tests/smoke-test/Makefile @@ -0,0 +1,65 @@ +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Makefile of /tools/gcc/Sanity/smoke-test +# Description: Basic smoke test. +# Author: Marek Polacek +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2012 Red Hat, Inc. All rights reserved. +# +# This copyrighted material is made available to anyone wishing +# to use, modify, copy, or redistribute it subject to the terms +# and conditions of the GNU General Public License version 2. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with this program; if not, write to the Free +# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +export TEST=/tools/gcc/Sanity/smoke-test +export TESTVERSION=1.0 + +BUILT_FILES= + +FILES=$(METADATA) runtest.sh Makefile PURPOSE hello.c hello.f90 hello.cpp tm.c quad.c omphello.c thr-init-2.c clear_cache.c + +.PHONY: all install download clean + +run: $(FILES) build + ./runtest.sh + +build: $(BUILT_FILES) + test -x runtest.sh || chmod a+x runtest.sh + +clean: + rm -f *~ $(BUILT_FILES) + + +include /usr/share/rhts/lib/rhts-make.include + +$(METADATA): Makefile + @echo "Owner: Marek Polacek " > $(METADATA) + @echo "Name: $(TEST)" >> $(METADATA) + @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) + @echo "Path: $(TEST_DIR)" >> $(METADATA) + @echo "Description: Basic smoke test." >> $(METADATA) + @echo "Type: Sanity" >> $(METADATA) + @echo "TestTime: 10m" >> $(METADATA) + @echo "RunFor: gcc" >> $(METADATA) + @echo "RunFor: devtoolset-1.0-gcc" >> $(METADATA) + @echo "Requires: gcc gcc-c++ gcc-gfortran glibc-common glibc-devel" >> $(METADATA) + @echo "Requires: libquadmath libquadmath-devel libgomp libgcc libstdc++-devel" >> $(METADATA) + @echo "Priority: Normal" >> $(METADATA) + @echo "License: GPLv2" >> $(METADATA) + @echo "Confidential: no" >> $(METADATA) + @echo "Destructive: no" >> $(METADATA) + + rhts-lint $(METADATA) diff --git a/tests/smoke-test/PURPOSE b/tests/smoke-test/PURPOSE new file mode 100644 index 0000000..912f7b4 --- /dev/null +++ b/tests/smoke-test/PURPOSE @@ -0,0 +1,3 @@ +PURPOSE of /tools/gcc/Sanity/smoke-test +Description: Basic smoke test. +Author: Marek Polacek diff --git a/tests/smoke-test/clear_cache.c b/tests/smoke-test/clear_cache.c new file mode 100644 index 0000000..b10479f --- /dev/null +++ b/tests/smoke-test/clear_cache.c @@ -0,0 +1,7 @@ +int +main (void) +{ + char *mem = __builtin_alloca (40); + __builtin___clear_cache (mem, mem + 40); + return 0; +} diff --git a/tests/smoke-test/hello.c b/tests/smoke-test/hello.c new file mode 100644 index 0000000..4096e11 --- /dev/null +++ b/tests/smoke-test/hello.c @@ -0,0 +1,7 @@ +#include + +int +main (void) +{ + puts ("Hello World!"); +} diff --git a/tests/smoke-test/hello.cpp b/tests/smoke-test/hello.cpp new file mode 100644 index 0000000..0f2234e --- /dev/null +++ b/tests/smoke-test/hello.cpp @@ -0,0 +1,7 @@ +#include + +int +main (void) +{ + std::cout << "Hello, world!\n"; +} diff --git a/tests/smoke-test/hello.f90 b/tests/smoke-test/hello.f90 new file mode 100644 index 0000000..afabbb2 --- /dev/null +++ b/tests/smoke-test/hello.f90 @@ -0,0 +1,3 @@ + program hello + print *, "Hello World!" + end program hello diff --git a/tests/smoke-test/main.fmf b/tests/smoke-test/main.fmf new file mode 100644 index 0000000..3710ca3 --- /dev/null +++ b/tests/smoke-test/main.fmf @@ -0,0 +1,22 @@ +summary: Basic smoke test. +description: '' +contact: +- Marek Polacek +component: +- gcc +test: ./runtest.sh +framework: beakerlib +recommend: +- gcc +- gcc-c++ +- gcc-gfortran +- glibc-common +- glibc-devel +- libquadmath +- libquadmath-devel +- libgomp +- libgcc +- libstdc++-devel +duration: 10m +extra-summary: /tools/gcc/Sanity/smoke-test +extra-task: /tools/gcc/Sanity/smoke-test diff --git a/tests/smoke-test/omphello.c b/tests/smoke-test/omphello.c new file mode 100644 index 0000000..85b591f --- /dev/null +++ b/tests/smoke-test/omphello.c @@ -0,0 +1,24 @@ +#include +#include +#include + +int +main (void) +{ + int th_id; + int nthreads; + + #pragma omp parallel private(th_id) + { + th_id = omp_get_thread_num (); + printf ("Hello World from thread %d\n", th_id); + + #pragma omp barrier + if (th_id == 0) + { + nthreads = omp_get_num_threads (); + printf ("There are %d threads\n", nthreads); + } + } + return EXIT_SUCCESS; +} diff --git a/tests/smoke-test/quad.c b/tests/smoke-test/quad.c new file mode 100644 index 0000000..e5a6cc7 --- /dev/null +++ b/tests/smoke-test/quad.c @@ -0,0 +1,38 @@ +#include +#include +#include + +int +main (void) +{ + __float128 r = strtoflt128 ("1.23456789", NULL); + + int prec = 20; + int width = 46; + char buf[128]; + + r = 2.0q; + r = sqrtq (r); + int n = quadmath_snprintf (buf, sizeof buf, "%+-#*.20Qe", width, r); + if ((size_t) n < sizeof buf) + /* Prints: +1.41421356237309504880e+00 */ + printf ("%s\n", buf); + quadmath_snprintf (buf, sizeof buf, "%Qa", r); + if ((size_t) n < sizeof buf) + /* Prints: 0x1.6a09e667f3bcc908b2fb1366ea96p+0 */ + printf ("%s\n", buf); + n = quadmath_snprintf (NULL, 0, "%+-#46.*Qe", prec, r); + if (n > -1) + { + char *str = malloc (n + 1); + if (str) + { + quadmath_snprintf (str, n + 1, "%+-#46.*Qe", prec, r); + /* Prints: +1.41421356237309504880e+00 */ + printf ("%s\n", str); + } + free (str); + } + + return 0; +} diff --git a/tests/smoke-test/runtest.sh b/tests/smoke-test/runtest.sh new file mode 100755 index 0000000..78fda72 --- /dev/null +++ b/tests/smoke-test/runtest.sh @@ -0,0 +1,125 @@ +#!/bin/bash +# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/gcc/Sanity/smoke-test +# Description: Basic smoke test. +# Author: Marek Polacek +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2012 Red Hat, Inc. All rights reserved. +# +# This copyrighted material is made available to anyone wishing +# to use, modify, copy, or redistribute it subject to the terms +# and conditions of the GNU General Public License version 2. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with this program; if not, write to the Free +# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGES=(gcc gcc-c++ gcc-gfortran glibc-common libgomp libgcc glibc-devel libstdc++ libstdc++-devel) + +# Choose the compiler. +GCC=${GCC:-gcc} +GXX=${GXX:-g++} +GFORTRAN=${GFORTRAN:-gfortran} + +PACKAGE=gcc + +rlJournalStart + rlPhaseStartSetup + export PRI_ARCH=`rlGetPrimaryArch` + export SEC_ARCH=`rlGetSecondaryArch` + # don't assert anything under devtoolset + if type gcc | grep -q -v devtoolset + then + for p in "${PACKAGES[@]}"; do + rpm -q "$p.$PRI_ARCH" || yum install -y "$p.$PRI_ARCH" + rlAssertRpm "$p.$PRI_ARCH" + done; unset p + fi + rlLog "GCC = $GCC" + rlLog "Installed within `rpmquery -f $(which $GCC)`" + rlLog "GXX = $GXX" + rlLog "Installed within `rpmquery -f $(which $GXX)`" + rlLog "GFORTRAN = $GFORTRAN" + rlLog "Installed within `rpmquery -f $(which $GFORTRAN)`" + rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" + # We need some files. + rlRun "cp -v hello.{c,cpp,f90} tm.c quad.c thr-init-2.c clear_cache.c omphello.c $TmpDir" + rlRun "pushd $TmpDir" + rlRun "rpmquery -l libstdc++-devel.$PRI_ARCH" + test -n "$SEC_ARCH" && rpmquery "libstdc++-devel.$SEC_ARCH" && rlRun "rpmquery -l libstdc++-devel.$SEC_ARCH" + rlPhaseEnd + + rlPhaseStartSetup "Showing compiler versions" + for compiler in $GCC $GXX $GFORTRAN + do + rlLog "Version of compiler: $compiler" + eval "$compiler --version 2>&1" | while read line + do + rlLog " $line" + done + done + rlPhaseEnd + + rlPhaseStartTest "Compile" + rlRun "$GCC hello.c -o hello_c" + rlRun "$GXX hello.cpp -o hello_cpp" + rlRun "$GFORTRAN hello.f90 -o hello_fortran" + + # TM support is GCC >=4.7 only. + $GCC -xc -O2 -std=gnu99 -fgnu-tm - <<< "int main(){}" + if test $? -eq 0; then + rlRun "$GCC -O2 -std=gnu99 -fgnu-tm tm.c -o tm" + rlRun "./tm" + fi + + # Test OpenMP. + rlRun "$GCC omphello.c -O2 -std=gnu99 -fopenmp -o omp" + rlRun "./omp" + + # Test __thread. + rlRun "$GCC thr-init-2.c -O2 -std=gnu99 -ftls-model=initial-exec -o thr" + rlRun "./thr" + + # Now test some libquadmath stuff (__float128 support). + # libquadmath is mising on RHEL machines, usually. + test "`rpmquery --qf '%{version}-%{release}' libquadmath`" = "`rpmquery --qf '%{version}-%{release}' $GCC`" + if test $? -eq 0 -a "$GCC" = "gcc"; then + rlRun "$GCC quad.c -O2 -std=gnu99 -lquadmath -lm -o quad" + rlRun "./quad" + fi + + # And now something from libgcc, e.g. __builtin___clear_cache. + # But not on RHEL5. + if ! rlIsRHEL 5; then + rlRun "$GCC clear_cache.c -O2 -std=gnu99 -o cache" + rlRun "./cache" + fi + rlPhaseEnd + + rlPhaseStartTest "Check dependant libraries" + rlRun "ldd hello_{c,cpp,fortran} &> ldd.out" + # Nothing should be linked against anything in /opt. + rlAssertNotGrep "/opt" ldd.out + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" 0 "Removing tmp directory" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/smoke-test/thr-init-2.c b/tests/smoke-test/thr-init-2.c new file mode 100644 index 0000000..051cff9 --- /dev/null +++ b/tests/smoke-test/thr-init-2.c @@ -0,0 +1,24 @@ +/* { dg-do run } */ +/* { dg-require-effective-target tls_runtime } */ +/* { dg-add-options tls } */ + +extern void abort() ; + +static __thread int fstat ; +static __thread int fstat = 1; + +int test_code(int b) +{ + fstat += b ; + return fstat; +} + +int main (int ac, char *av[]) +{ + int a = test_code(1); + + if ((a != 2) || (fstat != 2)) + abort () ; + + return 0; +} diff --git a/tests/smoke-test/tm.c b/tests/smoke-test/tm.c new file mode 100644 index 0000000..f9b4c9b --- /dev/null +++ b/tests/smoke-test/tm.c @@ -0,0 +1,34 @@ +extern void *malloc (__SIZE_TYPE__) __attribute__((malloc,transaction_safe)); + +static int __attribute__((transaction_safe)) +something (void) +{ + return 0; +} + +struct large { int foo[500]; }; + +int +main (void) +{ + int *p; + struct large *lp; + + __transaction_atomic { + p = malloc (sizeof (*p) * 100); + lp = malloc (sizeof (*lp) * 100); + + /* No instrumentation necessary; P and LP are transaction local. */ + p[5] = 123; + lp->foo[66] = 123; + + if (something ()) + __transaction_cancel; + } + + __transaction_relaxed { + ++p[5]; + } + + return ( (p[5] == 124) ? 0 : 1 ); +} diff --git a/tests/tests.yml b/tests/tests.yml deleted file mode 100644 index dfe09e0..0000000 --- a/tests/tests.yml +++ /dev/null @@ -1,14 +0,0 @@ -- hosts: localhost - roles: - - role: standard-test-basic - tags: - - classic - - required_packages: - - redhat-rpm-config - - annobin - - tests: - - build_hello_world: - dir: . - run: "./build_hello_world.sh"