CODEGEN-5527 |
Local structure initialization is incorrectly optimized away |
Planned |
C2000_18.12.0.LTS |
|
|
|
CODEGEN-5231 |
Object file display (OFD) utility displays wrong offset for DW_AT_type entries |
Accepted |
C2000_18.12.0.LTS |
|
|
|
CODEGEN-4960 |
Using --gen_profile_info with code with CLA source fails to build |
Accepted |
C2000_18.12.0.LTS |
|
N/A. |
As the title says, when using the --gen_profile_info option with a project that contains CLA code, it fails with an invalid filename as shown in the error message below:
>> Compilation failure
subdir_rules.mk:58: recipe for target 'matrix_mpy.obj' failed
fatal error: Error opening icode file
"C:\\Users\\user\\AppData\\Local
Temp
{B38860D0-28F1-4B19-9A99-2F0EA95 A0EA8}
":
>> Abort - Cannot open input icode file C:\\Users\\user\\AppData\\Local\\Temp\\\\
{B38860D0-28F1-4B19-9A99-2F0EA95A0EA8}
p: No such file or directory
This does not happen with F28x projects that are free of CLA code.
This was reproduced in CCSv8.1.0 with the default C2000 compiler version 18.1.2 |
CODEGEN-4895 |
For enum type variables incorrectly issue diagnostic: comparison between signed and unsigned operands |
Accepted |
C2000_18.12.0.LTS |
|
The user can work around this by introducing a dummy enumeration constant with a negative value, as below. This causes the enum to have signed underlying type, which will get rid of the warning:
enum E { zero = 0, one = 1, dummy = -1 }; |
Given this code:
enum E { zero = 0, one = 1 };
int f(__typeof__(one) a, enum E b) { return a > b; }
You will get this remark:
remark: comparison between signed and unsigned operands
This is technically not a bug. When you declare an enum, the underlying type might be signed or unsigned, but the standard explicitly says that "An identifier declared as an enumeration constant has type int" (C99 6.4.4.3). Thus, __typeof__(one) is "int", despite the fact that E has an unsigned underlying type. |
CODEGEN-4712 |
Inconsistent application of MISRA rule 10.1 The value of an expression of integer type shall not be implicitly converted |
Accepted |
C2000_18.12.0.LTS |
|
|
|
CODEGEN-4617 |
Compiler incorrectly issues MISRA 12.6 diagnostic: Expressions that are effectively Boolean should not be used |
Accepted |
C2000_18.12.0.LTS |
|
|
|
CODEGEN-4342 |
cerr.tie() returns the wrong value |
Open |
C2000_18.12.0.LTS |
|
|
|
SDSCM00051392 |
C2000 float software multiply doesn't handle -1*INF properly |
Accepted |
C2000_18.12.0.LTS |
|
|
|
SDSCM00051384 |
C2000 can't print 0 with %a format |
Accepted |
C2000_18.12.0.LTS |
|
|
|
SDSCM00050131 |
Local struct with non-constant initializer treated as static scope variable |
Planned |
C2000_18.12.0.LTS |
|
|
|
SDSCM00049280 |
Ill advised enum scalar usage gets MISRA diagnostic, but similar usage of enum array does not |
Open |
C2000_18.12.0.LTS |
|
|
|
SDSCM00049278 |
Array that is correctly initialized erroneously gets a MISRA diagnostic about size not being specified |
Open |
C2000_18.12.0.LTS |
|
|
|
SDSCM00046113 |
C2000 RTS float arithmetic functions do not round correctly |
Open |
C2000_18.12.0.LTS |
|
|
|
SDSCM00040934 |
Structure is not initialized correctly when using -o2 or -o3 optimization |
Accepted |
C2000_18.12.0.LTS |
|
The initialization will have to be done at run-time, through a __sti initialization routine. You can see this routine when compiling without optimization. To workaround the compiler removing this initialization routine, initialize the object at the beginning of main:
Info2.mSize = ((unsigned)_end_isr_stack - (unsigned)_start_isr_stack);
|
|
SDSCM00018691 |
Linker gives misleading warning when dot expressions used in SECTION directive for .stack section |
Accepted |
C2000_18.12.0.LTS |
|
|
|
SDSCM00016646 |
strcmp doesn't correctly handle values with uppermost bit set |
Accepted |
C2000_18.12.0.LTS |
|
|
|
SDSCM00008928 |
Extern inline functions are not supported in the C/C++ Compiler with COFF ABI |
Accepted |
C2000_18.12.0.LTS |
|
|
This bug only affects COFF ABI. If a function is declared as inline and there are no references to it in the same file, the function is eliminated and can't be called from another file. |
SDSCM00008685 |
DWARF does not correctly represent variables stored in register pairs |
Planned |
C2000_18.12.0.LTS |
|
Although 'var1' and 'var2' are shown to be in single registers, a
debugger could determine that they are actually stored in register
pairs by looking at the type of the variables:
[00000113] DW_TAG_base_type
DW_AT_name long long
DW_AT_encoding 0x5
DW_AT_byte_size 0x8
The base type indicates that the size of the variables is 0x8 bytes.
Since a single register can only store 0x4 bytes of information, it
would take two registers to hold this values.
On TI architectures, values stored in multiple registers are always
stored in consecutive registers. Thus, the debugger would know that
if the entire value could not fit in A4, the rest of the value must be
in A5. A5 would contain the upper 32 bits of the value.
|
|
SDSCM00008652 |
pow(2,x) has fairly significant rounding error |
Accepted |
C2000_18.12.0.LTS |
|
Please describe the workaround for this problem.
|
|
SDSCM00008630 |
printf gives wrong value for pointer when its value is incremented |
Open |
C2000_18.12.0.LTS |
|
To get rid of the warning message modify the printf statement as
follows:
printf('0x%lx\n', 0x10000 + (t=(long int)&global_var));
This modified code executes correctly too.
|
|
SDSCM00008543 |
Forward reference in .space generates an internal error |
Accepted |
C2000_18.12.0.LTS |
|
none
|
|
SDSCM00008248 |
Compilers on PC will not work without TMP set |
Accepted |
C2000_18.12.0.LTS |
|
Set the TMP environment variable, even if just set to . (current directory)
|
|