Skip to content
  • Simon Dardis's avatar
    [inlineasm] Propagate operand constraints to the backend · d32a2d30
    Simon Dardis authored
    When SelectionDAGISel transforms a node representing an inline asm
    block, memory constraint information is not preserved. This can cause
    constraints to be broken when a memory offset is of the form:
    
    offset + frame index
    
    when the frame is resolved.
    
    By propagating the constraints all the way to the backend, targets can
    enforce memory operands of inline assembly to conform to their constraints.
    
    For MIPSR6, some instructions had their offsets reduced to 9 bits from
    16 bits such as ll/sc. This becomes problematic when using inline assembly
    to perform atomic operations, as an offset can generated that is too big to
    encode in the instruction.
    
    Reviewers: dsanders, vkalintris
    
    Differential Review: https://reviews.llvm.org/D21615
    
    llvm-svn: 275786
    d32a2d30
Loading