Part Number:TMS320C6678
Tool/software: TI C/C++ Compiler
Dear Team,
My customer is complaining on the build time of C6x compiler and requested to provide coding guide to avoid long build time.
Their compiler version is very old - v7.3.0. Do you think this compile time can be shorter when they upgrade compiler version with latest one?
Actually, I'm afraid they can not upgrade compiler version as they have used it very long time and their RTOS version and other SW packages are also old.
In C6000 compiler v7.3.0, Could you please provide a guide to reduce this compile time?
- Is there compiler option to reduce build time with minimal impact on performance?
- Is there coding guide to reduce build time? like avoid if, for, and so on.
My customer's log is as below.
/opt/CCSv5/C6000CGT7.3.0/bin/cl6x -@DebugThread_ccsCompiler.opt
+----- /opt/CCSv5/ccsv5/utils/gmake/gmake -k -j8 all
+---- (build time: 02m26s) /opt/CCSv5/C6000CGT7.3.0/bin/opt6x --gen_opt_info=2 tmp/147320aKbMU tmp/147326jX9Zp --opt_info_filename=DebugThread.nfo
+---- (build time: 11m34s) /opt/CCSv5/C6000CGT7.3.0/bin/cg6x tmp/23670asnYm9 --template_info_file=tmp/23670ySMnvt DebugThread.asm
+---- (build time: 6m34s) /opt/CCSv5/C6000CGT7.3.0/bin/cmp6x tmp/23670Ip34M7 DebugThread.obj DebugThread.lst
+---- (build time: 0m 2s) /opt/CCSv5/C6000CGT7.3.0/bin/lnk6x -ltmp/13903sjyewy
~~~~~~~
< from nfo file >
extern unsigned DownlinkChannelInfoFix() is called from 0 sites in this file.
It appears to be inlineable (size = 12506 units)
It has 6 non-trivial scope blocks nested 4 deep.
It calls these functions:
HasFeature() (12 times)
AggregationAndBoostInfoSetForCa() (1 times)
PdschUpstepSizeDecide() (1 times)
MacControlChInfoSet() (1 times)
OlrcBackOffAdjustInitialize() (1 times)
SetDlSmart() (1 times)
SDM_MemoryPuts() (8 times)
SDM_MemoryPrintf() (413 times)
atoi() (787 times)
strcmp() (189 times)
<...skip....>
extern unsigned DownlinkChannelInfoFix() is called from 0 sites in this file.
It appears to be inlineable (size = 12506 units)
It has 6 non-trivial scope blocks nested 4 deep.
It calls these functions:
strcmp() (189 times)
HasFeature() (12 times)
====== Unroll-and-jam Result Summary ======
LOOP#46 in DownlinkChannelInfoFix() fails to unroll-and-jam: Impermissible side effects
====== End Unroll-and-jam Result ======
Optimization summary for cross-iteration vectorization (SIMD)
in DownlinkChannelInfoFix()
Unrolling and vectorizing the "for" loop at lines 14017-14020 by a factor of 2x.
This loop has 25 iterations.
The unrolling factor 2 does not provably divide the
iteration count, so we will add a 'peeled' loop for
the last few iterations. Its iteration count is 1.
Vectorizing this store 2x at line 14019: *(NONALIGN((unsigned *)((unsigned *)v$2+cElement*4+68))) = S2V(0uLL);
in this statement: ((unsigned *)v$2)[cElement+17] = 0u;
~~~~~~~
< compiler option >
<file: DebugThread_ccsCompiler.opt>
-mv6600
--symdebug:skeletal
-O3
--gcc
--include_path=/opt/CCSv5/C6000CGT7.3.0/include --include_path=/opt/CCSv5/pdk_C6678_1_0_0_15_new/packages --include_path=/opt/CCSv5/pdk_C6678_1_0_0_15_new/ti/csl/src/intc <생략>
--display_error_number
--diag_suppress=1 --diag_suppress=145 --diag_suppress=169 --diag_suppress=67 --diag_suppress=179 --diag_suppress=552
--diag_warning=225
--big_endian
--mem_model:data=far
--abi=eabi
--opt_for_speed=5
--gen_opt_info=2
-k
--asm_listing
--output_all_syms
--preproc_with_compile
--preproc_dependency=DebugThread.pp
--obj_directory=COMMON
--cmd_file=./configPkg/compiler.opt
<file: Debug/configPkg/compiler.opt>
-me -mv6600 --abi=elfabi -I"/opt/CCSv5/bios_6_31_04_27/packages" -I"/opt/CCSv5/pdk_C6678_1_0_0_15_new/packages" -I"/opt/CCSv5/ipc_1_22_05_27/packages" -I"/opt/CCSv5/edma3_lld_02_11_05_02/packages" -I"/opt/CCSv5/xdctools_3_20_08_88/packages" -I"configPkg/.." -I/opt/CCSv5/C6000CGT7.3.0/include -Dxdc_target_types__="ti/targets/elf/std.h" -Dxdc_target_name__=C66_big_endian -Dxdc_cfg__header__="configPkg/package/cfg/PHY_pe66e.h
Thanks and Best Regards,
SI.