[EXT_EP-11449] Use of _disable_interrupts intrinsic causes compiler to emit call to function _get_CPSR, which does not exist Created: 25/Aug/23  Updated: 28/Aug/23  Resolved: 28/Aug/23

Status: Declined
Project: Embedded Software & Tools
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Bug Priority: Not Prioritized
Reporter: TI User Assignee: TI User
Resolution: Won't Fix Votes: 0
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Product: Code Generation Tools
Internal ID: CODEGEN-11433
Forum URL: https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/Arm-based-microcontrollers---internal/f/1042/t/1263171
Found In Release: ARMCLANG_2.1.3.LTS
Affected Platform/Device: default
Decline Reason:  _get_CPSR exists in ti_compatibility.h, but ti_compatibility.h was meant to ensure backward compatibility source code ported to tiarmclang with targets supported by the TI Arm proprietary compiler (armcl), which doesn't include Cortex-M33.

Separate issue filed to address lack of documentation on enabling/disabling interrupts on Arm targets.

 Description   

The attached file.c has these line ...

#include <ti_compatibility.h>

void fxn()
{
    _disable_interrupts();
}

Build it ...

$ tiarmclang @options.txt -S file.c

Inspect the resulting assembly file ...

$ findstr _get_CPSR file.S
        bl      _get_CPSR
        .asciz  "_get_CPSR"                     @ string offset=203

The function _get_CPSR is not defined in the compiler RTS library, or anywhere else. This results in an error when linking.


Generated at Fri May 01 09:57:39 CDT 2026 using Jira 10.3.7#10030007-sha1:a563685562f94d165eb4e158cfb2a142338d8c54.