This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TDA4VM:C7000 编译器错误

Guru**** 2378650 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1532833/tda4vm-c7000-compiler-error

工具/软件:

生成文件:“.."/GVS/gvs_motion_stab.c“/GVS/gvs_motion_stab.c
调用:C7000 编译器
“d:/ti/ccs1011/ccs/tools/compiler/ti-cgt-c7000_4.1.1.LTS/bin/cl7x /ti/J7/j7 /grmn/prj/avtn/gvs_board/lib/acl/gfx2 --mma_version=2 -mv7120 -O2 --opt_for_speed=5 --include_path=“a:/jdu/kernel/c7x“--include_path=“D:/ti/J7/j7 /ti/ccs1011/ccs/tools/compiler/ti-cgt-c7000_4.1.1.LTS/include /grmn/prj/avtn/gvs_board/lib/acl/grm +_j784s4/09_02_00_05/ti-processor-sdk-rtos-j78400/kernel/c7x“-:j78400_path=-:j78400_path/pdk_path/j78400_path=4-b09/pdk_path/b-09_path//grmn/prj/avtn/gvs_board/lib/acl/rndr - src:b-09_path/j8400_path/b-09_path/j8400_path//grmn/prj/avtn/gvs_board/lib/acl/gfx -/grmn/prj/avtn/gvs_board /grmn/prj/avtn/gvs_board/lib/acl/utl /grmn/prj/avtn/gvs_board/lib/acl/mth /grmn/prj/avtn/gvs_board/lib/acl/bmp /grmn/prj/avtn/gvs_board src /grmn/prj/avtn/gvs_board src /grmn/prj/avtn/gvs_board src /grmn/prj/avtn/gvs_board/lib/acl/kernel/cpu/coprocessor /grmn/prj/avtn/gvs_board/lib/acl/kernel/cpu/coprocessor/generic /grmn/prj/avtn/gvs_board src /grmn/prj/avtn/gvs_board/build/I/0 perf_advice.txt /GVS/gvs_motion_stab.c

>>编译失败
gvs/subdir_rules.mk:9:目标'gvs/gvs_motion_stab.obj'的配方失败
“a:\grmn\prj\avtn\GVS_board\build\i\0\GRM_PUB_COMPILER_ti_c7x.h“、第 95 行:警告#303-D:已声明 typedef 名称(具有相同类型)
“A:/grmn/prj/avtn/gvs_board/build/I/0/hwm_pub_timer.h “、第 94 行:警告#174-D:外部/内部链接与先前的声明冲突

>>>>优化器异常终止
>>在函数 diff_WDW_pixels2() 中
>>>>在文件“../GVS/gvs_motion_stab.c 中
这是由 TI C/C++优化器中的缺陷引起的。
TI 客户支持部门可以建议一种权变措施来避免这种情况。

升级到最新版本的编译器可能会解决此问题。

请访问 E2E 支持论坛(网址为 http://e2e.ti.com)、与 TI 联系

我们需要查看整个错误消息以及完整且可重现的信息
测试用例、包括所有命令行选项。
包含由选项-preproc_with_comment 创建的.pp 文件

这是 c 代码。 如果我将 next_pt_FXD 更改为* ptr、则可以使用它。 也会在最新的 5.0.0 编译器上发生。

typedef 结构

int x;
int y;
}_pt_2D_FXD_t;

void diff_WDW_pixels2 /*【注释】*/
(
_pt_2D_FXD_t next_pt_FXD、/*获取来自此的像素 FRAC 偏移*/
long * dx_sum_rslt
)

/*----------------------------------------------------------------------------
局部变量
-------------------------------------------------------------------- */
__int16 diff =__int16 (3);
__int16 orig =_int16 (0);

for( int y = 0; y < 16; y++)

diff-= orig;
diff +=(diff * orig);
}

