Uploaded image for project: 'Embedded Software & Tools'
  1. Embedded Software & Tools
  2. EXT_EP-8981

Conditional expression containing GNU statement expression crashes compiler in C++ mode

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Medium Medium
    • Code Generation Tools
    • CODEGEN-4942
    • Hide
      C6000_8.3.0
      MSP430_20.2.0.LTS
      C7000_2.1.0.LTS
      C6000_8.1.3
      C6000_8.2.3
      ARM_18.12.0.LTS
      C2000_21.6.0.LTS
      PRU_2.3.0
      ARM_20.2.0.LTS
      C2000_20.2.0.LTS
      C7000_1.4.0.LTS
      MSP430_18.12.0.LTS
      C2000_18.12.0.LTS
      Show
      C6000_8.3.0 MSP430_20.2.0.LTS C7000_2.1.0.LTS C6000_8.1.3 C6000_8.2.3 ARM_18.12.0.LTS C2000_21.6.0.LTS PRU_2.3.0 ARM_20.2.0.LTS C2000_20.2.0.LTS C7000_1.4.0.LTS MSP430_18.12.0.LTS C2000_18.12.0.LTS
    • Hide
      ARM_20.2.7.LTS
      C7000_2.1.2.LTS
      C2000_18.12.9.LTS
      C2000_20.2.7.LTS
      MSP430_21.6.1.LTS
      C6000_8.3.13
      C7000_1.4.3.LTS
      MSP430_18.12.9.LTS
      PRU_2.3.4*
      ARM_18.12.9.LTS*
      C2000_21.6.1.LTS
      MSP430_20.2.7.LTS
      Show
      ARM_20.2.7.LTS C7000_2.1.2.LTS C2000_18.12.9.LTS C2000_20.2.7.LTS MSP430_21.6.1.LTS C6000_8.3.13 C7000_1.4.3.LTS MSP430_18.12.9.LTS PRU_2.3.4* ARM_18.12.9.LTS* C2000_21.6.1.LTS MSP430_20.2.7.LTS
    • Hide
      Rewrite the code to avoid the use of GNU statement expressions. For this test case, move the function call out of the conditional clause and save its result to a temporary, then use that temporary in the conditional.
      For example:
      bool temp = func(arg1, ..., ({gcc statement}));
      if (temp) { ... }
      Show
      Rewrite the code to avoid the use of GNU statement expressions. For this test case, move the function call out of the conditional clause and save its result to a temporary, then use that temporary in the conditional. For example: bool temp = func(arg1, ..., ({gcc statement})); if (temp) { ... }
    • Hide
      This bug occurs when a conditional clause includes a function call, and that function call has a GCC statement as an argument.
      For example:
      if (func(arg1, ..., ({gcc statement}))) { ... }
      Show
      This bug occurs when a conditional clause includes a function call, and that function call has a GCC statement as an argument. For example: if (func(arg1, ..., ({gcc statement}))) { ... }

      The TI compiler accepts the GNU extension statement expressions in both C and C+. This feature allows using a statement where an expression is allowed in standard C or C, but a statement is not. If one of these statement expressions is used inside a conditional expression (such as that of an if, while, or for), the compiler will fail with an internal error when the code is compiled in C+ mode.

            syncuser TI User
            syncuser TI User
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved: