Optimized integer division does not properly sign/zero extend inputs

XMLWordPrintable

    • Type: Bug
    • Resolution: Fixed
    • Priority: Medium
    • Code Generation Tools
    • CODEGEN-15605
    • Hide
      C29_2.1.0.STS
      C29_2.2.0.LTS
      Show
      C29_2.1.0.STS C29_2.2.0.LTS
    • Hide
      C29_3.0.0.LTS*
      C29_2.2.1.LTS
      Show
      C29_3.0.0.LTS* C29_2.2.1.LTS
    • default

      At the -O3 optimization level, dividing a 64-bit integer such as 'long long' or 'unsigned long long' by an integer of a smaller size such as signed or unsigned "char" or "short" may result in erroneous values. This applies to natural division '/' operators as well as integer division builtin functions.

      Example source:

      #include <stdint.h>
      int64_t divide_s64_by_s16(int64_t dividend, int32_t divisor) {
        return dividend / (int16_t)divisor;
      }

      Affected builtin functions:

      • __builtin_c29_div_u32_u32
      • __builtin_c29_tdiv_s32_u32
      • __builtin_c29_tdiv_s32_s32
      • __builtin_c29_ediv_s32_s32
      • __builtin_c29_mdiv_s32_s32
      • __builtin_c29_div_u64_u32
      • __builtin_c29_tdiv_s64_u32
      • __builtin_c29_tdiv_s64_s32
      • __builtin_c29_ediv_s64_s32
      • __builtin_c29_mdiv_s64_s32
      • __builtin_c29_div_u64_u64
      • __builtin_c29_tdiv_s64_s64
      • __builtin_c29_ediv_s64_s64
      • __builtin_c29_mdiv_s64_s64

            Assignee:
            TI User
            Reporter:
            TI User
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved:

                Connection: Intermediate to External PROD System
                EXTSYNC-6731 - Optimized integer division does not...
                SYNCHRONIZED
                • Last Sync Date: