IT-block ends prematurely

Technical Note 31138

Architectures:

ARM

Component:

compiler

Updated:

2015/11/6 12:30

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.