• Show log

    Commit

  • Hash : 7f9a55f7
    Author : Olli Etuaho
    Date : 2016-10-03T14:32:08

    Fix integer math overflows in the preprocessor
    
    Evaluating integer expressions in the ESSL preprocessor may result in
    overflowing the signed integer range. Implement wrapping overflow for
    preprocessor expressions in a way that doesn't hit any undefined
    behavior.  In the ESSL spec, preprocessor expressions are defined to
    have mostly the same semantics as in C++. Since C++ doesn't define
    what happens on signed integer overflow, we choose to make most of the
    operators wrap on overflow for backward compatibility and consistency
    with the rest of the ESSL spec.
    
    We reuse the existing wrapping overflow helpers that are
    used for constant folding. To be able to do this, the type used in the
    preprocessor expression parser is changed from 64-bit to 32-bit.
    
    Shifting negative numbers is implemented as a logical shift. This
    cannot be disallowed since dEQP requires shaders shifting negative
    numbers to pass compilation.
    
    Undefined bitwise shifts where the offset is greater than 31 will now
    result in a compile-time error.
    
    A couple of test cases are now covered by the preprocessor tests
    rather than full compilation tests. This isolates the tests better and
    they run faster.
    
    BUG=chromium:652223
    TEST=angle_unittests
    
    Change-Id: I84be40d404c10ecd0846c5d477e626a94a2a8587
    Reviewed-on: https://chromium-review.googlesource.com/392146
    Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
    Reviewed-by: Jamie Madill <jmadill@chromium.org>
    

  • Properties

  • Git HTTP https://git.kmx.io/kc3-lang/angle.git
    Git SSH git@git.kmx.io:kc3-lang/angle.git
    Public access ? public
    Description

    A conformant OpenGL ES implementation for Windows, Mac, Linux, iOS and Android.

    Homepage

    Github

    Users
    thodg_m kc3_lang_org thodg_w www_kmx_io thodg thodg_l
    Tags