IT-block ends prematurely

Technical Note 31138

Architectures:

ARM

Component:

compiler

Updated:

11/6/2015 12:30 PM

Introduction

IAR Embedded Workbench for ARM version 7.30 (and earlier) accepted constructions like:

[...]
asm("ITE EQ");
asm("MRSEQ R0, MSP");
asm("MRSNE R0, PSP");
[...]

The above is a bug which is corrected in IAR Embedded Workbench for ARM version 7.40.1.

The code above will generate diagnostic messages like:

Error[Ta117]: IT-block ends prematurely, or there is a label within the IT-block

Discussion

The construction above is unsafe, as in-between the asm()-statements it was possible to place ordinary C source code.

Suggested rewrite

Change the construction into a single inline assebler statement, with multiple lines.

The above construction should be rewritten to:

[...]
asm("ITE EQ \n"
"MRSEQ R0, MSP \n"
"MRSNE R0, PSP");
[...]

 

 

All product names are trademarks or registered trademarks of their respective owners.

We do no longer support Internet Explorer. To get the best experience of iar.com, we recommend upgrading to a modern browser such as Chrome or Edge.