Skip to content
  • Bernhard Schommer's avatar
    Tentative first fix for offsets of ld/std. · 69e17574
    Bernhard Schommer authored
    The offsets immediates used in the ld and std instructions must be a
    multiple of the word size. This commit changes the two functions which
    are used when generating load/stores in Asmgen, accessind and
    transl_memory_access.
    
    For accessind one only needs an additional check that the offset is a
    multiple of the word size for the case that the high part of the offset
    is zero, since otherwise the immediate is loaded into a register anyway.
    
    The transl_memory_access function needs some slightly more complex
    adoption. For all variants that do not construct the address in a
    register before hand we must check that the offsets are multiples of the
    word size and additionally if a symbol is used that the alignment of the
    symbol is also a multiple of the word size. Therefore a new parameter is
    introduced that allows checking the alignment.
    
    In order to reduce the code duplication for the proofs these two
    functions get an additional parameter in order to indicate wether the
    offset needs to be a multiple of the word size or not.
    Bug 30983
    69e17574