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

C2: LoadNode properties aren't preserved when converting between signed/unsigned variants

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: P3
    • Resolution: Fixed
    • Affects Version/s: 9
    • Fix Version/s: 9
    • Component/s: hotspot
    • Labels:
      None
    • Subcomponent:
    • Resolved In Build:
      b114

      Description

      When AndINode::Ideal construct a new node for AndI (LoadS 0xFFFF), it doesn't preserve original LoadS properties (e.g., ControlDependency, mismatched, unaligned):

           if (lop == Op_LoadS && (mask & 0xFFFF0000) == 0 ) {
            Node *ldus = new LoadUSNode(load->in(MemNode::Control),
                                        load->in(MemNode::Memory),
                                        load->in(MemNode::Address),
                                        load->adr_type(),
                                        TypeInt::CHAR, MemNode::unordered);
             ldus = phase->transform(ldus);
             return new AndINode(ldus, phase->intcon(mask & 0xFFFF));
           }

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                vlivanov Vladimir Ivanov
                Reporter:
                vlivanov Vladimir Ivanov
              • Votes:
                0 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: