RFC PATCH PR64432 system_clock regression

Jerry DeLisle jvdelisle@charter.net
Sat Feb 28 16:43:00 GMT 2015


Hi all,

I need some guidance on the attached patch.  It tests fine on x86-64. Valgrind 
shows clean results as well.  When I test on PowerPC gcc112 compile farm I get a 
lot of garbage with the test case I also attached.  So, I am concerned the whole 
approach may be flawed or dependent on memory organization or such. To run the 
test case on Power PC you have to strip out the Real10 cases. I generated this 
test case for all possible combinations of kinds.

I am unable to test this on windows.

The overall approach is to select the run-time procedure that matches largest 
kind in the system_clock call and then use temp variables to cast the results back.

Am I doing something wrong here?

Regards,

Jerry

-------------- next part --------------
A non-text attachment was scrubbed...
Name: pr64432.diff
Type: text/x-patch
Size: 19225 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/fortran/attachments/20150228/ad42a064/attachment.bin>
-------------- next part --------------
program test
  implicit none
  real(4) :: real_rate4
  real(8) :: real_rate8
  real(10) :: real_rate10
  real(16) :: real_rate16
  integer(1) :: int_count1, int_max1, int_rate1
  integer(2) :: int_count2, int_max2, int_rate2
  integer(4) :: int_count4, int_max4, int_rate4
  integer(8) :: int_count8, int_max8, int_rate8
  integer(16) :: int_count16, int_max16, int_rate16

  call system_clock (int_count1, real_rate4, int_max1)
  print *, int_count1, real_rate4, int_max1
  call system_clock (int_count1, real_rate4, int_max2)
  print *, int_count1, real_rate4, int_max2
  call system_clock (int_count1, real_rate4, int_max4)
  print *, int_count1, real_rate4, int_max4
  call system_clock (int_count1, real_rate4, int_max8)
  print *, int_count1, real_rate4, int_max8
  call system_clock (int_count1, real_rate4, int_max16)
  print *, int_count1, real_rate4, int_max16
  call system_clock (int_count1, real_rate8, int_max1)
  print *, int_count1, real_rate8, int_max1
  call system_clock (int_count1, real_rate8, int_max2)
  print *, int_count1, real_rate8, int_max2
  call system_clock (int_count1, real_rate8, int_max4)
  print *, int_count1, real_rate8, int_max4
  call system_clock (int_count1, real_rate8, int_max8)
  print *, int_count1, real_rate8, int_max8
  call system_clock (int_count1, real_rate8, int_max16)
  print *, int_count1, real_rate8, int_max16
  call system_clock (int_count1, real_rate10, int_max1)
  print *, int_count1, real_rate10, int_max1
  call system_clock (int_count1, real_rate10, int_max2)
  print *, int_count1, real_rate10, int_max2
  call system_clock (int_count1, real_rate10, int_max4)
  print *, int_count1, real_rate10, int_max4
  call system_clock (int_count1, real_rate10, int_max8)
  print *, int_count1, real_rate10, int_max8
  call system_clock (int_count1, real_rate10, int_max16)
  print *, int_count1, real_rate10, int_max16
  call system_clock (int_count1, real_rate16, int_max1)
  print *, int_count1, real_rate16, int_max1
  call system_clock (int_count1, real_rate16, int_max2)
  print *, int_count1, real_rate16, int_max2
  call system_clock (int_count1, real_rate16, int_max4)
  print *, int_count1, real_rate16, int_max4
  call system_clock (int_count1, real_rate16, int_max8)
  print *, int_count1, real_rate16, int_max8
  call system_clock (int_count1, real_rate16, int_max16)
  print *, int_count1, real_rate16, int_max16
  call system_clock (int_count2, real_rate4, int_max1)
  print *, int_count2, real_rate4, int_max1
  call system_clock (int_count2, real_rate4, int_max2)
  print *, int_count2, real_rate4, int_max2
  call system_clock (int_count2, real_rate4, int_max4)
  print *, int_count2, real_rate4, int_max4
  call system_clock (int_count2, real_rate4, int_max8)
  print *, int_count2, real_rate4, int_max8
  call system_clock (int_count2, real_rate4, int_max16)
  print *, int_count2, real_rate4, int_max16
  call system_clock (int_count2, real_rate8, int_max1)
  print *, int_count2, real_rate8, int_max1
  call system_clock (int_count2, real_rate8, int_max2)
  print *, int_count2, real_rate8, int_max2
  call system_clock (int_count2, real_rate8, int_max4)
  print *, int_count2, real_rate8, int_max4
  call system_clock (int_count2, real_rate8, int_max8)
  print *, int_count2, real_rate8, int_max8
  call system_clock (int_count2, real_rate8, int_max16)
  print *, int_count2, real_rate8, int_max16
  call system_clock (int_count2, real_rate10, int_max1)
  print *, int_count2, real_rate10, int_max1
  call system_clock (int_count2, real_rate10, int_max2)
  print *, int_count2, real_rate10, int_max2
  call system_clock (int_count2, real_rate10, int_max4)
  print *, int_count2, real_rate10, int_max4
  call system_clock (int_count2, real_rate10, int_max8)
  print *, int_count2, real_rate10, int_max8
  call system_clock (int_count2, real_rate10, int_max16)
  print *, int_count2, real_rate10, int_max16
  call system_clock (int_count2, real_rate16, int_max1)
  print *, int_count2, real_rate16, int_max1
  call system_clock (int_count2, real_rate16, int_max2)
  print *, int_count2, real_rate16, int_max2
  call system_clock (int_count2, real_rate16, int_max4)
  print *, int_count2, real_rate16, int_max4
  call system_clock (int_count2, real_rate16, int_max8)
  print *, int_count2, real_rate16, int_max8
  call system_clock (int_count2, real_rate16, int_max16)
  print *, int_count2, real_rate16, int_max16
  call system_clock (int_count4, real_rate4, int_max1)
  print *, int_count4, real_rate4, int_max1
  call system_clock (int_count4, real_rate4, int_max2)
  print *, int_count4, real_rate4, int_max2
  call system_clock (int_count4, real_rate4, int_max4)
  print *, int_count4, real_rate4, int_max4
  call system_clock (int_count4, real_rate4, int_max8)
  print *, int_count4, real_rate4, int_max8
  call system_clock (int_count4, real_rate4, int_max16)
  print *, int_count4, real_rate4, int_max16
  call system_clock (int_count4, real_rate8, int_max1)
  print *, int_count4, real_rate8, int_max1
  call system_clock (int_count4, real_rate8, int_max2)
  print *, int_count4, real_rate8, int_max2
  call system_clock (int_count4, real_rate8, int_max4)
  print *, int_count4, real_rate8, int_max4
  call system_clock (int_count4, real_rate8, int_max8)
  print *, int_count4, real_rate8, int_max8
  call system_clock (int_count4, real_rate8, int_max16)
  print *, int_count4, real_rate8, int_max16
  call system_clock (int_count4, real_rate10, int_max1)
  print *, int_count4, real_rate10, int_max1
  call system_clock (int_count4, real_rate10, int_max2)
  print *, int_count4, real_rate10, int_max2
  call system_clock (int_count4, real_rate10, int_max4)
  print *, int_count4, real_rate10, int_max4
  call system_clock (int_count4, real_rate10, int_max8)
  print *, int_count4, real_rate10, int_max8
  call system_clock (int_count4, real_rate10, int_max16)
  print *, int_count4, real_rate10, int_max16
  call system_clock (int_count4, real_rate16, int_max1)
  print *, int_count4, real_rate16, int_max1
  call system_clock (int_count4, real_rate16, int_max2)
  print *, int_count4, real_rate16, int_max2
  call system_clock (int_count4, real_rate16, int_max4)
  print *, int_count4, real_rate16, int_max4
  call system_clock (int_count4, real_rate16, int_max8)
  print *, int_count4, real_rate16, int_max8
  call system_clock (int_count4, real_rate16, int_max16)
  print *, int_count4, real_rate16, int_max16
  call system_clock (int_count8, real_rate4, int_max1)
  print *, int_count8, real_rate4, int_max1
  call system_clock (int_count8, real_rate4, int_max2)
  print *, int_count8, real_rate4, int_max2
  call system_clock (int_count8, real_rate4, int_max4)
  print *, int_count8, real_rate4, int_max4
  call system_clock (int_count8, real_rate4, int_max8)
  print *, int_count8, real_rate4, int_max8
  call system_clock (int_count8, real_rate4, int_max16)
  print *, int_count8, real_rate4, int_max16
  call system_clock (int_count8, real_rate8, int_max1)
  print *, int_count8, real_rate8, int_max1
  call system_clock (int_count8, real_rate8, int_max2)
  print *, int_count8, real_rate8, int_max2
  call system_clock (int_count8, real_rate8, int_max4)
  print *, int_count8, real_rate8, int_max4
  call system_clock (int_count8, real_rate8, int_max8)
  print *, int_count8, real_rate8, int_max8
  call system_clock (int_count8, real_rate8, int_max16)
  print *, int_count8, real_rate8, int_max16
  call system_clock (int_count8, real_rate10, int_max1)
  print *, int_count8, real_rate10, int_max1
  call system_clock (int_count8, real_rate10, int_max2)
  print *, int_count8, real_rate10, int_max2
  call system_clock (int_count8, real_rate10, int_max4)
  print *, int_count8, real_rate10, int_max4
  call system_clock (int_count8, real_rate10, int_max8)
  print *, int_count8, real_rate10, int_max8
  call system_clock (int_count8, real_rate10, int_max16)
  print *, int_count8, real_rate10, int_max16
  call system_clock (int_count8, real_rate16, int_max1)
  print *, int_count8, real_rate16, int_max1
  call system_clock (int_count8, real_rate16, int_max2)
  print *, int_count8, real_rate16, int_max2
  call system_clock (int_count8, real_rate16, int_max4)
  print *, int_count8, real_rate16, int_max4
  call system_clock (int_count8, real_rate16, int_max8)
  print *, int_count8, real_rate16, int_max8
  call system_clock (int_count8, real_rate16, int_max16)
  print *, int_count8, real_rate16, int_max16
  call system_clock (int_count16, real_rate4, int_max1)
  print *, int_count16, real_rate4, int_max1
  call system_clock (int_count16, real_rate4, int_max2)
  print *, int_count16, real_rate4, int_max2
  call system_clock (int_count16, real_rate4, int_max4)
  print *, int_count16, real_rate4, int_max4
  call system_clock (int_count16, real_rate4, int_max8)
  print *, int_count16, real_rate4, int_max8
  call system_clock (int_count16, real_rate4, int_max16)
  print *, int_count16, real_rate4, int_max16
  call system_clock (int_count16, real_rate8, int_max1)
  print *, int_count16, real_rate8, int_max1
  call system_clock (int_count16, real_rate8, int_max2)
  print *, int_count16, real_rate8, int_max2
  call system_clock (int_count16, real_rate8, int_max4)
  print *, int_count16, real_rate8, int_max4
  call system_clock (int_count16, real_rate8, int_max8)
  print *, int_count16, real_rate8, int_max8
  call system_clock (int_count16, real_rate8, int_max16)
  print *, int_count16, real_rate8, int_max16
  call system_clock (int_count16, real_rate10, int_max1)
  print *, int_count16, real_rate10, int_max1
  call system_clock (int_count16, real_rate10, int_max2)
  print *, int_count16, real_rate10, int_max2
  call system_clock (int_count16, real_rate10, int_max4)
  print *, int_count16, real_rate10, int_max4
  call system_clock (int_count16, real_rate10, int_max8)
  print *, int_count16, real_rate10, int_max8
  call system_clock (int_count16, real_rate10, int_max16)
  print *, int_count16, real_rate10, int_max16
  call system_clock (int_count16, real_rate16, int_max1)
  print *, int_count16, real_rate16, int_max1
  call system_clock (int_count16, real_rate16, int_max2)
  print *, int_count16, real_rate16, int_max2
  call system_clock (int_count16, real_rate16, int_max4)
  print *, int_count16, real_rate16, int_max4
  call system_clock (int_count16, real_rate16, int_max8)
  print *, int_count16, real_rate16, int_max8
  call system_clock (int_count16, real_rate16, int_max16)
  print *, int_count16, real_rate16, int_max16
end program test



More information about the Fortran mailing list