diff options
author | Jakub Jelinek <jakub@gcc.gnu.org> | 2017-12-21 10:11:58 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2017-12-21 10:11:58 +0100 |
commit | 63987ca445d31c4489f09881e3ff007294896ea2 (patch) | |
tree | 665893af419d9b78dd93543f5724412f63319d47 | |
parent | c0cc00c4f0e806d28ef6ed25671c75626817176e (diff) | |
download | gcc-63987ca445d31c4489f09881e3ff007294896ea2.zip gcc-63987ca445d31c4489f09881e3ff007294896ea2.tar.gz gcc-63987ca445d31c4489f09881e3ff007294896ea2.tar.bz2 |
re PR rtl-optimization/82973 (ICE in output_constant_pool_2, at varasm.c:3896 on aarch64)
PR rtl-optimization/82973
* emit-rtl.h (valid_for_const_vec_duplicate_p): Rename to ...
(valid_for_const_vector_p): ... this.
* emit-rtl.c (valid_for_const_vec_duplicate_p): Rename to ...
(valid_for_const_vector_p): ... this. Adjust function comment.
(gen_vec_duplicate): Adjust caller.
* optabs.c (expand_vector_broadcast): Likewise.
* simplify-rtx.c (simplify_const_unary_operation): Don't optimize into
CONST_VECTOR if some element isn't simplified valid_for_const_vector_p
constant.
(simplify_const_binary_operation): Likewise. Use CONST_FIXED_P macro
instead of GET_CODE == CONST_FIXED.
(simplify_subreg): Use CONST_FIXED_P macro instead of
GET_CODE == CONST_FIXED.
* gfortran.dg/pr82973.f90: New test.
From-SVN: r255939
-rw-r--r-- | gcc/testsuite/gfortran.dg/pr82973.f90 | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/pr82973.f90 b/gcc/testsuite/gfortran.dg/pr82973.f90 new file mode 100644 index 0000000..add58ce --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr82973.f90 @@ -0,0 +1,31 @@ +! PR rtl-optimization/82973 +! { dg-do compile } +! { dg-options "-Ofast -frounding-math" } + +program pr82973 + integer, parameter :: n=16 + real, dimension(n) :: ar, br, modulo_result, floor_result + integer, dimension(n) :: ai, bi , imodulo_result, ifloor_result + ai(1:4) = 5 + ai(5:8) = -5 + ai(9:12) = 1 + ai(13:16) = -1 + bi(1:4) = (/ 3,-3, 1, -1/) + bi(5:8) = bi(1:4) + bi(9:12) = bi(1:4) + bi(13:16) = bi(1:4) + ar = ai + br = bi + modulo_result = modulo(ar,br) + imodulo_result = modulo(ai,bi) + floor_result = ar-floor(ar/br)*br + ifloor_result = nint(real(ai-floor(real(ai)/real(bi))*bi)) + do i=1,n + if (modulo_result(i) /= floor_result(i)) then + call abort() + end if + if (imodulo_result(i) /= ifloor_result(i)) then + call abort () + end if + end do +end program pr82973 |