# New Ticket Created by  Joshua Isom 
# Please include the string:  [perl #38392]
# in the subject line of all future correspondence about this issue. 
# <URL: https://rt.perl.org/rt3/Ticket/Display.html?id=38392 >


When using JIT on FreeBSD 6.0, there are multiple failures in 
t/op/trans.t.  Most are geometric, sinh, tanh, and atan2, so these 
might be covered by a previous report.  But in particular are bugs in 
pow.  I've tried to track it down more specifically but I don't seen to 
be succeeding, and only getting more confused.

Of test 18(pow) of t/op/trans.t, tests 1, 2, 3, 4, 5, 6, 11, and 15 
fail.  Generally either 0.0 is returned or nan.  In trying to track it 
down, I ran into something more confusing.  Here's a program to 
demonstrate it and it's return.

-------
.sub main :main
     $N1 = 3.0
     $N2 = 5.0
     $N3 = pow $N1, $N2
     print $N3
     print "\n"
     $N3 = pow $N1, $N2
     print $N3
     print "\n"
.end
-------
0.000000
243.000000
-------

I've also noticed that pow_n_nc_nc optimizes away to just set, and 
trying -O0 doesn't disable optimization.  With -O1 -j, it persists...  
With -O2 -j, it disappears.

Running `./parrot -O2 -j t/op/trans_18.pasm`, only tests 2, 3, 4, 6, 
11, and 15 fail, meaning 1 and 5 succeed with the optimization enabled. 
  Many of the tests in t/op/trans.t fail entirely with -O2, opcodes not 
found, mainly because of using integer registers.

Reply via email to