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

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

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P3 P3
    • 9
    • 9
    • hotspot
    • None
    • b114

      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));
           }

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

              Created:
              Updated:
              Resolved: