# 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.