IAR Embedded Workbench for ARM version 8.50.9 1.2 Gb
IAR Systems, a future-proof supplier of software tools and services for embedded development, announces the availability of a major update of its development tools for ARM.Release notes for IAR Embedded Workbench for Arm version 8.50.9 IAR C/C++ Compiler Program corrections
In EWARM 8.50.9
[EWARM-8150, TPB-3453] When the C++17 feature constexpr if is used in a C++ constructor or destructor, the compiler can terminate with an internal error:
["Front end]: assertion failed at: "…\lower_init.c", line 18985"
In EWARM 8.50.9
[EWARM-8118, TPB-3448]
The compiler can exit with an internal error when compiling code where a volatile pointer is used to access a field in a non-volatile struct.
struct A
{
int x;
int y;
};
volatile int t;
volatile int a_x, a_y;
int main(void)
{
struct A a = { 1, 2 };
volatile int *vp = &a.y;
t = (*vp);
a_x = a.y;
a_y = a.y;
return 0;
}
In EWARM 8.50.9
[EWARM-8086, TPB-3442]
On optimization level High, the compiler can generate incorrect code when a pointer-type field in a struct is dereferenced, incremented, and then updated using the value of the original dereference as in the example below. The problem can also trigger if this pattern occurs after inlining.
struct A
{
unsigned char *x;
unsigned char *y;
};
int g4( struct A *ptr )
{
unsigned char len = *ptr->y++;
ptr->y = ptr->y + len;
return 0;
}
In EWARM 8.50.9
[EWARM-8085]
At medium optimization or higher, an unaligned load of a volatile member can be optimized away as if the access was not volatile. This can happen if the optimization is correct for a non-volatile member, which is the case if the load is preceded by a store of a known value to the same address.
Example:
#pragma pack(1)
typedef struct { volatile unsigned int x; } T;
void f(T * p) {
p->x = 5;
while ((p->x & 16) == 0);
}
IAR C-STAT Static Analysis tool Program corrections
In EWARM 8.50.9
[CSTAT-551, EWARM-8046] Initializing an aggregate or union with a struct or union field can incorrectly generate a MISRA2012-Rule-9.2 message, even if the initializer is properly enclosed in braces.
In EWARM 8.50.9
[CSTAT-552, EWARM-8044] The checks MEM-stack-param, MISRAC2012-Rule-1.3_s, MISRAC2012-Rule-18.6_d, and CERT-DCL30-C_e erroneously consider the address of a pointer parameter that is accessed with the subscript operator to be a stack address.
In EWARM 8.50.9
[CSTAT-549, EWARM-8032] The check MISRAC++2008-6-4-3 incorrectly requires switch statements to have a default clause.
In EWARM 8.50.9
[CSTAT-543, EWARM-7915] Using the offsetof macro generates a message for MISRAC2012-Rule-7.2.
In EWARM 8.50.9
[CSTAT-544, EWARM-7914] MISRAC++2008-6-5-5 interprets a loop counter to be only variables assigned in the init statement of a for loop. It should also include any variable assigned prior to the loop.
In EWARM 8.50.9
[CSTAT-545, EWARM-7913] The check MISRAC++2008-6-5-4 incorrectly requires that the loop counter is incremented or decremented by a constant value rather than by a value that is constant for the duration of the loop.
In EWARM 8.50.9
[CSTAT-541, EWARM-7901]
This code generate a message for MISRAC2012-Rule-18.8 regarding the usage of variable length arrays.
extern struct {
int m;
} a[ ];
IAR ILINK linker for Arm Program corrections
In EWARM 8.50.9
[EWARM-8188, TPB-3455] When calculating a checksum for a range that contains nobits content (in this particular case the last bytes of a ROM-placed block with a specified size, where the available content does not occupy all available bytes in the block), ielftool can fail to terminate.
In EWARM 8.50.9
[EWARM-8042] When linking for a legacy core (pre-cortex) without FPU, with stack usage analysis enabled, a warning is issued for library symbols __aeabi_f2uiz and __aeabi_f2d:
Warning[Ls014]: [stack usage analysis] at least one function does not have stack usage
information
The symbols __aeabi_f2uiz and __aeabi_f2d are used to implement conversion of a float value to int or double.
IAR C-SPY Debugger for Arm Program corrections
In EWARM 8.50.9
[EWARM-8005] When using the Function profiler, Source: Trace (flat) (ETM), the Debug Log window, on Messages filter level, is filled up with non-understandable numbers.
About IAR Embedded Workbench for ARM. IAR Embedded Workbench for ARM incorporates the IAR C/C++ Compiler, an assembler, a linker and the C-SPY Debugger into one completely integrated development environment. Powerful add-ons and integrations, including easy-to-use debugging and trace probes as well as integrated tools for static analysis and runtime analysis, add additional capabilities. To fully support developers in their specific needs, IAR Systems offers extensive technical support services all over the world and training courses in embedded programming though IAR Academy. In this video, you get a demo of how to work with integrated code analysis in IAR Embedded Workbench for Arm. C-STAT static analysis and C-RUN runtime analysis are available as add-ons to bring code quality control to the desk of every developer. About IAR Systems. IAR Systems supplies future-proof software tools and services for embedded development, enabling companies worldwide to create the products of today and the innovations of tomorrow. Since 1983, IAR Systems’ solutions have ensured quality, reliability and efficiency in the development of over one million embedded applications. The company is headquartered in Uppsala, Sweden and has sales and support offices all over the world. Product: IAR Embedded Workbench for ARMVersion: 8.50.9Supported Architectures: 32bit / 64bitWebsite Home Page : www.iar.comLanguage: english, japaneseSystem Requirements: PCSupported Operating Systems: Windows XP (32bit) / Vista / 7even / 8.x / 2003 server (32bit) / 2008 serverSize: 1.2 Gb 8.50
本部分内容设定了隐藏,需要回复后才能看到
9.10版:http://bbs.sdbeta.com/read-htm-tid-575901.html