Error due to GNU ARM toolchain usage in IAR workbench
The global variable _impure_ptr is part of newlib libc as used by the GNU ARM Toolchain. IAR uses, as far as I can tell, it's own implementation of the standard C library called CLIB.

The standard C library usually contains all/most function defined in the C standard. As far as these function (printf, strlen...) go, the two libraries should be rather compatible. In other areas these libraries tend to differ. The variable _impure_ptr is used by newlib to support multi threading and contains all global variables used by that thread (e.g. errno).

FreeRTOS has builtin support for newlib reentrancy (although not officially supported by the developers). If this is activated, FreeRTOS keeps a copy of this reentrancy context for every task and replaces the global variable on context switch. You can disable this in your FreeRTOSConfig.h, by setting configUSE_NEWLIB_REENTRANT to 0. But make sure that the IAR libc is reentrant, otherwise you might get into trouble later on.