1.1. C/C++ and Assembly Language Differences

The TI C29x Clang (c29clang) Compiler Tools do not support proprietary TI-specific C/C++ mechanisms that the TI C28x compiler (cl2000) did. This section provides further details about the c29clang compiler’s behavior regarding proprietary TI-specific C/C++ mechanisms.

1.1.1. C/C++ Source Code: Macro Symbols, Pragmas, and Intrinsics

The c29clang compiler does not support many of the proprietary TI pre-defined macro symbols, pragmas, or intrinsics that are supported in the TI C28x compiler. Use of such proprietary pre-defined macro symbols and intrinsics should be replaced by a functionally equivalent alternative.

Rather than using proprietary TI-specific pragmas (such as CODE_SECTION, DATA_SECTION, and LOCATION), you should use function, variable, and type attributes where applicable. For example, instead of defining a function in a specially named section using the CODE_SECTION pragma:

#pragma CODE_SECTION(my_func, ".text:myfunc")
void my_func(void) {
    <code>
}

you can use a section attribute instead:

void my_func(void) __attribute__((section(".text:my_func"))) {
    <code>
}

Please see the C/C++ Source Migration Aid Diagnostics section in the Migrating C and C++ Source Code chapter for details on how instances of these proprietary TI mechanisms can be found and converted into a portable form that the c29clang compiler does support.

1.1.2. CLA Source Code

The TI C29x Clang (c29clang) Compiler Tools do not have a separate CLA compiler. Convert code intended for the TI C28x CLA compiler to regular C code. See Migrating CLA Code for details.

1.1.3. Assembly Source Code

Use of assembly language is discouraged for c29clang, except for assembly code embedded in C/C++ source files via asm() statements, which are processed inline by the c29clang integrated GNU-syntax assembler.

For more information on migrating assembly source code from proprietary applications, please see the Migrating Assembly Language Source Code chapter of this migration guide.