• Adenilson Cavalcanti's avatar
    Remove use of inline ASM in insert_string_sse · ea6b9281
    Adenilson Cavalcanti authored
    It seems that some years ago clang@Windows didn't have the
    proper intrinsic required, which prompted the use of inline
    ASM.
    
    It has a side effect in that it will allow compilation of the
    optimized function within the same compilation unit while using regular
    compiler flags (i.e. 'crc32' instruction on x86 requires some special
    compiler flags).
    
    Main issue is that inline ASM is blocked on dependencies (e.g. 'base')
    that will be linked to NaCl.
    
    The main idea here is to allow the whole Chromium code base to use the
    highly optimized checksums in zlib (e.g. crc32 and Adler-32), exported
    through an interface (i.e. base::Crc32()).
    
    This patch fixes this issue by removing the use of inline ASM.
    
    The workaround is to use clang/gcc 'target attributes' to instruct the
    backend to use different code generation options for the optimized
    function, see:
    https://clang.llvm.org/docs/AttributeReference.html#target
    
    Bug: 902789
    Change-Id: I0d139268aefb8335310c0e3f6533006be9af6470
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1931272Reviewed-by: default avatarAdenilson Cavalcanti <cavalcantii@chromium.org>
    Commit-Queue: Adenilson Cavalcanti <cavalcantii@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#718788}
    ea6b9281
deflate.c 81.9 KB