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