*dx_sum_rslt =__水平添加 ( diff );

}/* diff_WDW_pixels2()*/

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    如果可能、您能否为错误提供独立的代码。 我尝试了以下使用最新编译器编译的.cpp 代码、并正在编译该代码。


    #include <c7x.h>
    #include<iostream>
    
    typedef struct
    {
    int x;
    int y;
    } _pt_2d_fxd_t;
    
    void diff_wdw_pixels2 /* [comment] */
    (
        _pt_2d_fxd_t next_pt_fxd, /* get pixel frac offsets from this */
        long * dx_sum_rslt)
    {
        /*----------------------------------------------------------
        Local variables
        ----------------------------------------------------------*/
        __int16 diff = __int16(3);
        __int16 orig = __int16(0);
    
        for( int y = 0; y < 16; y++ )
        {
    
            diff -= orig;
            diff += ( diff * orig );
        }
    
        *dx_sum_rslt = __horizontal_add( diff );
    
    } /* diff_wdw_pixels2() */
    
    int main(){
    
        _pt_2d_fxd_t pt_2d;
        long long_sum=0;
        diff_wdw_pixels2(pt_2d,&long_sum);
    
    
        std::cout<<long_sum<<std::endl;
    
        return 0;
    }

    此致、
    Sivadeep

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在 c、cpp、debug 和 release 中、您的代码对我有错误。 这是一个简化版本、也失败了。

    typedef struct
    {
    int x;
    } _pt_2d_fxd_t;
    
    void diff_wdw_pixels2
    (
        _pt_2d_fxd_t  next_pt_fxd,  //make * ptr to fix compiler error
        long * dx_sum_rslt)
    {
    __int16 diff = __int16(3);
    __int16 orig = __int16(0);
    
    diff -= orig;
    diff += ( diff * orig );
    
    *dx_sum_rslt = __horizontal_add( diff );
    
    } /* diff_wdw_pixels2() */

    我也只是在命令行运行它的最小数量的参数,也得到了错误。

    C:\Users\starkr>“D:/ti/ccs1011/ccs/tools/compiler/ti-cgt-c7000_4.1.1.LTS/bin/cl7x --include_path=“D:/ti/ccs1011/ccs/tools/compiler/ti-cgt-c7000_4.1.1.LTS/include “a:\grmn\prj\avtn\GVS_board\gdu\kernel\c7x\compiler_err.c“ src
    “a:\grmn\prj\avtn\GVS_board\gdu\kernel\c7x\compiler_err.c“ src、第 17 行:警告:隐式声明函数“___水平_add“

    >>>>优化器异常终止
    >>在函数 diff_WDW_pixels2() 中
    >>>在文件“a:\grmn\prj\avtn\GVS_board\gdu\kernel\c7x\compiler_err.c“中 src
    这是由 TI C/C++优化器中的缺陷引起的。
    TI 客户支持部门可以建议一种权变措施来避免这种情况。

    升级到最新版本的编译器可能会解决此问题。

    请访问 E2E 支持论坛(网址为 http://e2e.ti.com)、与 TI 联系

    我们需要查看整个错误消息以及完整且可重现的信息
    测试用例、包括所有命令行选项。
    包含由选项-preproc_with_comment 创建的.pp 文件


    >>编译失败

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    我也只是从命令行运行了它、它的参数数量极少、并且得到了错误。

    请提及一下您正在使用的优化级别。

    在 c、cpp、debug 和 release 中、您的代码对我有错误。 下面是一个也失败的简化版本。

    独立代码。 您能否提供一个可能产生此错误的独立测试文件?

    此致、
    Sivadeep

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请提及您正在使用的优化级别。“
    我知道您有整个命令行。 您可以将该 bat.txt 重命名为.bat 并运行它来获取错误。 值得注意的是、调试和发布编译过程中会发生什么情况、因此e2e.ti.com/.../compiler_5F00_err.bat.txt 似乎不会受到优化级别的影响。

    “你是在建立独立的代码吗? 您能否提供一个可能产生此错误的独立测试文件?“
    是的、我将您的代码放入 c 文件中、得到了错误。 您可以将我的代码放在 compiler_err.c 中并获取错误。

    我在 Windows 11 上运行。

    e2e.ti.com/.../compiler_5F00_err.c

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    感谢您的更新。 我会检查一下、然后返回给您。

    此致、
    Sivadeep

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    我可以重现这个错误。 我将循环编译器团队进行进一步调查。 作为一种变通方法、您可以尝试使用除 0 之外的任何其他优化级别吗?

    此致、
    Sivadeep