Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8235983

AArch64: Struct with 64-bit bitfield (128-bit on AArch64) may be passed in wrong registers

    XMLWordPrintable

Details

    • Bug
    • Resolution: Duplicate
    • P4
    • tbd
    • 14, 15
    • hotspot
    • Tested on Ampere AArch64 systems but should be a generic issue

    • aarch64
    • linux

    Description

      Building jdk with GCC 9.1+ would generate ton of warnings like "parameter passing for argument of type '...' changed in GCC 9.1".
      The message is notifying a potential AArch64 ABI's "bug with the handling of 128-bit bit-fields", see details in the description and inline comments of this GCC patch:

      https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88469
      https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=268273
      https://patches.linaro.org/patch/156615

      One of the warning messages looks like:

      src/hotspot/share/interpreter/bytecodeUtils.cpp: In member function 'StackSlotAnalysisData StackSlotAnalysisData::merge(StackSlotAnalysisData)':
      src/hotspot/share/interpreter/bytecodeUtils.cpp:368:23: note: parameter passing for argument of type 'StackSlotAnalysisData' changed in GCC 9.1
        368 | StackSlotAnalysisData StackSlotAnalysisData::merge(StackSlotAnalysisData other) {
            | ^~~~~~~~~~~~~~~~~~~~~
      src/hotspot/share/interpreter/bytecodeUtils.cpp: In member function 'void SimulatedOperandStack::push_raw(StackSlotAnalysisData)':
      src/hotspot/share/interpreter/bytecodeUtils.cpp:396:6: note: parameter passing for argument of type 'StackSlotAnalysisData' changed in GCC 9.1
        396 | void SimulatedOperandStack::push_raw(StackSlotAnalysisData slotData) {
            | ^~~~~~~~~~~~~~~~~~~~~
      src/hotspot/share/interpreter/bytecodeUtils.cpp: In member function 'void SimulatedOperandStack::push(StackSlotAnalysisData)':
      src/hotspot/share/interpreter/bytecodeUtils.cpp:404:6: note: parameter passing for argument of type 'StackSlotAnalysisData' changed in GCC 9.1
        404 | void SimulatedOperandStack::push(StackSlotAnalysisData slotData) {
            | ^~~~~~~~~~~~~~~~~~~~~

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              qpzhang Patrick Zhang
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: