?? readme.1st
字號:
Incorrect simplification of AND with integer. Given a loop likefor (; i >= 0; i--) ... if ((1 << i) & e)where "e" is a literal integer (eg, 27), the "(1 << i) & e" may beincorrectly assumed never to equal zero.------------------------------------------------------------------------------Fixed SDSsq42845------------------------------------------------------------------------------Summary : Generating a non-interruptible infinite loop with -miN option------------------------------------------------------------------------------Fixed SDSsq43271------------------------------------------------------------------------------Summary : Files that takes a long time to compile with CGT5.1.1------------------------------------------------------------------------------Fixed SDSsq43306------------------------------------------------------------------------------Summary : Test case for SDSsq43151 fails to assemble with -ms2/-ms3 for C64+Compiling test case for C64+ with -o2 and -ms2 (or -ms3) will generate assembly error messages about too many cross path uses.------------------------------------------------------------------------------Fixed SDSsq43365------------------------------------------------------------------------------Summary : conditional is optimized out of the code using -o3------------------------------------------------------------------------------Fixed SDSsq43366------------------------------------------------------------------------------Summary : Production compiler misplaces .ppa file (-apd) when source is .c file.Production tools will place .ppa file in temp directory with temp name when compiling a .c file with -apd/-api.------------------------------------------------------------------------------Fixed SDSsq43483------------------------------------------------------------------------------Summary : DW_AT_high_pc is incorrect for C6400+/JouleFunctions appear too large to the debugger for C6400+ (-mv6400+)------------------------------------------------------------------------------Fixed SDSsq43499------------------------------------------------------------------------------Summary : optimizer seems to assume that the if condition is always true------------------------------------------------------------------------------Fixed SDSsq43535------------------------------------------------------------------------------Summary : cl6x should give warning-addrs not correct for abs/xref list for 64+The shell (cl6x) should give a warning when -mv6400+ is used with the absolute listing option or cross reference listing option. Addresses are not correct because of compression in C6400+.------------------------------------------------------------------------------Fixed SDSsq43540------------------------------------------------------------------------------Summary : optimizer incorrectly converts _avg2(x, 0) to _shr2(x, 1) The optimizer converts _avg2(x, 0) to _shr2(x, 1).------------------------------------------------------------------------------Fixed SDSsq43604------------------------------------------------------------------------------Summary : INTERNAL ERROR: no match for ICALL when using -o3/o2 The compiler error when -o2 or -o3 options are used.------------------------------------------------------------------------------Fixed SDSsq43655------------------------------------------------------------------------------Summary : Optimizer generates incorrect _mpyu() intrinsic for a 32-bit multiplyA multiply operation, directly or indirectly the argument to anintrinsic call whose value is assigned to a short or char variable,could be incorrectly converted to _mpy at optimisation level -o1 orhigher. This problem is specific to the C6x family.------------------------------------------------------------------------------Fixed SDSsq43786------------------------------------------------------------------------------Summary : opt6x.exe experienced a segmentation fault with -o3 and -o2 optionOptimizer may encounter a stack overflow, which may be reported as asegmentation fault, when compiling at -o2 or -o3 a function containing aloop nest and a reference to a variable which is constant relative tothe inner loop, but which is derived in the outer loop from anothervariable whose value is a function of the outer-loop index.------------------------------------------------------------------------------Fixed SDSsq43831------------------------------------------------------------------------------Summary : false warning of incompatible type when using -pm option------------------------------------------------------------------------------Fixed SDSsq43883------------------------------------------------------------------------------Summary : Optimizer mishandles rotate expression like (ulong << 28) | (ulong >> 4)The optimizer will incorrectly generate code for rotate expressions of the form:'(var << k1) | (var >> k2)',where var is a variable larger than a registerk1 is a constant value,k2 is a constant value,k1 + k2 = the width of the variable's type.------------------------------------------------------------------------------Fixed SDSsq43890------------------------------------------------------------------------------Summary : optimizer incorrectly transforms multiply operation------------------------------------------------------------------------------Fixed SDSsq43906------------------------------------------------------------------------------Summary : Trampolines, after partial linking, may branch to wrong address------------------------------------------------------------------------------Fixed SDSsq43910------------------------------------------------------------------------------Summary : Optimizer appears to be placing incorrect address in registerUnder certain obscure circumstances involving integers cast to pointersand then dereferenced as structs, the optimiser may use a temporaryvariable without having assigned it first.------------------------------------------------------------------------------Fixed SDSsq44023------------------------------------------------------------------------------Summary : interrupt happening during a multiple assignment corrupts registerInterrupt happening during a multiple assignment corrupts register------------------------------------------------------------------------------Fixed SDSsq44036------------------------------------------------------------------------------Summary : Optimizer generates incorrect code for certain structure code constructs------------------------------------------------------------------------------Fixed SDSsq44040------------------------------------------------------------------------------Summary : Optimizer abnormally terminates with 'Bad opcode in simplifier' messageCompiler may abnormally terminate with using the optimizer -mv6400.------------------------------------------------------------------------------Fixed SDSsq44074------------------------------------------------------------------------------Summary : GIE bit is not restored before coming out of the function------------------------------------------------------------------------------Fixed SDSsq44104------------------------------------------------------------------------------Summary : optimizer performs signed division incorrectlyoptimizer seems to get confused by the presence of the code before the division which involves an unsigned result assigned into a signed as seen by the code below and handles the division by 32 as unsigned:int32 o_calculate( uint16 bler, uint16 step_size, uint32 bler_target){ int32 step; step = (((int32)(bler) << 9) - bler_target) * step_size; step /= 32; return step;}------------------------------------------------------------------------------Fixed SDSsq44170------------------------------------------------------------------------------Summary : Bad hoisting leads to use of undefined variableUsing a "const" variable that is declared within a loop body and also updated on each iteration may cause that variable to be used before it's defined as the expression is moved in front of the loop------------------------------------------------------------------------------Fixed SDSsq44175------------------------------------------------------------------------------Summary : Incorrect results comparing 'long dbl' to 'long long' with optimizationIncorrect results are generated when converting from a 64-bit 'long double' to a 64-bit 'long long' when optimization is enabled and thevalue is very close to the largest 'long long'.++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Release 6.0.1++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------Fixed SDSsq42986------------------------------------------------------------------------------Summary : CODE_SECTION pragma must override -mo Link time failures occur if code containing pragma CODE_SECTION is compiled with -mo.------------------------------------------------------------------------------Fixed SDSsq43480------------------------------------------------------------------------------Summary : opt6x.exe experienced a segmentation fault with -o3 optionA large and complex function may cause a stack overflow and crash in theoptimiser, on the PC only.------------------------------------------------------------------------------Fixed SDSsq43645------------------------------------------------------------------------------Summary : Compiler writes to DP (b14) before interrupts are disabledWhen attempting software pipelining the compiler may try to allocate the DP (b14) and the SP (b15) as general purpose registers. These registers must be saved and restored around the software pipelined loop. Writes to b14 and b15 must only occur when the compiler has disabled interrupts. In rare cases, the compiler was allowing a load that defined b14 to end up in parallel with the mvc instruction that disabled interrupts. The load must happen after the MVC to be interrupt safe.------------------------------------------------------------------------------Fixed SDSsq43891------------------------------------------------------------------------------Summary : -o2 or -o3 produces wrong resultsLoops which include writes to overlapping fields of the same unionobject may improperly share values of common references to one fieldeven though a write to the other field intervenes, if the loop isunrolled as part of vectorisation.------------------------------------------------------------------------------Fixed SDSsq44086------------------------------------------------------------------------------Summary : Linker crashes trying to generate trampolines in a NOLOAD sectionIn some situations, the linker will crash because it is trying to generate trampolines for a NOLOAD section. The linker cannot generate trampolines in a NOLOAD section, because there is no raw data section that is generated.------------------------------------------------------------------------------Fixed SDSsq44181------------------------------------------------------------------------------Summary : ofd6x produced corrupted object_file outputThe ofd6x and nm6x tools may not correctly decode a filename longer than14 characters in an archive file. This occurs only for one filename perarchive. The output produces a mangled string such as /0 1132614339 0 0 0 2248 `------------------------------------------------------------------------------Fixed SDSsq44257------------------------------------------------------------------------------Summary : Optimizer converts multiply-add to dotp2 instead of ldotp2A calculation of the form:short x[5]= {.....}short y[5] = {.....};void foo(){ int i; for (i=0; i<2; i++) a += (long) (x[i]*y[i]); ...Here the calculation of "a = x[0]*y[0]+x[1]*y[1]" gets incorrectly converted to a dotp2; this should've been ldotp2, since the end result is a long.This happens when compiled with -mv6400/-mv6400+ and -o2/-o3.------------------------------------------------------------------------------Fixed SDSsq44288------------------------------------------------------------------------------Summary : compiler computes wrong value for the overflow case of DOTPRSU2 under -oCompiling the _dotprsu2 and _dotpnrsu2 intrinsics when both arguments areinteger constants may produce the wrong answer for C64+; the specchanged and the optimiser was not updated.------------------------------------------------------------------------------Fixed SDSsq44301------------------------------------------------------------------------------Summary : Size of union is copied as a wrong valueThe linear assembler was computing the size of a union incorrectly.------------------------------------------------------------------------------Fixed SDSsq44404------------------------------------------------------------------------------Summary : restrict with inline function fails with optimization -o3Restrict with inline function fails with optimization -o3, in a specificsituation. Here the inlined function has restricted parameters and theargument is itself a restricted variable and also const. Inlining willpropagate certain const arguments; propagating a restrict into arestrict will foul up
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -