• hans's avatar
    ARM assembler: fix undefined behaviour in fits_shifter · 721fdb56
    hans authored
    Bit-shifts have undefined behaviour if the shift amount is greater
    or equal to the width of the type.
    
    In this case the code would do imm32 >> 32 when rot == 0.
    
    A newer version of Clang unrolled the loop, optimized the first
    iteration away, causing the test suite to fail with:
    
      #
      # Fatal error in ../src/arm/assembler-arm.cc, line 1212
      # Check failed: !rn.is(ip).
      #
    
    as well as crashing when running Chromium tests on Android (at least
    we think this was the cause, see the bug).
    
    BUG=463436, 444089
    LOG=Y
    
    Review URL: https://codereview.chromium.org/979633002
    
    Cr-Commit-Position: refs/heads/master@{#26974}
    721fdb56
assembler-arm.cc 130 KB