This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug middle-end/82004] [8 Regression] SPEC CPU2017 628.pop2_s miscompare


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82004

--- Comment #29 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Tried to enlarge the testcase, so it better matches what sw_absorption.F90
does, but still it works with -Ofast, just not with -Ofast -fno-tree-pre:

! PR middle-end/82004
! { dg-do run }
! { dg-options "-Ofast" }

  integer, parameter :: r8 = selected_real_kind(13), i4 = kind(1)
  integer (i4), parameter :: a = 400, b = 31
  real (r8), parameter, dimension(b) :: c = (/ .001_r8, .005_r8, &
    .01_r8, .02_r8, .03_r8, .05_r8, .10_r8, .15_r8, .20_r8,      &
    .25_r8, .30_r8, .35_r8, .40_r8, .45_r8, .50_r8, .60_r8,      &
    .70_r8, .80_r8, .90_r8, 1.00_r8, 1.50_r8, 2.00_r8, 2.50_r8,  &
    3.00_r8, 4.00_r8, 5.00_r8, 6.00_r8, 7.00_r8, 8.00_r8,        &
    9.00_r8,10.00_r8 /)
  real (r8), parameter, dimension(b) :: a3 = (/                  &
    0.4421_r8, 0.4451_r8, 0.4488_r8, 0.4563_r8,                  &
    0.4622_r8, 0.4715_r8, 0.4877_r8, 0.4993_r8,                  &
    0.5084_r8, 0.5159_r8, 0.5223_r8, 0.5278_r8,                  &
    0.5326_r8, 0.5369_r8, 0.5408_r8, 0.5474_r8,                  &
    0.5529_r8, 0.5576_r8, 0.5615_r8, 0.5649_r8,                  &
    0.5757_r8, 0.5802_r8, 0.5808_r8, 0.5788_r8,                  &
    0.56965_r8, 0.55638_r8, 0.54091_r8, 0.52442_r8,              &
    0.50766_r8,0.49110_r8,0.47505_r8 /)
  real (r8), parameter, dimension(b) :: a4 = (/                  &
    0.2981_r8, 0.2963_r8, 0.2940_r8, 0.2894_r8,                  &
    0.2858_r8, 0.2800_r8, 0.2703_r8, 0.2628_r8,                  &
    0.2571_r8, 0.2523_r8, 0.2481_r8, 0.2444_r8,                  &
    0.2411_r8, 0.2382_r8, 0.2356_r8, 0.2309_r8,                  &
    0.2269_r8, 0.2235_r8, 0.2206_r8, 0.2181_r8,                  &
    0.2106_r8, 0.2089_r8, 0.2113_r8, 0.2167_r8,                  &
    0.23357_r8, 0.25504_r8, 0.27829_r8, 0.30274_r8,              &
    0.32698_r8, 0.35056_r8, 0.37303_r8 /)
  real (r8), parameter, dimension(b) :: b3 = (/                  &
    0.0287_r8, 0.0301_r8, 0.0319_r8, 0.0355_r8,                  &
    0.0384_r8, 0.0434_r8, 0.0532_r8, 0.0612_r8,                  &
    0.0681_r8, 0.0743_r8, 0.0800_r8, 0.0853_r8,                  &
    0.0902_r8, 0.0949_r8, 0.0993_r8, 0.1077_r8,                  &
    0.1154_r8, 0.1227_r8, 0.1294_r8, 0.1359_r8,                  &
    0.1640_r8, 0.1876_r8, 0.2082_r8, 0.2264_r8,                  &
    0.25808_r8, 0.28498_r8, 0.30844_r8, 0.32932_r8,              &
    0.34817_r8, 0.36540_r8, 0.38132_r8 /)
  real (r8), parameter, dimension(b) :: b4 = (/                  &
    0.3192_r8, 0.3243_r8, 0.3306_r8, 0.3433_r8,                  &
    0.3537_r8, 0.3705_r8, 0.4031_r8, 0.4262_r8,                  &
    0.4456_r8, 0.4621_r8, 0.4763_r8, 0.4889_r8,                  &
    0.4999_r8, 0.5100_r8, 0.5191_r8, 0.5347_r8,                  &
    0.5477_r8, 0.5588_r8, 0.5682_r8, 0.5764_r8,                  &
    0.6042_r8, 0.6206_r8, 0.6324_r8, 0.6425_r8,                  &
    0.66172_r8, 0.68144_r8, 0.70086_r8, 0.72144_r8,              &
    0.74178_r8, 0.76190_r8, 0.78155_r8 /)
  real (r8) :: d, e, f, g, h, w1, w2, a1, a2, b1, b2
  integer (i4) :: n, m, o
  integer, volatile :: p

  d = c(1)
  e = c(b)
  o = 0
  p = 0
  f = (log10(e)-log10(d))/real(a)
  g = log10(d) - f
  do n = 0, a
    g = g + f
    h = 10**(g)
    do m = 1, b - 1
      if (c(m) .le. h .and. h .le. c(m + 1)) then
        o = m
        goto 10
      end if
    end do
    if (p == 0) then
      print *, 'Failed', n, h
      stop 1
    end if
10  continue
    w2 = (h - c(o)) / (c(o + 1) - c(o))
    w1 = 1.0_r8 - w2
    a1 = a3(o) * w1 + a3(o + 1) * w2
    a2 = a4(o) * w1 + a4(o + 1) * w2
    b1 = b3(o) * w1 + b3(o + 1) * w2
    b2 = b4(o) * w1 + b4(o + 1) * w2
    if (p == 0) then
      print *, n, h, a1, a2, b1, b2
    endif
  end do
end

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]