JDK-8277621 : ARM32: multiple fastdebug failures with "bad AD file" after JDK-8276162
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 18
  • Priority: P2
  • Status: Resolved
  • Resolution: Fixed
  • CPU: arm
  • Submitted: 2021-11-23
  • Updated: 2021-12-16
  • Resolved: 2021-12-10
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.
JDK 18 JDK 19
18 b28Fixed 19Fixed
Related Reports
Relates :  
Relates :  
Description
E.g. java/lang/Double/ParseDouble.java in tier1:

o46  CMoveI  === _ o47 o48  [[o45  2 ]]  #bool

--N: o46  CMoveI  === _ o47 o48  [[o45  2 ]]  #bool

   --N: o47  Binary  === _ o35 o34  [[o46 ]] 
   _Binary_cmpOpL_flagsRegUL_LTGE  103  _Binary_cmpOpL_flagsRegUL_LTGE
   _Binary_cmpOpL_commute_flagsRegUL_LEGT  103  _Binary_cmpOpL_commute_flagsRegUL_LEGT

      --N: o35  Bool  === _ o34  [[o47 ]] [le]
      CMPOP  1  CMPOP
      CMPOP0  1  CMPOP0
      CMPOPU  1  CMPOPU
      CMPOPP  1  CMPOPP
      CMPOPL  1  CMPOPL
      CMPOPL_COMMUTE  1  CMPOPL_COMMUTE
      CMPOPUL  1  CMPOPUL
      CMPOPUL_COMMUTE  1  CMPOPUL_COMMUTE

      --N: o34  CmpUL  === _ o11 o13  [[o35 o47 ]] 
      FLAGSREGUL_LTGE  102  compUL_reg_reg_LTGE
      FLAGSREGUL_EQNE  102  compUL_reg_reg_EQNE
      FLAGSREGUL_LEGT  102  compUL_reg_reg_LEGT

         --N: o11  Parm  === o3  [[o34 ]] Parm1: long
         IREGL  1  IREGL
         IREGLD  2  IREGLD
         R0R1REGL  2  R0R1REGL
         R2R3REGL  2  R2R3REGL

         --N: o13  Parm  === o3  [[o34 ]] Parm3: long
         IREGL  1  IREGL
         IREGLD  2  IREGLD
         R0R1REGL  2  R0R1REGL
         R2R3REGL  2  R2R3REGL

   --N: o48  Binary  === _ o41 o30  [[o46 ]] 
   _Binary_iRegI_iRegI  200  _Binary_iRegI_iRegI
   _Binary_iRegI_immIRot  100  _Binary_iRegI_immIRot
   _Binary_iRegI_immI16  100  _Binary_iRegI_immI16

      --N: o41  ConI  === o0  [[o48 ]]  #int:1
      IMMIROT  0  IMMIROT
      IMMU31ROT  0  IMMU31ROT
      IMMI12  0  IMMI12
      IMMI10X2  0  IMMI10X2
      IMMI12X2  0  IMMI12X2
      IMMI  0  IMMI
      IMMU8  0  IMMU8
      IMMI16  0  IMMI16
      IMMIHD  0  IMMIHD
      IMMU5  0  IMMU5
      IMMI_1  0  IMMI_1
      IMMU31  0  IMMU31
      AIMMI  0  AIMMI
      AIMMU31  0  AIMMU31
      LIMMI  0  LIMMI
      LIMMILOW8  0  LIMMILOW8
      LIMMU31  0  LIMMU31
      IREGI  100  loadConI16
      R0REGI  101  loadConI16
      R1REGI  101  loadConI16
      R2REGI  101  loadConI16
      R3REGI  101  loadConI16
      R12REGI  101  loadConI16

      --N: o30  ConI  === o0  [[o48 ]]  #int:0
      IMMIROT  0  IMMIROT
      IMMU31ROT  0  IMMU31ROT
      IMMI12  0  IMMI12
      IMMI10X2  0  IMMI10X2
      IMMI12X2  0  IMMI12X2
      IMMI  0  IMMI
      IMMU8  0  IMMU8
      IMMI16  0  IMMI16
      IMMIHD  0  IMMIHD
      IMMIFP  0  IMMIFP
      IMMU5  0  IMMU5
      IMMI0  0  IMMI0
      IMMU31  0  IMMU31
      AIMMI  0  AIMMI
      AIMMINEG  0  AIMMINEG
      AIMMU31  0  AIMMU31
      LIMMI  0  LIMMI
      LIMMILOW8  0  LIMMILOW8
      LIMMU31  0  LIMMU31
      IREGI  100  loadConI16
      R0REGI  101  loadConI16
      R1REGI  101  loadConI16
      R2REGI  101  loadConI16
      R3REGI  101  loadConI16
      R12REGI  101  loadConI16

