⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 readme.1st

📁 Montavista Linux 下的多平台编译软件xdc
💻 1ST
📖 第 1 页 / 共 5 页
字号:
------------------------------------------------------------------------------SDSsq33163------------------------------------------------------------------------------Summary  : Dividing zero by zero results in INF rather than NaNDividing zero by zero results in INF(Infinite) rather than NaN(Not a Number)const double x = 0.0 / 0.0;const double y = 1.0 / 0.0;results in x being assigned the value +Inf (0x7FF0000000000000) rather than NaN of some flavour (e.g. 0x7FFC000000000000); y is correctly set to +Inf.------------------------------------------------------------------------------SDSsq33513------------------------------------------------------------------------------Summary  : Optimizer assumes any floating pt value, also NaN ,is equal to           itself  The Optimizer, for c6x CCS2.2 CGT v 4.32, appears to assume that any floating point value is equal to itself. This is not true - NaN is not equal to itself. Thus, as a very simplified example, the functionint isnan(double val){  return (val != val);}just returns zero on all occasions: which is wrong.------------------------------------------------------------------------------SDSsq35081------------------------------------------------------------------------------Summary  : When using long filenames, ar6x may not correctly add file to           libraryIf a file with a long file name is added to an archive library using the command "ar6x r", it is possible that the file will replace a file which already exists in the archive.Workaround:-----------Add new files using the ar6x a command instead of using the r command:ar6x a library.lib this_is_a_really_long_filename.objinstead ofar6x r library.lib this_is_a_really_long_filename.obj------------------------------------------------------------------------------SDSsq35348------------------------------------------------------------------------------Summary  : Consultant does not properly mark do-while loopsI have a do-while loop in my program that is formatted as follows:do{   /* loop body */}while (/* some condition */)When I view this loop in the consultant, it is not indicating that the "while" statement is part of the loop.------------------------------------------------------------------------------SDSsq37015------------------------------------------------------------------------------Summary  : Data align pragma does not work correctly if constant value is           0x10000Data align pragma is not working correcly if constant value is for analignment > 32k.------------------------------------------------------------------------------SDSsq39228------------------------------------------------------------------------------Summary  : assembler expression ~(0x80000000) evaluates as 0x80000000The assembler may generate unexpected results when evaluating constant expressions with large hex constants with the MS bit set.  For example:        .sslist        .eval   ~(0xc000000), mask2x       .macro        .mmsg   ":mask2:"        .endm        xThe mask printed by this message is 0x8000000 when it is expected to be 0x4fffffff.------------------------------------------------------------------------------SDSsq39254------------------------------------------------------------------------------Summary  : Linker -xml_link_info option doesn't work when in a command fileWhen using --xml_link_info option inside a linker command file,use the following syntax ...   --xml_link_info <xml filename>   Note the use of a space between the option and the filename,   rather than the '=' shown in documentation.------------------------------------------------------------------------------SDSsq39285------------------------------------------------------------------------------Summary  : hex6x map file is missing the boot loader sectionThe generated map file does not indicate that the bootloader has beenstored in a section, instead it indicates that the section was filled with zero's.  The hex file does contain the correct bootloader code.  ------------------------------------------------------------------------------SDSsq39552------------------------------------------------------------------------------Summary  : fastrts67x library hangs on rts fmodLinking the fastrts67x library causes the following code to hang.When removing the fastrts67x.lib (or divdp.asm from the library) fmodreturns correctly.------------------------------------------------------------------------------SDSsq39619------------------------------------------------------------------------------Summary  : Float literal conversion to integers incorrectly saturates at 32           bitsWhen a floating point constant with a value of larger than pow(2,32) isconverted (explicitly or implicitly) to a target integer type wider than32 bits, the compiler will incorrectly saturate the value to 32 bits.Values larger than (pow(2,32)-1) will be saturated incorrectly whenconverting to a wide unsigned type, and values outside the range(-pow(2,31))..(pow(2,31)-1) will be saturated incorrectly whenconverting to a wide signed type.Workaround:-----------Use float expressions rather than float constants when they occur as theargument to an explicit or implicit conversion.  A simple way to do thisis with a function:float make_float(float x) { return x; }void fn() { long long y = make_float(5e11); [..] }------------------------------------------------------------------------------SDSsq39708------------------------------------------------------------------------------Summary  : Compiler should reject bitfields too large for container typeThe compiler should reject bitfields larger than the underlying integertype.  This works fine in most cases, but the compiler fails to rejectbitfields of size 41 through 64 with "long" type.  "long" is a legalbitfield container type in C++, but it is only 40 bits long.------------------------------------------------------------------------------SDSsq41626------------------------------------------------------------------------------Summary  : Parser generates an INTERNAL ERROR messageCompiling the following code below with any options will result in thecompiler returning an "INTERNAL ERROR" message --struct foo {char x, y, z[2];};struct foo f();void bar(int baz){    f().z[baz] = 1;}------------------------------------------------------------------------------SDSsq42312------------------------------------------------------------------------------Summary  : Optimizer removes loop where only output is sat bitThe optimizer may remove a loop whose only output is the saturation bit in the CSR.Workaround:-----------The programmer must make something else "live-out" of the loop.------------------------------------------------------------------------------SDSsq42346------------------------------------------------------------------------------Summary  : Cannot transform saturation intrinsics when the SAT bit is readThe optimizer may sometimes transform saturated intrinsic operations in such a way that the SAT bit in the CSR register is no longer set when saturation occurs.  If the original code is reading the sat bit in the CSR, the sat bit may not have been set correctly.Workaround:-----------Use linear assembly or assembly to write the function that does saturation operations and call that function before testing the sat bit.------------------------------------------------------------------------------SDSsq42776------------------------------------------------------------------------------Summary  : .end directive can cause assembler error msgs about DWARF directivesUse of the .end directive in linear assembly source code can lead to error messages being emitted by the assembler about illegal debug directives --cl6x <options> foo.sa"foo.asm", ERROR!   at line 81: [E0000] Illegal specification of a DIE                                              reference                 .dwattr $C$DW$1, DW_AT_type(*$C$DW$T$10)1 Assembly Error, No Assembly Warnings------------------------------------------------------------------------------SDSsq43034------------------------------------------------------------------------------Summary  : ASM code behavior difference between DA6xx and DA7xxHand assembly code written for the C67x/DA6xx which did not have functional unit designations for ADDSP, SUBSP, ADDDP, and SUBDP instructions may be assigned to the S-unit by the assembler when assembling for the C67x+/DA7xx.  This may result in a S-unit resource conflict with other sebsequent S-unit instructions that the assembler does not detect, resulting in code that runs incorrectly.Workaround:-----------When porting hand coded assembly from the C67x/DA6xx to the C67x+/DA7xx architecture make sure that ADDSP, SUBSP, ADDDP, and SUBDP instructions are assigned to the L-unit by placinga .L unit specifcy on them.------------------------------------------------------------------------------SDSsq43742------------------------------------------------------------------------------Summary  : STRUCT_ALIGN pragma doesn't work for nested structsSTRUCT_ALIGN pragma doesn't work when applied to nested structures.------------------------------------------------------------------------------SDSsq43823------------------------------------------------------------------------------Summary  : Linker hangs when trying to create a relocatable output moduleLinking with the -r (produce relocatable output module) option can cause the linker to hang if the source files were compiled with debug (-g) enabled.cl6x -g file1.c file2.ccl6x -z -r -o linked.obj file1.obj file2.objcl6x -z -r -o linked2.obj linked.obj <-- linker hangs hereWorkaround:-----------On the second linker invocation, include the -b (disable merging of symbolic debug information) linker optioncl6x -z -b -r -o linked2.obj linked.obj------------------------------------------------------------------------------SDSsq43826------------------------------------------------------------------------------Summary  : Link takes a long time to completeLinking with the -r (produce relocatable output module) option can causethe linker to hang if the source files were compiled with debug (-g)enabled. cl6x -g file1.c file2.c cl6x -z -r -o linked.obj file1.obj file2.obj cl6x -z -r -o linked2.obj linked.obj <-- linker hangs here Workaround:-----------On the second linker invocation, include the -b (disable merging ofsymbolic debug information) linker option cl6x -z -b -r -o linked2.obj linked.obj-------------------------------------------------------------------------------load6x does not support C64+ and C67+-------------------------------------------------------------------------------The standalone simulator load6x does not support running programs build forC64+ or C67+ architectures.*******************************************************************************4. Fixed Issues      *******************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                                Release 6.0.1B2++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------Fixed SDSsq39117------------------------------------------------------------------------------Summary  : Linear assembler does not handle .include/.copy directive------------------------------------------------------------------------------Fixed SDSsq42320------------------------------------------------------------------------------Summary  : Loop incorrectly transformed at -o3

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -