[PATCH] D24577: [RFC] Move synchronization scope and atomic orderings from SDNode to MachineMemOperand

Justin Lebar via llvm-commits llvm-commits at lists.llvm.org
Fri Sep 30 13:14:48 PDT 2016


jlebar added a comment.

In https://reviews.llvm.org/D24577#548365, @kzhuravl wrote:

> Currently machine memory operand's member layout has a 4 byte hole between `BaseAlignLog2` and `AAInfo`.


Only on 64-bit platforms, right?  Are we willing to bite a 4-byte increase to MMO size on 32-bit?



> MachineMemOperand.h:131
> +    /// Reserved/unused.
> +    unsigned Reserved : 23;
> +  };

I don't think we need this field.

> MachineMemOperand.h:151
> +    assert(getFailureOrdering() == FailureOrdering && "Value truncated");
> +  }
> +

Can we do this inside the constructor?

> SelectionDAGNodes.h:1198
> +    return MMO->getSuccessOrdering();
>    }
>  

Should we make the MMO and AtomicSDNode interfaces match?  Right now we have getOrdering and getSuccessOrdering on MMO, but only getOrdering on the SDNode.

I think I'd be OK having two functions that both return the success ordering if we assert inside getFailureOrdering / getSuccessOrdering that we have a cmpxchg instruction.  Otherwise maybe having only the one function makes sense.

https://reviews.llvm.org/D24577





More information about the llvm-commits mailing list