# To suppress the following error report, specify this argument
# after -XX: or in .hotspotrc:  SuppressErrorAt=/matcher.cpp:1714
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (/home/ent-user/ci-scripts/jdk_build/jdk_src/src/hotspot/share/opto/matcher.cpp:1714), pid=1327693, tid=1329907
#  assert(false) failed: bad AD file
#
# JRE version: OpenJDK Runtime Environment (18.0) (fastdebug build 18-internal+0-git-4dabe548f)
# Java VM: OpenJDK Server VM (fastdebug 18-internal+0-git-4dabe548f, mixed mode, g1 gc, linux-arm)
# Problematic frame:
# V  [libjvm.so+0xaed03c]  Matcher::Label_Root(Node const*, State*, Node*, Node*&)+0x2af
Comments
Changeset: 0602f4c4 Author: Hao Sun <haosun@openjdk.org> Committer: Aleksey Shipilev <shade@openjdk.org> Date: 2021-12-10 15:53:27 +0000 URL: https://git.openjdk.java.net/jdk18/commit/0602f4c48b0ffe53a6081551988b417d7536efa0
10-12-2021

Similar to JDK-8277753, CMoveP patterns with unsigned long comparisons are missing in arm32 as well. E.g,: jdk/incubator/vector/Long64VectorTests.java: test Long64VectorTests.UNSIGNED_GELong64VectorTests(long[i], long[i]): success o450 CMoveP === o395 o677 o678 [[o80 o80 o71 405 ]] #java/lang/Boolean:NotNull:exact * Oop:java/lang/Boolean:NotNull:exact * --N: o450 CMoveP === o395 o677 o678 [[o80 o80 o71 405 ]] #java/lang/Boolean:NotNull:exact * Oop:java/lang/Boolean:NotNull:exact * --N: o677 Binary === _ o400 o413 [[o450 ]] _Binary_cmpOpUL_flagsRegUL_LTGE 103 _Binary_cmpOpUL_flagsRegUL_LTGE _Binary_cmpOpUL_commute_flagsRegUL_LEGT 103 _Binary_cmpOpUL_commute_flagsRegUL_LEGT _Binary_cmpOpUL_flagsRegUL_EQNE 103 _Binary_cmpOpUL_flagsRegUL_EQNE --N: o400 Bool === _ o413 [[o414 o677 ]] [lt] CMPOP 1 CMPOP CMPOP0 1 CMPOP0 CMPOPU 1 CMPOPU CMPOPP 1 CMPOPP CMPOPL 1 CMPOPL CMPOPL_COMMUTE 1 CMPOPL_COMMUTE CMPOPUL 1 CMPOPUL CMPOPUL_COMMUTE 1 CMPOPUL_COMMUTE --N: o413 CmpUL === _ o418 o419 [[o400 o414 o677 ]] FLAGSREGUL_LTGE 102 compUL_reg_reg_LTGE FLAGSREGUL_EQNE 102 compUL_reg_reg_EQNE FLAGSREGUL_LEGT 102 compUL_reg_reg_LEGT --N: o418 LoadL === o420 o55 o423 |o105 [[o413 ]] @long[int:>=0]:exact+any *, idx=7; #long IREGL 1 IREGL IREGLD 2 IREGLD R0R1REGL 2 R0R1REGL R2R3REGL 2 R2R3REGL --N: o419 LoadL === o333 o55 o424 |o112 [[o413 ]] @long[int:>=0]:exact+any *, idx=7; #long IREGL 1 IREGL IREGLD 2 IREGLD R0R1REGL 2 R0R1REGL R2R3REGL 2 R2R3REGL --N: o678 Binary === _ o230 o229 [[o450 ]] _Binary_iRegP_iRegP 300 _Binary_iRegP_iRegP --N: o230 ConP === o0 [[o678 o676 ]] #java/lang/Boolean:exact * Oop:java/lang/Boolean:exact * IMMP 5 IMMP IREGP 150 loadConP SP_PTR_REGP 151 loadConP R0REGP 151 loadConP R1REGP 151 loadConP R8REGP 151 loadConP R9REGP 151 loadConP R12REGP 151 loadConP R2REGP 151 loadConP REXCEPTIONREGP 151 loadConP RTHREADREGP 151 loadConP IPREGP 151 loadConP SPREGP 151 loadConP LRREGP 151 loadConP INLINE_CACHE_REGP 151 loadConP INDIRECT 251 loadConP MEMORYI 251 INDIRECT MEMORYP 251 INDIRECT MEMORYF 251 INDIRECT MEMORYF2 251 INDIRECT MEMORYD 251 INDIRECT MEMORYFP 251 INDIRECT MEMORYB 251 INDIRECT MEMORYS 251 INDIRECT MEMORYL 251 INDIRECT MEMORYEX 251 INDIRECT MEMORYLONG 251 INDIRECT MEMORYVLD 251 INDIRECT --N: o229 ConP === o0 [[o676 o678 ]] #java/lang/Boolean:exact * Oop:java/lang/Boolean:exact * IMMP 5 IMMP IREGP 150 loadConP SP_PTR_REGP 151 loadConP R0REGP 151 loadConP R1REGP 151 loadConP R8REGP 151 loadConP R9REGP 151 loadConP R12REGP 151 loadConP R2REGP 151 loadConP REXCEPTIONREGP 151 loadConP RTHREADREGP 151 loadConP IPREGP 151 loadConP SPREGP 151 loadConP LRREGP 151 loadConP INLINE_CACHE_REGP 151 loadConP INDIRECT 251 loadConP MEMORYI 251 INDIRECT MEMORYP 251 INDIRECT MEMORYF 251 INDIRECT MEMORYF2 251 INDIRECT MEMORYD 251 INDIRECT MEMORYFP 251 INDIRECT MEMORYB 251 INDIRECT MEMORYS 251 INDIRECT MEMORYL 251 INDIRECT MEMORYEX 251 INDIRECT MEMORYLONG 251 INDIRECT MEMORYVLD 251 INDIRECT # To suppress the following error report, specify this argument # after -XX: or in .hotspotrc: SuppressErrorAt=/matcher.cpp:1716 # # A fatal error has been detected by the Java Runtime Environment: # # Internal Error (/home/ent-user/ci-scripts/jdk_build/jdk_src/src/hotspot/share/opto/matcher.cpp:1716), pid=126217, tid=126232 # assert(false) failed: bad AD file # # JRE version: OpenJDK Runtime Environment (18.0) (fastdebug build 18-internal+0-git-a9251c604) # Java VM: OpenJDK Server VM (fastdebug 18-internal+0-git-a9251c604, mixed mode, sharing, g1 gc, linux-arm) # Problematic frame: # V [libjvm.so+0xaf7c6c] Matcher::Label_Root(Node const*, State*, Node*, Node*&)+0x2af
04-12-2021

Great, thanks!
24-11-2021

[~thartmann] Yes, we (Arm) will work on this.
24-11-2021

[~ngasson] do you plan to work on this?
23-11-2021

ILW = Same as JDK-8277324 = P2
23-11-2021

Looks like the .ad file is missing various CMoveI patterns with unsigned comparisons similar to x86_32 in JDK-8277324.
23-11-2021