diff options
author | Yvan Roux <yvan.roux@linaro.org> | 2016-02-09 13:56:57 +0100 |
---|---|---|
committer | Yvan Roux <yvan.roux@linaro.org> | 2016-02-09 14:37:49 +0100 |
commit | a509608c287a60934ef67b2a58dc0caa77e47dff (patch) | |
tree | 353a418963fb48afcef81870eae4dab68dd0f5d3 /gcc/testsuite | |
parent | bb60074a075724c6c59acf70c9f4efa4cbdea073 (diff) |
Merge branches/gcc-5-branch rev 233233.
Change-Id: If2cd17ed92b705b4b6468ed3da7c1bdc102a2368
Diffstat (limited to 'gcc/testsuite')
104 files changed, 1416 insertions, 127 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7af47eb8dd5..17187f2cce3 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,304 @@ +2016-02-04 Jakub Jelinek <jakub@redhat.com> + + Backported from mainline + 2016-02-03 Jakub Jelinek <jakub@redhat.com> + + PR target/69644 + * gcc.dg/pr69644.c: New test. + +2016-02-03 Andre Vehreschild <vehre@gcc.gnu.org> + + PR fortran/67451 + PR fortran/69418 + * gfortran.dg/coarray_allocate_2.f08: New test. + * gfortran.dg/coarray_allocate_3.f08: New test. + * gfortran.dg/coarray_allocate_4.f08: New test. + +2016-02-02 Alan Modra <amodra@gmail.com> + + PR target/69548 + * gcc.target/powerpc/pr69548.c: New test. + +2016-02-01 H.J. Lu <hongjiu.lu@intel.com> + + Backport from mainline + 2016-01-26 H.J. Lu <hongjiu.lu@intel.com> + PR target/68986 + * gcc.target/i386/pr68986-1.c: New test. + * gcc.target/i386/pr68986-2.c: Likewise. + * gcc.target/i386/pr68986-3.c: Likewise. + +2016-01-30 Dominique d'Humieres <dominiq@lps.ens.fr> + + PR fortran/66707 + gfortran.dg/common_23.f90: New test. + + Backport from trunk. + 2015-08-08 Bud Davis <jmdavis@link.com> + Mikael Morin <mikael@gcc.gnu.org> + + PR fortran/59746 + * gfortran.dg/common_22.f90: New. + +2016-01-29 Bill Schmidt <wschmidt@linux.vnet.ibm.com> + + PR target/65546 + * gcc.dg/vect/costmodel/ppc/costmodel-vect-31a.c: Correct + condition being checked, and disable it when the target supports + misaligned loads and stores. + +2016-01-29 Uros Bizjak <ubizjak@gmail.com> + + PR target/69459 + * gcc.target/i386/pr69459.c: New test. + +2016-01-29 Jakub Jelinek <jakub@redhat.com> + + PR target/69551 + * gcc.target/i386/pr69551.c: New test. + +2016-01-28 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/69542 + * gcc.dg/torture/pr69542.c: New test. + +2016-01-28 Martin Jambor <mjambor@suse.cz> + + PR tree-optimization/69355 + * gcc.dg/tree-ssa/pr69355.c: New test. + +2016-01-28 Andre Vehreschild <vehre@gcc.gnu.org> + + PR fortran/62536 + * gfortran.dg/block_14.f08: New test. + +2016-01-27 Marek Polacek <polacek@redhat.com> + + Backport from mainline + 2016-01-27 Marek Polacek <polacek@redhat.com> + + PR c/68062 + * c-c++-common/vector-compare-4.c: New test. + +2016-01-27 Andre Vehreschild <vehre@gcc.gnu.org> + + PR fortran/69268 + * gfortran.dg/allocatable_scalar_13.f90: Fixing counts of malloc/ + free to fit the actual number of calls. + * gfortran.dg/allocate_with_source_16.f90: New test. + +2016-01-27 Tom de Vries <tom@codesourcery.com> + + * gcc.dg/autopar/pr69110.c: Fix pass number. + +2016-01-26 Tom de Vries <tom@codesourcery.com> + + PR tree-optimization/69110 + * gcc.dg/autopar/pr69110.c: New test. + +2016-01-25 Peter Bergner <bergner@vnet.ibm.com> + + PR fortran/61831 + * gfortran.dg/derived_constructor_comps_6.f90: Add missing } to fix + up dg-additional-options. + +2016-01-25 Dominique d'Humieres <dominiq@lps.ens.fr> + + PR fortran/68283 + gfortran.dg/pr68283.f90: New test. + +2016-01-23 Tom de Vries <tom@codesourcery.com> + + PR tree-optimization/69426 + * gcc.dg/autopar/pr69426.c: New test. + +2016-01-22 Kyrylo Tkachov <kyrylo.tkachov@arm.com> + + Backport from mainline + 2016-01-22 Kyrylo Tkachov <kyrylo.tkachov@arm.com> + + PR target/69403 + * gcc.c-torture/execute/pr69403.c: New test. + +2016-01-21 Andreas Krebbel <krebbel@linux.vnet.ibm.com> + + Backported from mainline + 2015-07-24 Andreas Krebbel <krebbel@linux.vnet.ibm.com> + + * gcc.target/s390/gpr2fprsavecfi.c: New test. + +2016-01-21 Thomas Preud'homme <thomas.preudhomme@arm.com> + + Backport from mainline + 2016-01-08 Thomas Preud'homme <thomas.preudhomme@arm.com> + + PR tree-optimization/67781 + * gcc.c-torture/execute/pr67781.c: New file. + +2016-01-20 H.J. Lu <hongjiu.lu@intel.com> + + Backport from mainline + 2016-01-20 H.J. Lu <hongjiu.lu@intel.com> + + PR testsuite/69366 + * g++.dg/pr63995-1.C: Require non-x32 target, instead of, + the MPX run-time library, for compile-time MPX test. + * gcc.target/i386/chkp-always_inline.c: Likewise. + * gcc.target/i386/chkp-bndret.c: Likewise. + * gcc.target/i386/chkp-builtins-1.c: Likewise. + * gcc.target/i386/chkp-builtins-2.c: Likewise. + * gcc.target/i386/chkp-builtins-3.c: Likewise. + * gcc.target/i386/chkp-builtins-4.c: Likewise. + * gcc.target/i386/chkp-const-check-1.c: Likewise. + * gcc.target/i386/chkp-const-check-2.c: Likewise. + * gcc.target/i386/chkp-hidden-def.c: Likewise. + * gcc.target/i386/chkp-label-address.c: Likewise. + * gcc.target/i386/chkp-lifetime-1.c: Likewise. + * gcc.target/i386/chkp-narrow-bounds.c: Likewise. + * gcc.target/i386/chkp-remove-bndint-1.c: Likewise. + * gcc.target/i386/chkp-remove-bndint-2.c: Likewise. + * gcc.target/i386/chkp-strchr.c: Likewise. + * gcc.target/i386/chkp-strlen-1.c: Likewise. + * gcc.target/i386/chkp-strlen-2.c: Likewise. + * gcc.target/i386/chkp-strlen-3.c: Likewise. + * gcc.target/i386/chkp-strlen-4.c: Likewise. + * gcc.target/i386/chkp-strlen-5.c: Likewise. + * gcc.target/i386/chkp-stropt-1.c: Likewise. + * gcc.target/i386/chkp-stropt-10.c: Likewise. + * gcc.target/i386/chkp-stropt-11.c: Likewise. + * gcc.target/i386/chkp-stropt-12.c: Likewise. + * gcc.target/i386/chkp-stropt-13.c: Likewise. + * gcc.target/i386/chkp-stropt-14.c: Likewise. + * gcc.target/i386/chkp-stropt-15.c: Likewise. + * gcc.target/i386/chkp-stropt-16.c: Likewise. + * gcc.target/i386/chkp-stropt-2.c: Likewise. + * gcc.target/i386/chkp-stropt-3.c: Likewise. + * gcc.target/i386/chkp-stropt-4.c: Likewise. + * gcc.target/i386/chkp-stropt-5.c: Likewise. + * gcc.target/i386/chkp-stropt-6.c: Likewise. + * gcc.target/i386/chkp-stropt-7.c: Likewise. + * gcc.target/i386/chkp-stropt-8.c: Likewise. + * gcc.target/i386/chkp-stropt-9.c: Likewise. + * gcc.target/i386/pr63995-2.c: Likewise. + * gcc.target/i386/pr64805.c: Likewise. + * gcc.target/i386/pr65044.c: Likewise. + * gcc.target/i386/pr65167.c: Likewise. + * gcc.target/i386/pr65183.c: Likewise. + * gcc.target/i386/pr65184.c: Likewise. + * gcc.target/i386/thunk-retbnd.c: Likewise. + +2016-01-20 Marek Polacek <polacek@redhat.com> + + PR c/68513 + * gcc.dg/pr68513.c: New test. + +2016-01-19 Sergei Trofimovich <siarheit@google.com> + + Backport from mainline + PR other/60465 + * gcc.target/ia64/pr60465-gprel64.c: New test. + * gcc.target/ia64/pr60465-gprel64-c37.c: New test. + +2016-01-19 Jeff Law <law@redhat.com> + + Backport from mainline + 2016-01-12 Jeff Law <law@redhat.com> + + PR tree-optimization/67755 + * gcc.dg/tree-ssa/pr67755.c: New test. + +2016-01-19 Uros Bizjak <ubizjak@gmail.com> + + PR testsuite/68820 + * gcc.c-torture/execute/builtins/memops-asm.x: New file. + * gcc.c-torture/execute/builtins/strstr-asm.x: Ditto. + * gcc.c-torture/execute/builtins/strstr-asm.c: Remove dg-options. + +2016-01-19 Marek Polacek <polacek@redhat.com> + + Backported from mainline + 2016-01-19 Marek Polacek <polacek@redhat.com> + + PR c++/68965 + * g++.dg/cpp1y/parameter-pack-1.C: New test. + * g++.dg/cpp1y/parameter-pack-2.C: New test. + +2016-01-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com> + + Backport from mainline + 2016-01-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com> + + PR target/69135 + * gcc.target/arm/pr69135_1.c: New test. + +2016-01-18 Alexander Fomin <alexander.fomin@intel.com> + + Backport from mainline + 2015-10-09 Alexander Fomin <alexander.fomin@intel.com> + + PR target/67895 + * gcc.target/i386/avx512dq-vrangepd-1.c: Adjust. + * gcc.target/i386/avx512dq-vrangeps-1.c: Likewise. + * gcc.target/i386/avx512dq-vrangesd-1.c: Likewise. + * gcc.target/i386/avx512dq-vrangess-1.c: Likewise. + * gcc.target/i386/avx512f-vcvtsi2sd64-1.c: Likewise. + * gcc.target/i386/avx512f-vcvtsi2ss-1.c: Likewise. + * gcc.target/i386/avx512f-vcvtsi2ss64-1.c: Likewise. + * gcc.target/i386/avx512f-vcvtusi2sd64-1.c: Likewise. + * gcc.target/i386/avx512f-vcvtusi2ss-1.c: Likewise. + * gcc.target/i386/avx512f-vcvtusi2ss64-1.c: Likewise. + +2016-01-18 Uros Bizjak <ubizjak@gmail.com> + + Backport from mainline + 2016-01-06 Uros Bizjak <ubizjak@gmail.com> + + PR target/69140 + * gcc.target/i386/pr69140.c: New test + +2016-01-18 Eric Botcazou <ebotcazou@adacore.com> + + * gnat.dg/inline12.adb: New test. + +2016-01-17 Mikael Morin <mikael@gcc.gnu.org> + + Backport from trunk. + PR fortran/61831 + * gfortran.dg/derived_constructor_components_6.f90: New file. + * gfortran.dg/allocate_with_source_14.f03: Change count of + __builtin_malloc from 21 to 23. + +2016-01-17 Paul Thomas <pault@gcc.gnu.org> + + Backport from trunk. + PR fortran/66082 + * gfortran.dg/alloc_comp_auto_array_3.f90: New file. Count of + __builtin_malloc increased from 3 to 4, relative to trunk. + +2016-01-17 Kugan Vivekanandarajah <kuganv@linaro.org> + + Backport from mainline + 2016-01-12 Kugan Vivekanandarajah <kuganv@linaro.org> + Jim Wilson <jim.wilson@linaro.org> + + PR target/69194 + * gcc.target/arm/pr69194.c: New test. + +2016-01-15 Alexander Fomin <alexander.fomin@intel.com> + + Backport from mainline + 2016-01-13 Alexander Fomin <alexander.fomin@intel.com> + + PR target/69228 + * gcc.target/i386/avx512pf-vscatterpf0dpd-1.c: Adjust. + * gcc.target/i386/avx512pf-vscatterpf0dps-1.c: Likewise. + * gcc.target/i386/avx512pf-vscatterpf0qpd-1.c: Likewise. + * gcc.target/i386/avx512pf-vscatterpf0qps-1.c: Likewise. + * gcc.target/i386/avx512pf-vscatterpf1dpd-1.c: Likewise. + * gcc.target/i386/avx512pf-vscatterpf1dps-1.c: Likewise. + * gcc.target/i386/avx512pf-vscatterpf1qpd-1.c: Likewise. + * gcc.target/i386/avx512pf-vscatterpf1qps-1.c: Likewise. + 2016-01-12 James Greenhalgh <james.greenhalgh@arm.com> Backport from mainline r222186. @@ -564,7 +865,7 @@ 2015-11-06 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/68106 - * testsuite/gcc.target/aarch64/pr68106.c: New. + * gcc.target/aarch64/pr68106.c: New. 2015-01-25 Paul Thomas <pault@gcc.gnu.org> @@ -684,8 +985,8 @@ Backport from mainline 2015-10-09 Martin Jambor <mjambor@suse.cz> - * gcc.dg/ipa/ipa-sra-10.c: New test. - * gcc.dg/torture/pr67794.c: Likewise. + * gcc.dg/ipa/ipa-sra-10.c: New test. + * gcc.dg/torture/pr67794.c: Likewise. 2015-10-22 Paul Thomas <pault@gcc.gnu.org> @@ -3806,7 +4107,7 @@ 2015-03-05 Martin Sebor <msebor@redhat.com> - * PR testsuite/63175 + PR testsuite/63175 * gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a.c (main1): Move checking of results into main to prevent it from getting optimized away. diff --git a/gcc/testsuite/c-c++-common/vector-compare-4.c b/gcc/testsuite/c-c++-common/vector-compare-4.c new file mode 100644 index 00000000000..b44f474f395 --- /dev/null +++ b/gcc/testsuite/c-c++-common/vector-compare-4.c @@ -0,0 +1,42 @@ +/* PR c/68062 */ +/* { dg-do compile } */ +/* { dg-options "-Wsign-compare" } */ + +typedef signed char __attribute__ ((vector_size (4))) v4qi; +typedef unsigned char __attribute__ ((vector_size (4))) uv4qi; +typedef signed int __attribute__ ((vector_size (4 * __SIZEOF_INT__))) v4si; +typedef unsigned int __attribute__ ((vector_size (4 * __SIZEOF_INT__))) uv4si; + +v4qi +fn1 (void) +{ + v4qi a = { 1, 2, 3, 4 }; + uv4qi b = { 4, 3, 2, 1 }; + v4qi v = { 0, 0, 0, 0 }; + + v += (a == b); /* { dg-warning "comparison between types" } */ + v += (a != b); /* { dg-warning "comparison between types" } */ + v += (a >= b); /* { dg-warning "comparison between types" } */ + v += (a <= b); /* { dg-warning "comparison between types" } */ + v += (a > b); /* { dg-warning "comparison between types" } */ + v += (a < b); /* { dg-warning "comparison between types" } */ + + return v; +} + +v4si +fn2 (void) +{ + v4si a = { 1, 2, 3, 4 }; + uv4si b = { 4, 3, 2, 1 }; + v4si v = { 0, 0, 0, 0 }; + + v += (a == b); /* { dg-warning "comparison between types" } */ + v += (a != b); /* { dg-warning "comparison between types" } */ + v += (a >= b); /* { dg-warning "comparison between types" } */ + v += (a <= b); /* { dg-warning "comparison between types" } */ + v += (a > b); /* { dg-warning "comparison between types" } */ + v += (a < b); /* { dg-warning "comparison between types" } */ + + return v; +} diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-array15.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-array15.C new file mode 100644 index 00000000000..a59e6f5df14 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-array15.C @@ -0,0 +1,29 @@ +// PR c++/68949 +// { dg-do run { target c++11 } } + +struct Sub { + int i; + + constexpr Sub() : i(-1) {} // remove constexpr and it works as expected + Sub(Sub&& rhs); // remove this constructor and it works as epxected. +}; + +// v-- move this inline and it works as expected +// v-- remove ': Sub()' and it works as expected +Sub::Sub(Sub&& rhs) : Sub() { int tmp = i; i = rhs.i; rhs.i = tmp; } + +struct Class { + // v-- remove '[1]' and it works as expected + // v-- add '= {}' and it works as expected + Sub s[1]; + + // v-- add ': s{}' and it works as expected + // v-- removing this constructor makes it work as expected + Class() {} +}; + +int main() { + Class c; + if (c.s[0].i != -1) + __builtin_abort(); +} diff --git a/gcc/testsuite/g++.dg/cpp0x/union7.C b/gcc/testsuite/g++.dg/cpp0x/union7.C new file mode 100644 index 00000000000..c42d2177ab0 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/union7.C @@ -0,0 +1,15 @@ +// PR c++/69131 +// { dg-do compile { target c++11 } } + +struct X +{ + ~X() {} +}; + +union U +{ + X x; + ~U() {} +}; + +U u; diff --git a/gcc/testsuite/g++.dg/cpp1y/parameter-pack-1.C b/gcc/testsuite/g++.dg/cpp1y/parameter-pack-1.C new file mode 100644 index 00000000000..27a6bf9dedb --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1y/parameter-pack-1.C @@ -0,0 +1,23 @@ +// PR c++/68965 +// { dg-do compile { target c++14 } } +// { dg-options "-Wall -Wextra" } + +auto count = [](auto&&... xs) +{ + return sizeof...(xs); +}; + +struct count_struct +{ + template<typename... Ts> + auto operator()(Ts&&... xs) + { + return sizeof...(xs); + } +}; + +int main() +{ + count(1,2,3); + count_struct{}(1,2,3); +} diff --git a/gcc/testsuite/g++.dg/cpp1y/parameter-pack-2.C b/gcc/testsuite/g++.dg/cpp1y/parameter-pack-2.C new file mode 100644 index 00000000000..95208758a6b --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1y/parameter-pack-2.C @@ -0,0 +1,21 @@ +// PR c++/68965 +// { dg-do compile { target c++14 } } +// { dg-options "-Wall -Wextra" } + +auto count = [](auto&&... xs) // { dg-warning "unused parameter" } +{ +}; + +struct count_struct +{ + template<typename... Ts> + auto operator()(Ts&&... xs) // { dg-warning "unused parameter" } + { + } +}; + +int main() +{ + count(1,2,3); + count_struct{}(1,2,3); +} diff --git a/gcc/testsuite/g++.dg/cpp1y/var-templ47.C b/gcc/testsuite/g++.dg/cpp1y/var-templ47.C new file mode 100644 index 00000000000..a40ec575be4 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1y/var-templ47.C @@ -0,0 +1,19 @@ +// PR c++/69009 +// { dg-do compile { target c++14 } } + +using _uchar = char; +using _size_t = decltype(sizeof(_uchar)); +using size_t = _size_t; +template <class T, T> struct integral_constant; +template <bool b> using bool_constant = integral_constant<bool, b>; +template <class> constexpr auto tuple_size_v = 0; +template <class T> auto const tuple_size_v<T const volatile> = tuple_size_v<T>; +template <class T> +using tuple_size = integral_constant<size_t, tuple_size_v<T>>; +template <typename Base, typename Deriv> +using is_base_of = bool_constant<__is_base_of(Base, Deriv)>; +template <class T, size_t N> void test() { + is_base_of<integral_constant<size_t, N>, tuple_size<T>> value( + is_base_of<integral_constant<size_t, N>, tuple_size<const volatile T>>); +} +void foo() { test<int, 0>; } diff --git a/gcc/testsuite/g++.dg/pr63995-1.C b/gcc/testsuite/g++.dg/pr63995-1.C index 82e76063ef1..41a1c01153b 100644 --- a/gcc/testsuite/g++.dg/pr63995-1.C +++ b/gcc/testsuite/g++.dg/pr63995-1.C @@ -1,5 +1,4 @@ -/* { dg-do compile { target i?86-*-* x86_64-*-* } } */ -/* { dg-require-effective-target mpx } */ +/* { dg-do compile { target { { i?86-*-* x86_64-*-* } && { ! x32 } } } } */ /* { dg-options "-O2 -g -fcheck-pointer-bounds -mmpx" } */ int test1 (int i) diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/memops-asm.x b/gcc/testsuite/gcc.c-torture/execute/builtins/memops-asm.x new file mode 100644 index 00000000000..031049dc812 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/builtins/memops-asm.x @@ -0,0 +1,10 @@ +# Different translation units may have different user name overrides +# and we do not preserve enough context to known which one we want. + +set torture_eval_before_compile { + if {[string match {*-flto*} "$option"]} { + continue + } +} + +return 0 diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/strstr-asm.c b/gcc/testsuite/gcc.c-torture/execute/builtins/strstr-asm.c index 41678412b63..3c3e45dfa5d 100644 --- a/gcc/testsuite/gcc.c-torture/execute/builtins/strstr-asm.c +++ b/gcc/testsuite/gcc.c-torture/execute/builtins/strstr-asm.c @@ -2,7 +2,6 @@ Ensure all expected transformations of builtin strstr occur and perform correctly in presence of redirect. */ -/* { dg-options "-ffat-lto-objects" } */ #define ASMNAME(cname) ASMNAME2 (__USER_LABEL_PREFIX__, cname) #define ASMNAME2(prefix, cname) STRING (prefix) cname diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/strstr-asm.x b/gcc/testsuite/gcc.c-torture/execute/builtins/strstr-asm.x new file mode 100644 index 00000000000..031049dc812 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/builtins/strstr-asm.x @@ -0,0 +1,10 @@ +# Different translation units may have different user name overrides +# and we do not preserve enough context to known which one we want. + +set torture_eval_before_compile { + if {[string match {*-flto*} "$option"]} { + continue + } +} + +return 0 diff --git a/gcc/testsuite/gcc.c-torture/execute/pr69447.c b/gcc/testsuite/gcc.c-torture/execute/pr69447.c new file mode 100644 index 00000000000..b6d8591f6d6 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr69447.c @@ -0,0 +1,26 @@ +typedef unsigned char u8; +typedef unsigned short u16; +typedef unsigned int u32; +typedef unsigned long long u64; + +u64 __attribute__((noinline, noclone)) +foo(u8 u8_0, u16 u16_0, u64 u64_0, u8 u8_1, u16 u16_1, u64 u64_1, u64 u64_2, u8 u8_3, u64 u64_3) +{ + u64_1 *= 0x7730; + u64_3 *= u64_3; + u16_1 |= u64_3; + u64_3 -= 2; + u8_3 /= u64_2; + u8_0 |= 3; + u64_3 %= u8_0; + u8_0 -= 1; + return u8_0 + u16_0 + u64_0 + u8_1 + u16_1 + u64_1 + u8_3 + u64_3; +} + +int main() +{ + unsigned x = foo(1, 1, 1, 1, 1, 1, 1, 1, 1); + if (x != 0x7737) + __builtin_abort(); + return 0; +} diff --git a/gcc/testsuite/gcc.dg/autopar/pr69110.c b/gcc/testsuite/gcc.dg/autopar/pr69110.c new file mode 100644 index 00000000000..438281dd990 --- /dev/null +++ b/gcc/testsuite/gcc.dg/autopar/pr69110.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-O1 -ftree-parallelize-loops=2 -fno-tree-loop-im -fdump-tree-parloops-details" } */ + +#define N 1000 + +unsigned int i = 0; + +void +foo (void) +{ + unsigned int z; + for (z = 0; z < N; ++z) + ++i; +} + +/* { dg-final { scan-tree-dump-times "SUCCESS: may be parallelized" 0 "parloops" } } */ +/* { dg-final { scan-tree-dump-times "FAILED: data dependencies exist across iterations" 1 "parloops" } } */ diff --git a/gcc/testsuite/gcc.dg/autopar/pr69426.c b/gcc/testsuite/gcc.dg/autopar/pr69426.c new file mode 100644 index 00000000000..e91421cefed --- /dev/null +++ b/gcc/testsuite/gcc.dg/autopar/pr69426.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -ftree-parallelize-loops=2" } */ + +int iq; + +void +mr(void) +{ + unsigned int i8; + + for (i8 = 0; i8 != 1; i8 += 3) { + void *f0[] = { f0 }; + int hv; + + for (; hv < 1; ++hv) + iq = 0; + } + ++iq; +} diff --git a/gcc/testsuite/gcc.dg/pr68513.c b/gcc/testsuite/gcc.dg/pr68513.c new file mode 100644 index 00000000000..86f878d5d73 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr68513.c @@ -0,0 +1,125 @@ +/* PR c/68513 */ +/* { dg-do compile } */ +/* { dg-options "-funsafe-math-optimizations -fno-math-errno -O -Wno-div-by-zero" } */ + +int i; +unsigned u; +volatile int *e; + +#define E (i ? *e : 0) + +/* Can't trigger some of them because operand_equal_p will return false + for side-effects. */ + +/* (x & ~m) | (y & m) -> ((x ^ y) & m) ^ x */ +int +fn1 (void) +{ + int r = 0; + r += (short) (E & ~u | i & u); + r += -(short) (E & ~u | i & u); + r += (short) -(E & ~u | i & u); + return r; +} + +/* sqrt(x) < y is x >= 0 && x != +Inf, when y is large. */ +double +fn2 (void) +{ + double r; + r = __builtin_sqrt (E) < __builtin_inf (); + return r; +} + +/* sqrt(x) < c is the same as x >= 0 && x < c*c. */ +double +fn3 (void) +{ + double r; + r = __builtin_sqrt (E) < 1.3; + return r; +} + +/* copysign(x,y)*copysign(x,y) -> x*x. */ +double +fn4 (double y, double x) +{ + return __builtin_copysign (E, y) * __builtin_copysign (E, y); +} + +/* x <= +Inf is the same as x == x, i.e. !isnan(x). */ +int +fn5 (void) +{ + return E <= __builtin_inf (); +} + +/* Fold (A & ~B) - (A & B) into (A ^ B) - B. */ +int +fn6 (void) +{ + return (i & ~E) - (i & E); +} + +/* Fold (A & B) - (A & ~B) into B - (A ^ B). */ +int +fn7 (void) +{ + return (i & E) - (i & ~E); +} + +/* x + (x & 1) -> (x + 1) & ~1 */ +int +fn8 (void) +{ + return E + (E & 1); +} + +/* Simplify comparison of something with itself. */ +int +fn9 (void) +{ + return E <= E | E >= E; +} + +/* Fold (A & ~B) - (A & B) into (A ^ B) - B. */ +int +fn10 (void) +{ + return (i & ~E) - (i & E); +} + +/* abs(x)*abs(x) -> x*x. Should be valid for all types. */ +int +fn11 (void) +{ + return __builtin_abs (E) * __builtin_abs (E); +} + +/* (x | CST1) & CST2 -> (x & CST2) | (CST1 & CST2) */ +int +fn12 (void) +{ + return (E | 11) & 12; +} + +/* fold_range_test */ +int +fn13 (const char *s) +{ + return s[E] != '\0' && s[E] != '/'; +} + +/* fold_comparison */ +int +fn14 (void) +{ + return (!!i ? : (u *= E / 0)) >= (u = E); +} + +/* fold_mult_zconjz */ +_Complex int +fn15 (_Complex volatile int *z) +{ + return *z * ~*z; +} diff --git a/gcc/testsuite/gcc.dg/pr69644.c b/gcc/testsuite/gcc.dg/pr69644.c new file mode 100644 index 00000000000..c60b1917029 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr69644.c @@ -0,0 +1,11 @@ +/* PR target/69644 */ +/* { dg-do compile } */ + +int +main () +{ + unsigned short x = 0x8000; + if (!__sync_bool_compare_and_swap (&x, 0x8000, 0) || x) + __builtin_abort (); + return 0; +} diff --git a/gcc/testsuite/gcc.dg/torture/pr69542.c b/gcc/testsuite/gcc.dg/torture/pr69542.c new file mode 100644 index 00000000000..ced5c326ac8 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr69542.c @@ -0,0 +1,37 @@ +/* PR middle-end/69542 */ +/* { dg-do compile } */ +/* { dg-additional-options "-fcompare-debug" } */ + +typedef struct A *B; +extern int *a[]; +struct C { B b; struct D *d; }; +struct A { struct { struct C e[1]; long long f[1]; } u; }; +struct D { int g; B h[100]; }; +int b, c, e, g; +B d, f; +void foo (void) __attribute__ ((__noreturn__)); +int bar (void) +{ + int i = 0; + do + { + if ('E' && a[e][0] != 'V') + foo (); + struct D *k = d->u.e[0].d; + B x = k->h[i], o = f->u.e[0].b; + if (b) + return 0; + if (a[g][0] != 'E' && a[g][0] != 'V') + foo (); + struct D *n = o->u.e[0].d; + int r = x->u.f[0]; + (void) r; + if (c) + foo (); + B y = n->h[x->u.f[0]]; + if (i != y->u.f[0]) + return 0; + i++; + } + while (1); +} diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr67755.c b/gcc/testsuite/gcc.dg/tree-ssa/pr67755.c new file mode 100644 index 00000000000..64ffd0b349b --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr67755.c @@ -0,0 +1,25 @@ +/* { dg-do compile } */ +/* { dg-options "-O1 -fdump-tree-dom2-details-blocks" } */ +/* We want to verify no outgoing edge from a conditional + has a probability of 100%. */ +/* { dg-final { scan-tree-dump-not "succ:\[ \]+. .100.0%. .\(TRUE|FALSE\)_VALUE" "dom2"} } */ + + +void (*zend_block_interruptions) (void); + +int * _zend_mm_alloc_int (int * heap, long int size) +{ + int *best_fit; + long int true_size = (size < 15 ? 32 : size); + + if (zend_block_interruptions) + zend_block_interruptions (); + + if (__builtin_expect ((true_size < 543), 1)) + best_fit = heap + 2; + else + best_fit = heap; + + return best_fit; +} + diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr69355.c b/gcc/testsuite/gcc.dg/tree-ssa/pr69355.c new file mode 100644 index 00000000000..f515c211c99 --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr69355.c @@ -0,0 +1,44 @@ +/* { dg-do run } */ +/* { dg-options "-O -fno-strict-aliasing" } */ + +struct S +{ + void *a; + long double b; +}; + +struct Z +{ + long long l; + short s; +} __attribute__((packed)); + +struct S __attribute__((noclone, noinline)) +foo (void *v, struct Z *z) +{ + struct S t; + t.a = v; + *(struct Z *) &t.b = *z; + return t; +} + +struct Z gz; + +int +main (int argc, char **argv) +{ + struct S s; + + if (sizeof (long double) < sizeof (struct Z)) + return 0; + + gz.l = 0xbeef; + gz.s = 0xab; + + s = foo ((void *) 0, &gz); + + if ((((struct Z *) &s.b)->l != gz.l) + || (((struct Z *) &s.b)->s != gz.s)) + __builtin_abort (); + return 0; +} diff --git a/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-31a.c b/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-31a.c index ff67ff28130..72b4930d9bb 100644 --- a/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-31a.c +++ b/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-31a.c @@ -46,5 +46,5 @@ int main (void) return main1 (); } -/* { dg-final { scan-tree-dump-times "vectorization not profitable" 1 "vect" } } */ +/* { dg-final { scan-tree-dump-times "not vectorized: unsupported unaligned store" 1 "vect" { target { ! vect_hw_misalign } } } } */ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { target { ! vect_hw_misalign } } } } */ diff --git a/gcc/testsuite/gcc.target/arm/pr69194.c b/gcc/testsuite/gcc.target/arm/pr69194.c new file mode 100644 index 00000000000..477d5f92c8e --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/pr69194.c @@ -0,0 +1,13 @@ +/* PR target/69194 */ +/* { dg-do-compile } */ +/* { dg-require-effective-target arm_neon_ok } */ +/* { dg-options "-O2" } */ +/* { dg-add-options arm_neon } */ + +typedef __simd128_float32_t float32x4_t; + +float32x4_t +sub (float32x4_t a, float32x4_t b, float32x4_t c, float32x4_t d, float32x4_t e) +{ + return __builtin_neon_vld1v4sf((const float *)&e); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512dq-vrangepd-1.c b/gcc/testsuite/gcc.target/i386/avx512dq-vrangepd-1.c index 034c2337e9e..7e5a9cb1393 100644 --- a/gcc/testsuite/gcc.target/i386/avx512dq-vrangepd-1.c +++ b/gcc/testsuite/gcc.target/i386/avx512dq-vrangepd-1.c @@ -1,15 +1,15 @@ /* { dg-do compile } */ /* { dg-options "-mavx512dq -mavx512vl -O2" } */ -/* { dg-final { scan-assembler-times "vrangepd\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vrangepd\[ \\t\]+\[^\$\n\]*\\$\[^\{\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vrangepd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vrangepd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vrangepd\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrangepd\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vrangepd\[ \\t\]+\[^\$\n\]*\\$\[^\{\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vrangepd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vrangepd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vrangepd\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vrangepd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrangepd\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vrangepd\[ \\t\]+\[^\$\n\]*\\$\[^\{\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vrangepd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vrangepd\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */ diff --git a/gcc/testsuite/gcc.target/i386/avx512dq-vrangeps-1.c b/gcc/testsuite/gcc.target/i386/avx512dq-vrangeps-1.c index 47f974b02f7..a376dc13e72 100644 --- a/gcc/testsuite/gcc.target/i386/avx512dq-vrangeps-1.c +++ b/gcc/testsuite/gcc.target/i386/avx512dq-vrangeps-1.c @@ -3,15 +3,15 @@ /* { dg-final { scan-assembler-times "vrangeps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vrangeps\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vrangeps\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrangeps\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vrangeps\[ \\t\]+\[^\$\n\]*\\$\[^\{\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vrangeps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vrangeps\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vrangeps\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrangeps\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vrangeps\[ \\t\]+\[^\$\n\]*\\$\[^\{\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vrangeps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vrangeps\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vrangeps\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrangeps\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vrangeps\[ \\t\]+\[^\$\n\]*\\$\[^\{\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */ #include <immintrin.h> diff --git a/gcc/testsuite/gcc.target/i386/avx512dq-vrangesd-1.c b/gcc/testsuite/gcc.target/i386/avx512dq-vrangesd-1.c index 6f320c0ef89..4f7d6352da4 100644 --- a/gcc/testsuite/gcc.target/i386/avx512dq-vrangesd-1.c +++ b/gcc/testsuite/gcc.target/i386/avx512dq-vrangesd-1.c @@ -1,7 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-mavx512dq -O2" } */ /* { dg-final { scan-assembler-times "vrangesd\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrangesd\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vrangesd\[ \\t\]+\[^\$\n\]*\\$\[^\{\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ #include <immintrin.h> diff --git a/gcc/testsuite/gcc.target/i386/avx512dq-vrangess-1.c b/gcc/testsuite/gcc.target/i386/avx512dq-vrangess-1.c index 8be003238aa..b0ed86d59ad 100644 --- a/gcc/testsuite/gcc.target/i386/avx512dq-vrangess-1.c +++ b/gcc/testsuite/gcc.target/i386/avx512dq-vrangess-1.c @@ -1,7 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-mavx512dq -O2" } */ /* { dg-final { scan-assembler-times "vrangess\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrangess\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vrangess\[ \\t\]+\[^\$\n\]*\\$\[^\{\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ #include <immintrin.h> diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2sd64-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2sd64-1.c index cceaf599043..7e8bcc0f73e 100644 --- a/gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2sd64-1.c +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2sd64-1.c @@ -1,6 +1,6 @@ /* { dg-do compile { target { ! { ia32 } } } } */ /* { dg-options "-mavx512f -O2" } */ -/* { dg-final { scan-assembler-times "vcvtsi2sdq\[ \\t\]+\[^\n\]*\{ru-sae\}\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vcvtsi2sdq\[ \\t\]+\[^%\n\]*%r\[^\{\n\]*\{ru-sae\}\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ #include <immintrin.h> diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2ss-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2ss-1.c index 832f636bf39..179ab64a726 100644 --- a/gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2ss-1.c +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2ss-1.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-mavx512f -O2" } */ -/* { dg-final { scan-assembler-times "vcvtsi2ss\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vcvtsi2ss\[ \\t\]+\[^%\n\]*%e\[^\{\n\]*\{rn-sae\}\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ #include <immintrin.h> diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2ss64-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2ss64-1.c index 061924069c9..114a687707b 100644 --- a/gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2ss64-1.c +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2ss64-1.c @@ -1,6 +1,6 @@ /* { dg-do compile { target { ! { ia32 } } } } */ /* { dg-options "-mavx512f -O2" } */ -/* { dg-final { scan-assembler-times "vcvtsi2ssq\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vcvtsi2ssq\[ \\t\]+\[^%\n\]*%r\[^\{\n\]*\{rz-sae\}\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ #include <immintrin.h> diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2sd64-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2sd64-1.c index 4eea866fe4b..fcdfcacbeca 100644 --- a/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2sd64-1.c +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2sd64-1.c @@ -1,7 +1,7 @@ /* { dg-do compile { target { ! { ia32 } } } } */ /* { dg-options "-mavx512f -O2" } */ /* { dg-final { scan-assembler-times "vcvtusi2sd\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vcvtusi2sd\[ \\t\]+\[^\n\]*\{ru-sae\}\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vcvtusi2sd\[ \\t\]+\[^%\n\]*%r\[^\{\n\]*\{ru-sae\}\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ #include <immintrin.h> diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2ss-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2ss-1.c index 3a621735cd2..cbd5d3f0d5e 100644 --- a/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2ss-1.c +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2ss-1.c @@ -1,7 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-mavx512f -O2" } */ /* { dg-final { scan-assembler-times "vcvtusi2ss\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vcvtusi2ss\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vcvtusi2ss\[ \\t\]+\[^%\n\]*%e\[^\{\n\]*\{rn-sae\}\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ #include <immintrin.h> diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2ss64-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2ss64-1.c index 11f0969fbbf..6b9368f8704 100644 --- a/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2ss64-1.c +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2ss64-1.c @@ -1,7 +1,7 @@ /* { dg-do compile { target { ! { ia32 } } } } */ /* { dg-options "-mavx512f -O2" } */ /* { dg-final { scan-assembler-times "vcvtusi2ss\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vcvtusi2ss\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vcvtusi2ss\[ \\t\]+\[^%\n\]*%r\[^\{\n\]*\{rz-sae\}\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ #include <immintrin.h> diff --git a/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0dpd-1.c b/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0dpd-1.c index ace50de4fe2..5a153ea3d4c 100644 --- a/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0dpd-1.c +++ b/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0dpd-1.c @@ -1,7 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-mavx512pf -O2" } */ -/* { dg-final { scan-assembler-times "vscatterpf0dpd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*\\)(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vscatterpf0dpd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*\\)\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vscatterpf0dpd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*\\)\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 2 } } */ #include <immintrin.h> volatile __m256i idx; diff --git a/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0dps-1.c b/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0dps-1.c index d648b2ee95c..d1173a2b7f3 100644 --- a/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0dps-1.c +++ b/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0dps-1.c @@ -1,7 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-mavx512pf -O2" } */ -/* { dg-final { scan-assembler-times "vscatterpf0dps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*\\)(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vscatterpf0dps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*\\)\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vscatterpf0dps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*\\)\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 2 } } */ #include <immintrin.h> diff --git a/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0qpd-1.c b/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0qpd-1.c index d32345c5a9b..67529e7be83 100644 --- a/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0qpd-1.c +++ b/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0qpd-1.c @@ -1,7 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-mavx512pf -O2" } */ -/* { dg-final { scan-assembler-times "vscatterpf0qpd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*\\)(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vscatterpf0qpd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*\\)\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vscatterpf0qpd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*\\)\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 2 } } */ #include <immintrin.h> diff --git a/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0qps-1.c b/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0qps-1.c index 44c908fe4f0..9ff580fea4d 100644 --- a/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0qps-1.c +++ b/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0qps-1.c @@ -1,7 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-mavx512pf -O2" } */ -/* { dg-final { scan-assembler-times "vscatterpf0qps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*\\)(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vscatterpf0qps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*\\)\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vscatterpf0qps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*\\)\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 2 } } */ #include <immintrin.h> diff --git a/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1dpd-1.c b/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1dpd-1.c index ff383380369..73a029d10a1 100644 --- a/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1dpd-1.c +++ b/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1dpd-1.c @@ -1,7 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-mavx512pf -O2" } */ -/* { dg-final { scan-assembler-times "vscatterpf1dpd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*\\)(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vscatterpf1dpd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*\\)\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vscatterpf1dpd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*\\)\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 2 } } */ #include <immintrin.h> diff --git a/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1dps-1.c b/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1dps-1.c index 8ec3388cd77..439bc853485 100644 --- a/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1dps-1.c +++ b/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1dps-1.c @@ -1,7 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-mavx512pf -O2" } */ -/* { dg-final { scan-assembler-times "vscatterpf1dps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*\\)(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vscatterpf1dps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*\\)\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vscatterpf1dps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*\\)\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 2 } } */ #include <immintrin.h> diff --git a/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1qpd-1.c b/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1qpd-1.c index 2c4eb2a5b47..3ae16cd2e19 100644 --- a/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1qpd-1.c +++ b/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1qpd-1.c @@ -1,7 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-mavx512pf -O2" } */ -/* { dg-final { scan-assembler-times "vscatterpf1qpd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*\\)(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vscatterpf1qpd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*\\)\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vscatterpf1qpd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*\\)\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 2 } } */ #include <immintrin.h> diff --git a/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1qps-1.c b/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1qps-1.c index 34bcb654949..35cd7d3b5d3 100644 --- a/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1qps-1.c +++ b/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1qps-1.c @@ -1,7 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-mavx512pf -O2" } */ -/* { dg-final { scan-assembler-times "vscatterpf1qps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*\\)(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vscatterpf1qps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*\\)\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vscatterpf1qps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*\\)\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 2 } } */ #include <immintrin.h> diff --git a/gcc/testsuite/gcc.target/i386/chkp-always_inline.c b/gcc/testsuite/gcc.target/i386/chkp-always_inline.c index 26e80fe1975..c10d1310e0e 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-always_inline.c +++ b/gcc/testsuite/gcc.target/i386/chkp-always_inline.c @@ -1,5 +1,4 @@ -/* { dg-do compile } */ -/* { dg-require-effective-target mpx } */ +/* { dg-do compile { target { ! x32 } } } */ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -Wno-attributes" } */ static __attribute__((always_inline)) int f1 (int *p) diff --git a/gcc/testsuite/gcc.target/i386/chkp-bndret.c b/gcc/testsuite/gcc.target/i386/chkp-bndret.c index e1f5cea5c17..d84ea70dcda 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-bndret.c +++ b/gcc/testsuite/gcc.target/i386/chkp-bndret.c @@ -1,5 +1,4 @@ -/* { dg-do compile } */ -/* { dg-require-effective-target mpx } */ +/* { dg-do compile { target { ! x32 } } } */ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkp" } */ /* { dg-final { scan-tree-dump-not "bndret" "chkp" } } */ diff --git a/gcc/testsuite/gcc.target/i386/chkp-builtins-1.c b/gcc/testsuite/gcc.target/i386/chkp-builtins-1.c index 2acc087e62a..99cfa82681c 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-builtins-1.c +++ b/gcc/testsuite/gcc.target/i386/chkp-builtins-1.c @@ -1,5 +1,4 @@ -/* { dg-do compile } */ -/* { dg-require-effective-target mpx } */ +/* { dg-do compile { target { ! x32 } } } */ /* { dg-options "-fcheck-pointer-bounds -mmpx -fdump-tree-chkp" } */ /* { dg-final { scan-tree-dump-not "bnd_init_ptr_bounds" "chkp" } } */ diff --git a/gcc/testsuite/gcc.target/i386/chkp-builtins-2.c b/gcc/testsuite/gcc.target/i386/chkp-builtins-2.c index dc62238c5bd..6da8d0a83ff 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-builtins-2.c +++ b/gcc/testsuite/gcc.target/i386/chkp-builtins-2.c @@ -1,5 +1,4 @@ -/* { dg-do compile } */ -/* { dg-require-effective-target mpx } */ +/* { dg-do compile { target { ! x32 } } } */ /* { dg-options "-fcheck-pointer-bounds -mmpx -fdump-tree-chkp" } */ /* { dg-final { scan-tree-dump-not "bnd_copy_ptr_bounds" "chkp" } } */ diff --git a/gcc/testsuite/gcc.target/i386/chkp-builtins-3.c b/gcc/testsuite/gcc.target/i386/chkp-builtins-3.c index 055f0ed07d9..ae30534c6da 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-builtins-3.c +++ b/gcc/testsuite/gcc.target/i386/chkp-builtins-3.c @@ -1,5 +1,4 @@ -/* { dg-do compile } */ -/* { dg-require-effective-target mpx } */ +/* { dg-do compile { target { ! x32 } } } */ /* { dg-options "-fcheck-pointer-bounds -mmpx -fdump-tree-chkp" } */ /* { dg-final { scan-tree-dump-not "bnd_set_ptr_bounds" "chkp" } } */ diff --git a/gcc/testsuite/gcc.target/i386/chkp-builtins-4.c b/gcc/testsuite/gcc.target/i386/chkp-builtins-4.c index 434df78ac34..d408a490b13 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-builtins-4.c +++ b/gcc/testsuite/gcc.target/i386/chkp-builtins-4.c @@ -1,5 +1,4 @@ -/* { dg-do compile } */ -/* { dg-require-effective-target mpx } */ +/* { dg-do compile { target { ! x32 } } } */ /* { dg-options "-fcheck-pointer-bounds -mmpx -fdump-tree-chkp" } */ /* { dg-final { scan-tree-dump-not "bnd_null_ptr_bounds" "chkp" } } */ diff --git a/gcc/testsuite/gcc.target/i386/chkp-const-check-1.c b/gcc/testsuite/gcc.target/i386/chkp-const-check-1.c index 4170886584f..6e6d067fb50 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-const-check-1.c +++ b/gcc/testsuite/gcc.target/i386/chkp-const-check-1.c @@ -1,5 +1,4 @@ -/* { dg-do compile } */ -/* { dg-require-effective-target mpx } */ +/* { dg-do compile { target { ! x32 } } } */ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt" } */ /* { dg-final { scan-tree-dump-not "bndcl" "chkpopt" } } */ /* { dg-final { scan-tree-dump-not "bndcu" "chkpopt" } } */ diff --git a/gcc/testsuite/gcc.target/i386/chkp-const-check-2.c b/gcc/testsuite/gcc.target/i386/chkp-const-check-2.c index 18e497a0b92..683c21ddbe7 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-const-check-2.c +++ b/gcc/testsuite/gcc.target/i386/chkp-const-check-2.c @@ -1,5 +1,4 @@ -/* { dg-do compile } */ -/* { dg-require-effective-target mpx } */ +/* { dg-do compile { target { ! x32 } } } */ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -Wchkp" } */ int test (int *p) diff --git a/gcc/testsuite/gcc.target/i386/chkp-hidden-def.c b/gcc/testsuite/gcc.target/i386/chkp-hidden-def.c index 8d2b2288db2..ca7e9d2e5ce 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-hidden-def.c +++ b/gcc/testsuite/gcc.target/i386/chkp-hidden-def.c @@ -1,5 +1,4 @@ -/* { dg-do compile } */ -/* { dg-require-effective-target mpx } */ +/* { dg-do compile { target { ! x32 } } } */ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2" } */ /* { dg-final { scan-assembler-not "test.chkp" } } */ diff --git a/gcc/testsuite/gcc.target/i386/chkp-label-address.c b/gcc/testsuite/gcc.target/i386/chkp-label-address.c index 05963e2e6ed..979c33e93e3 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-label-address.c +++ b/gcc/testsuite/gcc.target/i386/chkp-label-address.c @@ -1,5 +1,4 @@ -/* { dg-do compile } */ -/* { dg-require-effective-target mpx } */ +/* { dg-do compile { target { ! x32 } } } */ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -Wchkp" } */ #include <stdio.h> diff --git a/gcc/testsuite/gcc.target/i386/chkp-lifetime-1.c b/gcc/testsuite/gcc.target/i386/chkp-lifetime-1.c index 5ceaa8e4621..70b8b38dc28 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-lifetime-1.c +++ b/gcc/testsuite/gcc.target/i386/chkp-lifetime-1.c @@ -1,5 +1,4 @@ -/* { dg-do compile } */ -/* { dg-require-effective-target mpx } */ +/* { dg-do compile { target { ! x32 } } } */ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt-details" } */ /* { dg-final { scan-tree-dump "Moving creation of \[^ \]+ down to its use" "chkpopt" } } */ diff --git a/gcc/testsuite/gcc.target/i386/chkp-narrow-bounds.c b/gcc/testsuite/gcc.target/i386/chkp-narrow-bounds.c index 60e4ed2d602..ab1b122479a 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-narrow-bounds.c +++ b/gcc/testsuite/gcc.target/i386/chkp-narrow-bounds.c @@ -1,5 +1,4 @@ -/* { dg-do compile } */ -/* { dg-require-effective-target mpx } */ +/* { dg-do compile { target { ! x32 } } } */ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkp" } */ /* { dg-final { scan-tree-dump "bndcl" "chkp" } } */ /* { dg-final { scan-tree-dump "bndcu" "chkp" } } */ diff --git a/gcc/testsuite/gcc.target/i386/chkp-remove-bndint-1.c b/gcc/testsuite/gcc.target/i386/chkp-remove-bndint-1.c index 7a87926a9c0..7c0f13f8ccf 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-remove-bndint-1.c +++ b/gcc/testsuite/gcc.target/i386/chkp-remove-bndint-1.c @@ -1,5 +1,4 @@ -/* { dg-do compile } */ -/* { dg-require-effective-target mpx } */ +/* { dg-do compile { target { ! x32 } } } */ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-optimized" } */ /* { dg-final { scan-tree-dump-not "bndint" "optimized" } } */ diff --git a/gcc/testsuite/gcc.target/i386/chkp-remove-bndint-2.c b/gcc/testsuite/gcc.target/i386/chkp-remove-bndint-2.c index 942f555b3a1..413941abcc2 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-remove-bndint-2.c +++ b/gcc/testsuite/gcc.target/i386/chkp-remove-bndint-2.c @@ -1,5 +1,4 @@ -/* { dg-do compile } */ -/* { dg-require-effective-target mpx } */ +/* { dg-do compile { target { ! x32 } } } */ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-optimized -Wchkp" } */ /* { dg-final { scan-tree-dump-not "bndint" "optimized" } } */ diff --git a/gcc/testsuite/gcc.target/i386/chkp-strchr.c b/gcc/testsuite/gcc.target/i386/chkp-strchr.c index 94a5eaab692..01ee619dfd9 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-strchr.c +++ b/gcc/testsuite/gcc.target/i386/chkp-strchr.c @@ -1,5 +1,4 @@ -/* { dg-do compile } */ -/* { dg-require-effective-target mpx } */ +/* { dg-do compile { target { ! x32 } } } */ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2" } */ #include "string.h" diff --git a/gcc/testsuite/gcc.target/i386/chkp-strlen-1.c b/gcc/testsuite/gcc.target/i386/chkp-strlen-1.c index 01a7b397e6a..de6279f1dfa 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-strlen-1.c +++ b/gcc/testsuite/gcc.target/i386/chkp-strlen-1.c @@ -1,5 +1,4 @@ -/* { dg-do compile } */ -/* { dg-require-effective-target mpx } */ +/* { dg-do compile { target { ! x32 } } } */ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-strlen" } */ /* { dg-final { scan-tree-dump "memcpy.chkp" "strlen" } } */ diff --git a/gcc/testsuite/gcc.target/i386/chkp-strlen-2.c b/gcc/testsuite/gcc.target/i386/chkp-strlen-2.c index c20ad8f099d..9f584efee0a 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-strlen-2.c +++ b/gcc/testsuite/gcc.target/i386/chkp-strlen-2.c @@ -1,5 +1,4 @@ -/* { dg-do compile } */ -/* { dg-require-effective-target mpx } */ +/* { dg-do compile { target { ! x32 } } } */ /* { dg-require-effective-target stpcpy } */ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-strlen" } */ /* { dg-final { scan-tree-dump-not "strlen" "strlen" } } */ diff --git a/gcc/testsuite/gcc.target/i386/chkp-strlen-3.c b/gcc/testsuite/gcc.target/i386/chkp-strlen-3.c index c8e9a7c6699..311c9a042e0 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-strlen-3.c +++ b/gcc/testsuite/gcc.target/i386/chkp-strlen-3.c @@ -1,5 +1,4 @@ -/* { dg-do compile } */ -/* { dg-require-effective-target mpx } */ +/* { dg-do compile { target { ! x32 } } } */ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-strlen" } */ /* { dg-final { scan-tree-dump-times "strlen" 1 "strlen" } } */ diff --git a/gcc/testsuite/gcc.target/i386/chkp-strlen-4.c b/gcc/testsuite/gcc.target/i386/chkp-strlen-4.c index 62166d0d875..794c8a860da 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-strlen-4.c +++ b/gcc/testsuite/gcc.target/i386/chkp-strlen-4.c @@ -1,5 +1,4 @@ -/* { dg-do compile } */ -/* { dg-require-effective-target mpx } */ +/* { dg-do compile { target { ! x32 } } } */ /* { dg-require-effective-target mempcpy } */ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-strlen -D_GNU_SOURCE" } */ /* { dg-final { scan-tree-dump-times "strlen" 1 "strlen" } } */ diff --git a/gcc/testsuite/gcc.target/i386/chkp-strlen-5.c b/gcc/testsuite/gcc.target/i386/chkp-strlen-5.c index 66e9a63a0c4..e44096cd429 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-strlen-5.c +++ b/gcc/testsuite/gcc.target/i386/chkp-strlen-5.c @@ -1,5 +1,4 @@ -/* { dg-do compile } */ -/* { dg-require-effective-target mpx } */ +/* { dg-do compile { target { ! x32 } } } */ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-strlen" } */ /* { dg-final { scan-tree-dump-times "strlen" 2 "strlen" } } */ /* { dg-final { scan-tree-dump "memcpy" "strlen" } } */ diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-1.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-1.c index 49e62f4fc22..18aa2819cdf 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-stropt-1.c +++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-1.c @@ -1,5 +1,4 @@ -/* { dg-do compile } */ -/* { dg-require-effective-target mpx } */ +/* { dg-do compile { target { ! x32 } } } */ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-nochk-string-functions" } */ /* { dg-final { scan-tree-dump "memcpy_nochk" "chkpopt" } } */ diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-10.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-10.c index b8454df956b..26e9f13a190 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-stropt-10.c +++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-10.c @@ -1,5 +1,4 @@ -/* { dg-do compile } */ -/* { dg-require-effective-target mpx } */ +/* { dg-do compile { target { ! x32 } } } */ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-fast-string-functions" } */ /* { dg-final { scan-tree-dump-not "memset_nobnd" "chkpopt" } } */ diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-11.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-11.c index 13b6e02e1fb..e84963f11f7 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-stropt-11.c +++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-11.c @@ -1,5 +1,4 @@ -/* { dg-do compile } */ -/* { dg-require-effective-target mpx } */ +/* { dg-do compile { target { ! x32 } } } */ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-fast-string-functions" } */ /* { dg-final { scan-tree-dump-not "memmove_nobnd" "chkpopt" } } */ diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-12.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-12.c index 2f1873044bf..898e7768b30 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-stropt-12.c +++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-12.c @@ -1,5 +1,4 @@ -/* { dg-do compile } */ -/* { dg-require-effective-target mpx } */ +/* { dg-do compile { target { ! x32 } } } */ /* { dg-require-effective-target mempcpy } */ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-fast-string-functions -D_GNU_SOURCE" } */ /* { dg-final { scan-tree-dump-not "mempcpy_nobnd" "chkpopt" } } */ diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-13.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-13.c index 609d162d026..3b926b11f83 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-stropt-13.c +++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-13.c @@ -1,5 +1,4 @@ -/* { dg-do compile } */ -/* { dg-require-effective-target mpx } */ +/* { dg-do compile { target { ! x32 } } } */ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-nochk-string-functions -fchkp-use-fast-string-functions" } */ /* { dg-final { scan-tree-dump "memcpy_nobnd_nochk" "chkpopt" } } */ diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-14.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-14.c index 3c876178a7e..a8d000ba1fa 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-stropt-14.c +++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-14.c @@ -1,5 +1,4 @@ -/* { dg-do compile } */ -/* { dg-require-effective-target mpx } */ +/* { dg-do compile { target { ! x32 } } } */ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-nochk-string-functions -fchkp-use-fast-string-functions" } */ /* { dg-final { scan-tree-dump "memset_nobnd_nochk" "chkpopt" } } */ diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-15.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-15.c index ffe48f65a7d..7c6065657c0 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-stropt-15.c +++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-15.c @@ -1,5 +1,4 @@ -/* { dg-do compile } */ -/* { dg-require-effective-target mpx } */ +/* { dg-do compile { target { ! x32 } } } */ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-nochk-string-functions -fchkp-use-fast-string-functions" } */ /* { dg-final { scan-tree-dump "memmove_nobnd_nochk" "chkpopt" } } */ diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-16.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-16.c index d4336be1445..891adb4f293 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-stropt-16.c +++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-16.c @@ -1,5 +1,4 @@ -/* { dg-do compile } */ -/* { dg-require-effective-target mpx } */ +/* { dg-do compile { target { ! x32 } } } */ /* { dg-require-effective-target mempcpy } */ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-nochk-string-functions -fchkp-use-fast-string-functions -D_GNU_SOURCE" } */ /* { dg-final { scan-tree-dump "mempcpy_nobnd_nochk" "chkpopt" } } */ diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-2.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-2.c index 0187411edaf..cac0feaecbb 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-stropt-2.c +++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-2.c @@ -1,5 +1,4 @@ -/* { dg-do compile } */ -/* { dg-require-effective-target mpx } */ +/* { dg-do compile { target { ! x32 } } } */ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-nochk-string-functions" } */ /* { dg-final { scan-tree-dump "memset_nochk" "chkpopt" } } */ diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-3.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-3.c index a8da83b5ec4..72ff3869f7b 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-stropt-3.c +++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-3.c @@ -1,5 +1,4 @@ -/* { dg-do compile } */ -/* { dg-require-effective-target mpx } */ +/* { dg-do compile { target { ! x32 } } } */ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-nochk-string-functions" } */ /* { dg-final { scan-tree-dump "memmove_nochk" "chkpopt" } } */ diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-4.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-4.c index a68d8fb0e40..3faa58b0aea 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-stropt-4.c +++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-4.c @@ -1,5 +1,4 @@ -/* { dg-do compile } */ -/* { dg-require-effective-target mpx } */ +/* { dg-do compile { target { ! x32 } } } */ /* { dg-require-effective-target mempcpy } */ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-nochk-string-functions -D_GNU_SOURCE" } */ /* { dg-final { scan-tree-dump "mempcpy_nochk" "chkpopt" } } */ diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-5.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-5.c index b449801b4a9..02ad9ccc496 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-stropt-5.c +++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-5.c @@ -1,5 +1,4 @@ -/* { dg-do compile } */ -/* { dg-require-effective-target mpx } */ +/* { dg-do compile { target { ! x32 } } } */ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-fast-string-functions" } */ /* { dg-final { scan-tree-dump "memcpy_nobnd" "chkpopt" } } */ diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-6.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-6.c index ffb34b6d92e..6db5d83a0bc 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-stropt-6.c +++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-6.c @@ -1,5 +1,4 @@ -/* { dg-do compile } */ -/* { dg-require-effective-target mpx } */ +/* { dg-do compile { target { ! x32 } } } */ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-fast-string-functions" } */ /* { dg-final { scan-tree-dump "memset_nobnd" "chkpopt" } } */ diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-7.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-7.c index ddaa6234d21..761e6263d86 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-stropt-7.c +++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-7.c @@ -1,5 +1,4 @@ -/* { dg-do compile } */ -/* { dg-require-effective-target mpx } */ +/* { dg-do compile { target { ! x32 } } } */ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-fast-string-functions" } */ /* { dg-final { scan-tree-dump "memmove_nobnd" "chkpopt" } } */ diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-8.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-8.c index 67c34e05e60..01bff6930a3 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-stropt-8.c +++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-8.c @@ -1,5 +1,4 @@ -/* { dg-do compile } */ -/* { dg-require-effective-target mpx } */ +/* { dg-do compile { target { ! x32 } } } */ /* { dg-require-effective-target mempcpy } */ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-fast-string-functions -D_GNU_SOURCE" } */ /* { dg-final { scan-tree-dump "mempcpy_nobnd" "chkpopt" } } */ diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-9.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-9.c index 3b14b031ba1..b79d09633dd 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-stropt-9.c +++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-9.c @@ -1,5 +1,4 @@ -/* { dg-do compile } */ -/* { dg-require-effective-target mpx } */ +/* { dg-do compile { target { ! x32 } } } */ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-fast-string-functions" } */ /* { dg-final { scan-tree-dump-not "memcpy_nobnd" "chkpopt" } } */ diff --git a/gcc/testsuite/gcc.target/i386/pr63995-2.c b/gcc/testsuite/gcc.target/i386/pr63995-2.c index 7c22e625a8d..89b429e7f55 100644 --- a/gcc/testsuite/gcc.target/i386/pr63995-2.c +++ b/gcc/testsuite/gcc.target/i386/pr63995-2.c @@ -1,5 +1,4 @@ -/* { dg-do compile } */ -/* { dg-require-effective-target mpx } */ +/* { dg-do compile { target { ! x32 } } } */ /* { dg-options "-O2 -g -fcheck-pointer-bounds -mmpx -fcompare-debug" } */ struct ts diff --git a/gcc/testsuite/gcc.target/i386/pr64805.c b/gcc/testsuite/gcc.target/i386/pr64805.c index 8ba0a972208..3c8d6668dfa 100644 --- a/gcc/testsuite/gcc.target/i386/pr64805.c +++ b/gcc/testsuite/gcc.target/i386/pr64805.c @@ -1,5 +1,4 @@ -/* { dg-do compile } */ -/* { dg-require-effective-target mpx } */ +/* { dg-do compile { target { ! x32 } } } */ /* { dg-options "-fcheck-pointer-bounds -mmpx" } */ #include <stdio.h> diff --git a/gcc/testsuite/gcc.target/i386/pr65044.c b/gcc/testsuite/gcc.target/i386/pr65044.c index 4f318d62f88..3b129862aa9 100644 --- a/gcc/testsuite/gcc.target/i386/pr65044.c +++ b/gcc/testsuite/gcc.target/i386/pr65044.c @@ -1,6 +1,5 @@ /* { dg-error "-fcheck-pointer-bounds is not supported with Address Sanitizer" } */ -/* { dg-do compile } */ -/* { dg-require-effective-target mpx } */ +/* { dg-do compile { target { ! x32 } } } */ /* { dg-options "-fcheck-pointer-bounds -mmpx -fsanitize=address" } */ extern int x[]; diff --git a/gcc/testsuite/gcc.target/i386/pr65167.c b/gcc/testsuite/gcc.target/i386/pr65167.c index 35f3d6bc884..64cc7aef520 100644 --- a/gcc/testsuite/gcc.target/i386/pr65167.c +++ b/gcc/testsuite/gcc.target/i386/pr65167.c @@ -1,5 +1,4 @@ -/* { dg-do compile } */ -/* { dg-require-effective-target mpx } */ +/* { dg-do compile { target { ! x32 } } } */ /* { dg-options "-O -fschedule-insns -fcheck-pointer-bounds -mmpx" } */ void bar(int *a, int *b, int *c, int *d, int *e, int *f); diff --git a/gcc/testsuite/gcc.target/i386/pr65183.c b/gcc/testsuite/gcc.target/i386/pr65183.c index 069a543af36..4d62267fc0d 100644 --- a/gcc/testsuite/gcc.target/i386/pr65183.c +++ b/gcc/testsuite/gcc.target/i386/pr65183.c @@ -1,5 +1,4 @@ -/* { dg-do compile } */ -/* { dg-require-effective-target mpx } */ +/* { dg-do compile { target { ! x32 } } } */ /* { dg-options "-O -fcheck-pointer-bounds -fchkp-use-nochk-string-functions -mmpx" } */ extern void bar(void *); diff --git a/gcc/testsuite/gcc.target/i386/pr65184.c b/gcc/testsuite/gcc.target/i386/pr65184.c index 0355f29a0f2..e12b8a922f1 100644 --- a/gcc/testsuite/gcc.target/i386/pr65184.c +++ b/gcc/testsuite/gcc.target/i386/pr65184.c @@ -1,5 +1,4 @@ -/* { dg-do compile } */ -/* { dg-require-effective-target mpx } */ +/* { dg-do compile { target { ! x32 } } } */ /* { dg-options "-O2 -mabi=ms -fcheck-pointer-bounds -mmpx" } */ void diff --git a/gcc/testsuite/gcc.target/i386/pr68986-1.c b/gcc/testsuite/gcc.target/i386/pr68986-1.c new file mode 100644 index 00000000000..998f34f05b4 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr68986-1.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target tls_native } */ +/* { dg-require-effective-target fpic } */ +/* { dg-options "-fPIC -mno-accumulate-outgoing-args -mpreferred-stack-boundary=5 -mincoming-stack-boundary=4" } */ + +extern __thread int msgdata; +int +foo () +{ + return msgdata; +} diff --git a/gcc/testsuite/gcc.target/i386/pr68986-2.c b/gcc/testsuite/gcc.target/i386/pr68986-2.c new file mode 100644 index 00000000000..c3a366c1958 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr68986-2.c @@ -0,0 +1,13 @@ +/* { dg-do compile { target ia32 } } */ +/* { dg-require-effective-target tls_native } */ +/* { dg-require-effective-target fpic } */ +/* { dg-options "-fPIC -mno-accumulate-outgoing-args -mpreferred-stack-boundary=2" } */ + +extern __thread int msgdata; +int +foo () +{ + return msgdata; +} + +/* { dg-final { scan-assembler "andl\[\\t \]*\\$-16,\[\\t \]*%esp" } } */ diff --git a/gcc/testsuite/gcc.target/i386/pr68986-3.c b/gcc/testsuite/gcc.target/i386/pr68986-3.c new file mode 100644 index 00000000000..5744cf222ae --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr68986-3.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target tls_native } */ +/* { dg-require-effective-target fpic } */ +/* { dg-options "-fPIC -mno-sse -mpreferred-stack-boundary=3 -mincoming-stack-boundary=3" } */ + +extern __thread int msgdata; +int +foo () +{ + return msgdata; +} + +/* { dg-final { scan-assembler "and\[lq\]\[\\t \]*\\$-16,\[\\t \]*%\[re\]?sp" } } */ diff --git a/gcc/testsuite/gcc.target/i386/pr69140.c b/gcc/testsuite/gcc.target/i386/pr69140.c new file mode 100644 index 00000000000..2c345dd75bc --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr69140.c @@ -0,0 +1,24 @@ +/* { dg-do compile { target lp64 } } */ +/* { dg-options "-O2 -mincoming-stack-boundary=3" } */ + +typedef struct { + unsigned int buf[4]; + unsigned char in[64]; +} MD4_CTX; + +static void +MD4Transform (unsigned int buf[4], const unsigned int in[16]) +{ + unsigned int a, b, c, d; + (b) += ((((c)) & ((d))) | ((~(c)) & ((a)))) + (in[7]); + (a) += ((((b)) & ((c))) | ((~(b)) & ((d)))) + (in[8]); + (d) += ((((a)) & ((b))) | ((~(a)) & ((c)))) + (in[9]); + buf[3] += d; +} + +void __attribute__((ms_abi)) +MD4Update (MD4_CTX *ctx, const unsigned char *buf) +{ + MD4Transform( ctx->buf, (unsigned int *)ctx->in); + MD4Transform( ctx->buf, (unsigned int *)ctx->in); +} diff --git a/gcc/testsuite/gcc.target/i386/pr69459.c b/gcc/testsuite/gcc.target/i386/pr69459.c new file mode 100644 index 00000000000..2d0bbbcdbf1 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr69459.c @@ -0,0 +1,42 @@ +/* PR target/69549 */ +/* { dg-do run { target sse2_runtime } } */ +/* { dg-options "-O2 -msse2" } */ + +typedef unsigned char u8; +typedef unsigned short u16; +typedef unsigned int u32; +typedef unsigned long long u64; +typedef unsigned char v16u8 __attribute__ ((vector_size (16))); +typedef unsigned short v16u16 __attribute__ ((vector_size (16))); +typedef unsigned int v16u32 __attribute__ ((vector_size (16))); +typedef unsigned long long v16u64 __attribute__ ((vector_size (16))); + +u64 __attribute__((noinline, noclone)) +foo (u8 u8_0, u16 u16_3, v16u8 v16u8_0, v16u16 v16u16_0, v16u32 v16u32_0, v16u64 v16u64_0, v16u8 v16u8_1, v16u16 v16u16_1, v16u32 v16u32_1, v16u64 v16u64_1, v16u8 v16u8_2, v16u16 v16u16_2, v16u32 v16u32_2, v16u64 v16u64_2, v16u8 v16u8_3, v16u16 v16u16_3, v16u32 v16u32_3, v16u64 v16u64_3) +{ + v16u64_0 /= (v16u64){u16_3, ((0))} | 1; + v16u64_1 += (v16u64)~v16u32_0; + v16u16_1 /= (v16u16){-v16u64_3[1]} | 1; + v16u64_3[1] -= 0x1fffffff; + v16u32_2 /= (v16u32)-v16u64_0 | 1; + v16u32_1 += ~v16u32_1; + v16u16_3 %= (v16u16){0xfff, v16u32_2[3], v16u8_0[14]} | 1; + v16u64_3 -= (v16u64)v16u32_2; + if (v16u64_1[1] >= 1) { + v16u64_0 %= (v16u64){v16u32_0[1]} | 1; + v16u32_1[1] %= 0x5fb856; + v16u64_1 |= -v16u64_0; + } + v16u8_0 *= (v16u8)v16u32_1; + return u8_0 + v16u8_0 [12] + v16u8_0 [13] + v16u8_0 [14] + v16u8_0 [15] + v16u16_0 [0] + v16u16_0 [1] + v16u32_0 [0] + v16u32_0 [1] + v16u32_0 [2] + v16u32_0 [3] + v16u64_0 [0] + v16u64_0 [1] + v16u8_1 [9] + v16u8_1 [10] + v16u8_1 [11] + v16u8_1 [15] + v16u16_1 [0] + v16u16_1 [1] + v16u16_1 [3] + v16u64_1 [0] + v16u64_1 [1] + v16u8_2 [3] + v16u8_2 [4] + v16u8_2 [5] + v16u8_2 [0] + v16u32_2 [1] + v16u32_2 [2] + v16u32_2 [3] + v16u64_2 [0] + v16u64_2 [1] + v16u8_3 [0] + v16u16_3 [6] + v16u16_3[7] + v16u32_3[1] + v16u32_3[2] + v16u64_3[0] + v16u64_3[1]; +} + +int +main () +{ + u64 x = foo(1, 1, (v16u8){1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, (v16u16){1, 1}, (v16u32){1}, (v16u64){1}, (v16u8){1}, (v16u16){1, 1}, (v16u32){1}, (v16u64){1}, (v16u8){1, 1, 1, 1, 1}, (v16u16){1}, (v16u32){1}, (v16u64){1}, (v16u8){1}, (v16u16){1}, (v16u32){1}, (v16u64){1}); + + if (x != 0xffffffffe0000209) + __builtin_abort(); + return 0; +} diff --git a/gcc/testsuite/gcc.target/i386/pr69551.c b/gcc/testsuite/gcc.target/i386/pr69551.c new file mode 100644 index 00000000000..1505fc21dbf --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr69551.c @@ -0,0 +1,23 @@ +/* PR target/69551 */ +/* { dg-do run { target sse_runtime } } */ +/* { dg-options "-O2 -mno-sse2 -msse" } */ + +typedef unsigned char v16qi __attribute__ ((vector_size (16))); +typedef unsigned int v4si __attribute__ ((vector_size (16))); + +char __attribute__ ((noinline, noclone)) +test (v4si vec) +{ + vec[1] = 0x5fb856; + return ((v16qi) vec)[0]; +} + +int +main () +{ + char z = test ((v4si) { -1, -1, -1, -1 }); + + if (z != -1) + __builtin_abort (); + return 0; +} diff --git a/gcc/testsuite/gcc.target/i386/thunk-retbnd.c b/gcc/testsuite/gcc.target/i386/thunk-retbnd.c index 88ec9c9441d..dcce6baf104 100644 --- a/gcc/testsuite/gcc.target/i386/thunk-retbnd.c +++ b/gcc/testsuite/gcc.target/i386/thunk-retbnd.c @@ -1,5 +1,4 @@ -/* { dg-do compile } */ -/* { dg-require-effective-target mpx } */ +/* { dg-do compile { target { ! x32 } } } */ /* { dg-options "-O2 -fcheck-pointer-bounds -mmpx -fdump-tree-optimized" } */ /* { dg-final { scan-tree-dump-times "return &glob," 2 "optimized" } } */ diff --git a/gcc/testsuite/gcc.target/ia64/pr60465-gprel64-c37.c b/gcc/testsuite/gcc.target/ia64/pr60465-gprel64-c37.c new file mode 100644 index 00000000000..a7e6809eb6d --- /dev/null +++ b/gcc/testsuite/gcc.target/ia64/pr60465-gprel64-c37.c @@ -0,0 +1,10 @@ +/* { dg-do compile { target ia64-*-* } } */ +/* { dg-options "-O2 -fpic" } */ +/* { dg-final { scan-assembler-not "@ltoffx" } } */ + +/* A bit of https://bugzilla.redhat.com/show_bug.cgi?id=33354 + where many stores to static variables overflow .sdata */ + +static const char *s90; +void f() { s90 = "string 90"; } +const char * g() { return s90; } diff --git a/gcc/testsuite/gcc.target/ia64/pr60465-gprel64.c b/gcc/testsuite/gcc.target/ia64/pr60465-gprel64.c new file mode 100644 index 00000000000..c00ecc947d9 --- /dev/null +++ b/gcc/testsuite/gcc.target/ia64/pr60465-gprel64.c @@ -0,0 +1,27 @@ +/* { dg-do compile { target ia64-*-* } } */ +/* { dg-options "-O2 -fpic" } */ +/* { dg-final { scan-assembler-not "@ltoffx" } } */ + +/* Test imitates early ld.so setup in glibc + where no dynamic relocations must be present. */ + +struct rtld_global +{ + long *p[77]; +}; + +struct rtld_global _rtld_local __attribute__ ((visibility ("hidden"), section (".sdata"))); + +static void __attribute__ ((unused, noinline)) +elf_get_dynamic_info (struct rtld_global * g, long * dyn) +{ + long **info = g->p; + + info[(0x6ffffeff - *dyn) + 66] = dyn; +} + +void __attribute__ ((unused, noinline)) +_dl_start (long * dyn) +{ + elf_get_dynamic_info(&_rtld_local, dyn); +} diff --git a/gcc/testsuite/gcc.target/powerpc/pr69548.c b/gcc/testsuite/gcc.target/powerpc/pr69548.c new file mode 100644 index 00000000000..439f588b874 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/pr69548.c @@ -0,0 +1,11 @@ +/* { dg-do assemble { target { powerpc*-*-* && lp64 } } } */ +/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ +/* { dg-require-effective-target powerpc_p8vector_ok } */ +/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ +/* { dg-options "-mcpu=power8 -Os -mbig" } */ + +__int128 +quad_exchange (__int128 *ptr, __int128 newval) +{ + return __atomic_exchange_n (ptr, newval, __ATOMIC_RELAXED); +} diff --git a/gcc/testsuite/gcc.target/s390/gpr2fprsavecfi.c b/gcc/testsuite/gcc.target/s390/gpr2fprsavecfi.c new file mode 100644 index 00000000000..92a0d3ae29a --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/gpr2fprsavecfi.c @@ -0,0 +1,23 @@ +/* { dg-do compile } */ +/* { dg-options "-O3 -march=z10 -mzarch -fdwarf2-cfi-asm" } */ + +char *gl[100]; + +long +foo () +{ + long r = 0; + char bla[100]; + int i; + + __builtin_memcpy (bla, gl, 100); + + for (i = 0; i < 100; i++) + r += bla[i]; + + return r; +} + +/* { dg-final { scan-assembler-not "cfi_def_cfa_register" } } */ +/* { dg-final { scan-assembler "cfi_register" } } */ +/* { dg-final { scan-assembler "cfi_def_cfa_offset" } } */ diff --git a/gcc/testsuite/gfortran.dg/alloc_comp_auto_array_3.f90 b/gcc/testsuite/gfortran.dg/alloc_comp_auto_array_3.f90 new file mode 100644 index 00000000000..c96a4df237b --- /dev/null +++ b/gcc/testsuite/gfortran.dg/alloc_comp_auto_array_3.f90 @@ -0,0 +1,30 @@ +! { dg-do compile } +! { dg-options "-fdump-tree-original" } +! +! Test the fix for PR66082. The original problem was with the first +! call foo_1d. +! +! Reported by Damian Rouson <damian@sourceryinstitute.org> +! + type foo_t + real, allocatable :: bigarr + end type + block + type(foo_t) :: foo + allocate(foo%bigarr) + call foo_1d (1,[foo]) ! was lost + call foo_1d (1,bar_1d()) ! Check that this is OK + end block +contains + subroutine foo_1d (n,foo) + integer n + type(foo_t) :: foo(n) + end subroutine + function bar_1d () result (array) + type(foo_t) :: array(1) + allocate (array(1)%bigarr) + end function +end +! { dg-final { scan-tree-dump-times "builtin_malloc" 4 "original" } } +! { dg-final { scan-tree-dump-times "builtin_free" 4 "original" } } +! { dg-final { scan-tree-dump-times "while \\(1\\)" 4 "original" } } diff --git a/gcc/testsuite/gfortran.dg/allocatable_scalar_13.f90 b/gcc/testsuite/gfortran.dg/allocatable_scalar_13.f90 index 67a8641637d..09113018373 100644 --- a/gcc/testsuite/gfortran.dg/allocatable_scalar_13.f90 +++ b/gcc/testsuite/gfortran.dg/allocatable_scalar_13.f90 @@ -67,5 +67,5 @@ contains ! allocate(res, source = arg) ! Caused an ICE ! end subroutine end -! { dg-final { scan-tree-dump-times "builtin_malloc" 15 "original" } } -! { dg-final { scan-tree-dump-times "builtin_free" 17 "original" } } +! { dg-final { scan-tree-dump-times "builtin_malloc" 16 "original" } } +! { dg-final { scan-tree-dump-times "builtin_free" 16 "original" } } diff --git a/gcc/testsuite/gfortran.dg/allocate_with_source_14.f03 b/gcc/testsuite/gfortran.dg/allocate_with_source_14.f03 index 5ca47a62e83..36c1245ccdd 100644 --- a/gcc/testsuite/gfortran.dg/allocate_with_source_14.f03 +++ b/gcc/testsuite/gfortran.dg/allocate_with_source_14.f03 @@ -210,5 +210,5 @@ program main call v%free() deallocate(av) end program -! { dg-final { scan-tree-dump-times "__builtin_malloc" 21 "original" } } +! { dg-final { scan-tree-dump-times "__builtin_malloc" 23 "original" } } ! { dg-final { scan-tree-dump-times "__builtin_free" 29 "original" } } diff --git a/gcc/testsuite/gfortran.dg/allocate_with_source_16.f90 b/gcc/testsuite/gfortran.dg/allocate_with_source_16.f90 new file mode 100644 index 00000000000..977202d04aa --- /dev/null +++ b/gcc/testsuite/gfortran.dg/allocate_with_source_16.f90 @@ -0,0 +1,26 @@ +!{ dg-do compile } +! PR69268 +! +! Contributed by Rich Townsend <townsend@astro.wisc.edu> + +program test_sourced_alloc + + implicit none + + type :: foo_t + end type foo_t + + class(foo_t), allocatable :: f + + allocate(f, SOURCE=f_func()) + +contains + + function f_func () result (f) + type(foo_t) :: f + integer, save :: c = 0 + c = c + 1 + if (c .gt. 1) call abort() + end function f_func + +end program test_sourced_alloc diff --git a/gcc/testsuite/gfortran.dg/coarray_allocate_2.f08 b/gcc/testsuite/gfortran.dg/coarray_allocate_2.f08 new file mode 100644 index 00000000000..7a712a94203 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/coarray_allocate_2.f08 @@ -0,0 +1,26 @@ +! { dg-do run } +! { dg-options "-fcoarray=single" } +! +! Contributed by Ian Harvey <ian_harvey@bigpond.com> +! Extended by Andre Vehreschild <vehre@gcc.gnu.org> +! to test that coarray references in allocate work now +! PR fortran/67451 + + program main + implicit none + type foo + integer :: bar = 99 + end type + class(foo), allocatable :: foobar[:] + class(foo), allocatable :: some_local_object + allocate(foobar[*]) + + allocate(some_local_object, source=foobar) + + if (.not. allocated(foobar)) call abort() + if (.not. allocated(some_local_object)) call abort() + + deallocate(some_local_object) + deallocate(foobar) + end program + diff --git a/gcc/testsuite/gfortran.dg/coarray_allocate_3.f08 b/gcc/testsuite/gfortran.dg/coarray_allocate_3.f08 new file mode 100644 index 00000000000..b9413b6ce4a --- /dev/null +++ b/gcc/testsuite/gfortran.dg/coarray_allocate_3.f08 @@ -0,0 +1,28 @@ +! { dg-do run } +! { dg-options "-fcoarray=single" } +! +! Contributed by Ian Harvey <ian_harvey@bigpond.com> +! Extended by Andre Vehreschild <vehre@gcc.gnu.org> +! to test that coarray references in allocate work now +! PR fortran/67451 + + program main + implicit none + type foo + integer :: bar = 99 + end type + class(foo), dimension(:), allocatable :: foobar[:] + class(foo), dimension(:), allocatable :: some_local_object + allocate(foobar(10)[*]) + + allocate(some_local_object(10), source=foobar) + + if (.not. allocated(foobar)) call abort() + if (lbound(foobar, 1) /= 1 .OR. ubound(foobar, 1) /= 10) call abort() + if (.not. allocated(some_local_object)) call abort() + if (any(some_local_object(:)%bar /= [99, 99, 99, 99, 99, 99, 99, 99, 99, 99])) call abort() + + deallocate(some_local_object) + deallocate(foobar) + end program + diff --git a/gcc/testsuite/gfortran.dg/coarray_allocate_4.f08 b/gcc/testsuite/gfortran.dg/coarray_allocate_4.f08 new file mode 100644 index 00000000000..a36d7968b42 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/coarray_allocate_4.f08 @@ -0,0 +1,43 @@ +! { dg-do run } +! { dg-options "-fcoarray=single" } +! +! Contributed by Gerhard Steinmetz <gerhard.steinmetz.fortran@t-online.de> +! Andre Vehreschild <vehre@gcc.gnu.org> +! Check that PR fortran/69451 is fixed. + +program main + +implicit none + +type foo +end type + +class(foo), allocatable :: p[:] +class(foo), pointer :: r +class(*), allocatable, target :: z + +allocate(p[*]) + +call s(p, z) +select type (z) + class is (foo) + r => z + class default + call abort() +end select + +if (.not. associated(r)) call abort() + +deallocate(r) +deallocate(p) + +contains + +subroutine s(x, z) + class(*) :: x[*] + class(*), allocatable:: z + allocate (z, source=x) +end + +end + diff --git a/gcc/testsuite/gfortran.dg/common_22.f90 b/gcc/testsuite/gfortran.dg/common_22.f90 new file mode 100644 index 00000000000..e2254099d72 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/common_22.f90 @@ -0,0 +1,24 @@ +! { dg-do compile } +! +! PR fortran/59746 +! Check that symbols present in common block are properly cleaned up +! upon error. +! +! Contributed by Bud Davis <jmdavis@link.com> + + CALL RCCFL (NVE,IR,NU3,VE (1,1,1,I)) + COMMON /CCFILE/ INTG,NT1,NT2,NT3,NVM,NVE,NFRLE,NRESF,NRESL !{ dg-error "Unexpected COMMON" } + COMMON /CCFILE/ INTG,NT1,NT2,NT3,NVM,NVE,NFRLE,NRESF,NRESL !{ dg-error "Unexpected COMMON" } +! the PR only contained the two above. +! success is no segfaults or infinite loops. +! let's check some combinations + CALL ABC (INTG) + COMMON /CCFILE/ INTG,NT1,NT2,NT3,NVM,NVE,NFRLE,NRESF,NRESL !{ dg-error "Unexpected COMMON" } + COMMON /CCFILE/ INTG,NT1,NT2,NT3,NVM,NVE,NFRLE,NRESF,NRESL !{ dg-error "Unexpected COMMON" } + CALL DEF (NT1) + COMMON /CCFILE/ INTG,NT1,NT2,NT3,NVM,NVE,NFRLE,NRESF,NRESL !{ dg-error "Unexpected COMMON" } + COMMON /CCFILE/ INTG,NT1,NT2,NT3,NVM,NVE,NFRLE,NRESF,NRESL !{ dg-error "Unexpected COMMON" } + CALL GHI (NRESL) + COMMON /CCFILE/ INTG,NT1,NT2,NT3,NVM,NVE,NFRLE,NRESF,NRESL !{ dg-error "Unexpected COMMON" } + COMMON /CCFILE/ INTG,NT1,NT2,NT3,NVM,NVE,NFRLE,NRESF,NRESL !{ dg-error "Unexpected COMMON" } + END diff --git a/gcc/testsuite/gfortran.dg/common_23.f90 b/gcc/testsuite/gfortran.dg/common_23.f90 new file mode 100644 index 00000000000..3f1f005db85 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/common_23.f90 @@ -0,0 +1,10 @@ +! { dg-do compile } +! +! PR fortran/66707 +! Check the compilation on wrong usage of common +! Contributed by Gerhard Steinmetz <gerhard.steinmetz.fortran@t-online.de> +program p + integer, pointer :: a + common a, a ! { dg-error "is already in a COMMON block" } + common a +end diff --git a/gcc/testsuite/gfortran.dg/derived_constructor_comps_6.f90 b/gcc/testsuite/gfortran.dg/derived_constructor_comps_6.f90 new file mode 100644 index 00000000000..9cdb81ae520 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/derived_constructor_comps_6.f90 @@ -0,0 +1,133 @@ +! { dg-do run } +! { dg-additional-options "-fdump-tree-original" } +! +! PR fortran/61831 +! The deallocation of components of array constructor elements +! used to have the side effect of also deallocating some other +! variable's components from which they were copied. + +program main + implicit none + + integer, parameter :: n = 2 + + type :: string_t + character(LEN=1), dimension(:), allocatable :: chars + end type string_t + + type :: string_container_t + type(string_t) :: comp + end type string_container_t + + type :: string_array_container_t + type(string_t) :: comp(n) + end type string_array_container_t + + type(string_t) :: prt_in, tmp, tmpa(n) + type(string_container_t) :: tmpc, tmpca(n) + type(string_array_container_t) :: tmpac, tmpaca(n) + integer :: i, j, k + + do i=1,16 + + ! Test without intermediary function + prt_in = string_t(["A"]) + if (.not. allocated(prt_in%chars)) call abort + if (any(prt_in%chars .ne. "A")) call abort + deallocate (prt_in%chars) + + ! scalar elemental function + prt_in = string_t(["B"]) + if (.not. allocated(prt_in%chars)) call abort + if (any(prt_in%chars .ne. "B")) call abort + tmp = new_prt_spec (prt_in) + if (.not. allocated(prt_in%chars)) call abort + if (any(prt_in%chars .ne. "B")) call abort + deallocate (prt_in%chars) + deallocate (tmp%chars) + + ! array elemental function with array constructor + prt_in = string_t(["C"]) + if (.not. allocated(prt_in%chars)) call abort + if (any(prt_in%chars .ne. "C")) call abort + tmpa = new_prt_spec ([(prt_in, i=1,2)]) + if (.not. allocated(prt_in%chars)) call abort + if (any(prt_in%chars .ne. "C")) call abort + deallocate (prt_in%chars) + do j=1,n + deallocate (tmpa(j)%chars) + end do + + ! scalar elemental function with structure constructor + prt_in = string_t(["D"]) + if (.not. allocated(prt_in%chars)) call abort + if (any(prt_in%chars .ne. "D")) call abort + tmpc = new_prt_spec2 (string_container_t(prt_in)) + if (.not. allocated(prt_in%chars)) call abort + if (any(prt_in%chars .ne. "D")) call abort + deallocate (prt_in%chars) + deallocate(tmpc%comp%chars) + + ! array elemental function of an array constructor of structure constructors + prt_in = string_t(["E"]) + if (.not. allocated(prt_in%chars)) call abort + if (any(prt_in%chars .ne. "E")) call abort + tmpca = new_prt_spec2 ([ (string_container_t(prt_in), i=1,2) ]) + if (.not. allocated(prt_in%chars)) call abort + if (any(prt_in%chars .ne. "E")) call abort + deallocate (prt_in%chars) + do j=1,n + deallocate (tmpca(j)%comp%chars) + end do + + ! scalar elemental function with a structure constructor and a nested array constructor + prt_in = string_t(["F"]) + if (.not. allocated(prt_in%chars)) call abort + if (any(prt_in%chars .ne. "F")) call abort + tmpac = new_prt_spec3 (string_array_container_t([ (prt_in, i=1,2) ])) + if (.not. allocated(prt_in%chars)) call abort + if (any(prt_in%chars .ne. "F")) call abort + deallocate (prt_in%chars) + do j=1,n + deallocate (tmpac%comp(j)%chars) + end do + + ! array elemental function with an array constructor nested inside + ! a structure constructor nested inside an array constructor + prt_in = string_t(["G"]) + if (.not. allocated(prt_in%chars)) call abort + if (any(prt_in%chars .ne. "G")) call abort + tmpaca = new_prt_spec3 ([ (string_array_container_t([ (prt_in, i=1,2) ]), j=1,2) ]) + if (.not. allocated(prt_in%chars)) call abort + if (any(prt_in%chars .ne. "G")) call abort + deallocate (prt_in%chars) + do j=1,n + do k=1,n + deallocate (tmpaca(j)%comp(k)%chars) + end do + end do + + end do + +contains + + elemental function new_prt_spec (name) result (prt_spec) + type(string_t), intent(in) :: name + type(string_t) :: prt_spec + prt_spec = name + end function new_prt_spec + + elemental function new_prt_spec2 (name) result (prt_spec) + type(string_container_t), intent(in) :: name + type(string_container_t) :: prt_spec + prt_spec = name + end function new_prt_spec2 + + elemental function new_prt_spec3 (name) result (prt_spec) + type(string_array_container_t), intent(in) :: name + type(string_array_container_t) :: prt_spec + prt_spec = name + end function new_prt_spec3 +end program main +! { dg-final { scan-tree-dump-times "__builtin_malloc" 15 "original" } } +! { dg-final { scan-tree-dump-times "__builtin_free" 33 "original" } } diff --git a/gcc/testsuite/gfortran.dg/pr68283.f90 b/gcc/testsuite/gfortran.dg/pr68283.f90 new file mode 100644 index 00000000000..81f74129fe9 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr68283.f90 @@ -0,0 +1,15 @@ +! { dg-do compile } +MODULE neb_utils + IMPLICIT NONE + INTEGER, PARAMETER :: dp=8 + TYPE neb_var_type + REAL(KIND=dp), DIMENSION(:, :), POINTER :: xyz, int, wrk + END TYPE neb_var_type +CONTAINS + SUBROUTINE get_neb_force() + INTEGER :: i + TYPE(neb_var_type), POINTER :: forces + REAL(KIND=dp), ALLOCATABLE, DIMENSION(:) :: dtmp1, wrk + dtmp1 = forces%wrk(:,i)-dot_product_band ! { dg-error "Symbol 'dot_product_band' at .1. has no IMPLICIT type" } + END SUBROUTINE get_neb_force +END MODULE neb_utils diff --git a/gcc/testsuite/gnat.dg/inline12.adb b/gcc/testsuite/gnat.dg/inline12.adb new file mode 100644 index 00000000000..e73f3c1aeb6 --- /dev/null +++ b/gcc/testsuite/gnat.dg/inline12.adb @@ -0,0 +1,23 @@ +-- PR ada/69219 +-- Testcae by yuta tomino <demoonlit@panathenaia.halfmoon.jp> */ + +-- { dg-do compile } + +procedure Inline12 is + + procedure NI; + + procedure IA; + pragma Convention (Intrinsic, IA); + pragma Inline_Always (IA); + + procedure IA is + begin + NI; + end; + + procedure NI is null; + +begin + IA; +end; |