JDK-4689319 : REGRESSION:JCK1.4:vm/instr/dcmpop/dcmpop004/dcmpop00401m1, -server -Xcomp
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 1.4.1
  • Priority: P2
  • Status: Closed
  • Resolution: Fixed
  • OS: windows_nt,windows_2000,windows_xp
  • CPU: x86
  • Submitted: 2002-05-22
  • Updated: 2002-06-21
  • Resolved: 2002-06-20
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
Other
1.4.1 rcFixed
Related Reports
Relates :  
Relates :  
Description

Name: icR10030			Date: 05/22/2002


This failure was also seen in 4666534.

Filed By       : J2SE-SQA [###@###.###
JDK            : jdk1.4.1-b12
JCK            : JCK1.4
Platform[s]    : Windows 2000, Windows XP, Windows Me, Windows NT 4.0
switch/Mode    : -server -Xcomp
JCK test owner : http://javaweb.eng/jck/usr/owners.jto
Failing Tests  : vm/instr/dcmpop/dcmpop004/dcmpop00401m1/dcmpop00401m1.html 

Test source location:
=====================
/net/jdk/export/disk8/local.java/jck1.4/JCK-runtime-14/tests/vm/instr/dcmpop/dcmpop004/dcmpop00401m1/

jtr file location:
==================
/net/jtgb4u4c.eng/export/sail15/results/hopper/b12/jck14/win32/win2000_server_comp_linux-2/workDir/vm/instr/dcmpop/dcmpop004/dcmpop00401m1/dcmpop00401m1.jtr


How to reproduce:
=================
--------Script START---------------------
#!/bin/sh

JCK="c:/jck1.4/JCK-runtime-14"
CLASSPATH="${JCK}/classes;${JCK}/javatest.jar"
JDK=c:/jdk1.4.1
PATH=${JCK}/lib

$JDK/bin/java -showversion -server -Xcomp -Xfuture         -cp $CLASSPATH         -Djava.security.policy=$JCK/lib/jck.policy         -Djava.security.auth.policy=$JCK/lib/java.auth.policy         -Djava.security.auth.login.config=$JCK/lib/java.login.config         javasoft.sqe.tests.vm.instr.dcmpop.dcmpop004.dcmpop00401m1.dcmpop00401m1         	-platform.nativeCodeSupported true
echo $?
--------Script END----------------------

Test output:
============
97

Specific Machine Info:
======================
Hostname: linux-21
Os: Windows NT 4.0

======================================================================

Comments
CONVERTED DATA BugTraq+ Release Management Values COMMIT TO FIX: hopper-rc FIXED IN: hopper-rc INTEGRATED IN: hopper-rc VERIFIED IN: hopper-rc
14-06-2004

SUGGESTED FIX From Mike Paleczny: Change code in i486.ad: if( n->getd() == 0.0 ) { ... } A simple swap of inputs doesn't fix it: ( 0.0 == n->getd() ) neither does storing the double in a temporary variable. Confirmed workarounds: (A) require additional patches to DevStudio 6.0 (B) convert to long and compare to zero. 6004: if( ((jlong)n->getd()) == 0L ) { 08410B87 mov ecx,dword ptr [n] 08410B8A call @ILT+37500(Node::getd) (0800a281) 08410B8F call _ftol (084416d6) 08410B94 mov dword ptr [ebp-750h],eax 08410B9A mov dword ptr [ebp-74Ch],edx 08410BA0 mov eax,dword ptr [ebp-750h] 08410BA6 or eax,dword ptr [ebp-74Ch] 08410BAC test eax,eax 08410BAE jne $L149355+285h (08410c23) (C) check for NaN after checking for 0 6004: if( n->getd() == 0.0 && !g_isnan(n->getd()) ) { 08410B87 8B 4D 0C mov ecx,dword ptr [n] 08410B8A E8 F2 96 BF FF call @ILT+37500(Node::getd) (0800a281) 08410B8F DC 1D C0 33 44 08 fcomp qword ptr [__real@8@00000000000000000000 (084433c0)] 08410B95 DF E0 fnstsw ax 08410B97 F6 C4 40 test ah,40h 08410B9A 0F 84 8E 00 00 00 je $L149355+290h (08410c2e) 08410BA0 8B 4D 0C mov ecx,dword ptr [n] 08410BA3 E8 D9 96 BF FF call @ILT+37500(Node::getd) (0800a281) 08410BA8 83 EC 08 sub esp,8 08410BAB DD 1C 24 fstp qword ptr [esp] 08410BAE E8 0B 63 C0 FF call @ILT+89785(g_isnan) (08016ebe) 08410BB3 83 C4 08 add esp,8 08410BB6 85 C0 test eax,eax 08410BB8 75 74 jne $L149355+290h (08410c2e) ###@###.### 2002-05-29
29-05-2002

EVALUATION Suspect Value() or Ideal() transformation on CmpDGreater and CmpDLess nodes. Happens on Windows but not solaris x86. Actual root problem still not clear. While this problem was reported in 4666534, the bug was/is different than the one for the tests failing in that bug. ###@###.### 2002-05-24 MS VC++ generates bad code for comparison against double/floating zero which gives wrong results when we are comparing against a Nan. This affects our instuction selection in i486.ad, causing C2 to generate bad code. ###@###.### 2002-05-29
29-05-2002