<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.emmtrix.com/w139/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Oliver.Wolf.EMX</id>
	<title>emmtrix Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.emmtrix.com/w139/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Oliver.Wolf.EMX"/>
	<link rel="alternate" type="text/html" href="https://www.emmtrix.com/wiki/Special:Contributions/Oliver.Wolf.EMX"/>
	<updated>2026-05-09T16:31:04Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.10</generator>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=emmtrix_Studio_Release_Notes&amp;diff=2878</id>
		<title>emmtrix Studio Release Notes</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=emmtrix_Studio_Release_Notes&amp;diff=2878"/>
		<updated>2025-09-29T08:43:25Z</updated>

		<summary type="html">&lt;p&gt;Oliver.Wolf.EMX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;emmtrix-studio-release-notes&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= emmtrix Studio Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Release 2025.09 ==&lt;br /&gt;
&lt;br /&gt;
=== New Features ===&lt;br /&gt;
&lt;br /&gt;
* New/improved transformations:&lt;br /&gt;
** UnityBuildMerger trafo: Added new transformation merging all source files into a single source file&lt;br /&gt;
** Inline trafo: Inline transformation learned to remove unused inlined functions&lt;br /&gt;
&lt;br /&gt;
* ONNX models can now be used as input and will be converted to C code with integrated ONNX2C&lt;br /&gt;
&lt;br /&gt;
* emmtrix C to Rust Compiler&lt;br /&gt;
** New transformation that converts C code to safe Rust code. Currently supported constructs are:&lt;br /&gt;
*** Rust strictly-typed operators and detecting reserved keywords&lt;br /&gt;
*** Basic types (bool, integer and float), arrays, structs and unions&lt;br /&gt;
*** Typedefs&lt;br /&gt;
*** Local, global, static and volatile variables&lt;br /&gt;
*** Detection of unsafe constructs and minimal &amp;lt;code&amp;gt;unsafe&amp;lt;/code&amp;gt; blocks insertion&lt;br /&gt;
*** Function calls&lt;br /&gt;
*** Automatic removal of mut&lt;br /&gt;
*** printf to print! conversion for known format strings (%d, %i, %u, %X, %c, %s)&lt;br /&gt;
*** if, for, while and do while control structures&lt;br /&gt;
*** switch to match conversion for simple switch statements&lt;br /&gt;
*** sizeof operator&lt;br /&gt;
*** String and char literals&lt;br /&gt;
*** Pointers and function pointers&lt;br /&gt;
&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
&lt;br /&gt;
* emmtrix Dependency Analyzer (eDA)&lt;br /&gt;
** Supporting field-sensitive propagation and multi-dimensional arrays for array-sensitive propagation&lt;br /&gt;
** Improved performance and memory consumption&lt;br /&gt;
** Shortest-path and reachability analysis can now be disabled&lt;br /&gt;
** Report repetitive warnings only once&lt;br /&gt;
** Changed handling of blocking variables that only the last effective variable assignments are considered&lt;br /&gt;
&lt;br /&gt;
* emmtrix Performance Estimator (ePE)&lt;br /&gt;
** Added setting to switch time metric between average, minimal and maximal for the hierarchical program view&lt;br /&gt;
** Added setting to only consider copy instructions&lt;br /&gt;
&lt;br /&gt;
* emmtrix Code Vectorizer (eCV)&lt;br /&gt;
** Improved and reduced warnings for WAW, RAW and WAR conflicts&lt;br /&gt;
** RISC-V: Supporting vectorization for RISC-V Vector C Intrinsic v1.0&lt;br /&gt;
** Improved code generation for comparison operators that return bool&lt;br /&gt;
** Improved readability of generated vector code&lt;br /&gt;
&lt;br /&gt;
* C Frontend&lt;br /&gt;
** Improved handling of inline assembly with macros and parameters&lt;br /&gt;
** Supporting identically-named source files located in different folders&lt;br /&gt;
** Support parsing of tasking-specific keywords (if Tasking compiler is selected)&lt;br /&gt;
** Supporting designated initializers with multiple designators&lt;br /&gt;
** Improved type deduction for conditionals to ensure standards compliance&lt;br /&gt;
&lt;br /&gt;
* Other changes&lt;br /&gt;
** Added optional logging of basic project size metrics after loading, initialization, and transformation&lt;br /&gt;
** Added support to override system includes for parsing and processing&lt;br /&gt;
** Procedure Duplication: Added limit on how often functions are duplicated, default is 100, -1 means no limit&lt;br /&gt;
&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* eDA&lt;br /&gt;
** Assigns with non-constant array subscripts did not remove previous array-sensitive values&lt;br /&gt;
** Array- and field-sensitive values were not considered in conditions&lt;br /&gt;
** Fixed incorrect handling of pointer arithmetic with pointers to volatile data&lt;br /&gt;
&lt;br /&gt;
* eCV&lt;br /&gt;
** PPU: Fixed compilation errors caused by arrays of type 32-bit &amp;lt;code&amp;gt;long&amp;lt;/code&amp;gt;&lt;br /&gt;
** Fixed &amp;quot;data type not supported&amp;quot; error in VectorCGeneration for 32-bit &amp;lt;code&amp;gt;long&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Frontend: Fixed handling of enum types&lt;br /&gt;
&lt;br /&gt;
* Code transformations are not applied to functions that are not called in the project anymore. This avoids transformation crashes in these functions.&lt;br /&gt;
&lt;br /&gt;
== Release 2025.03 ==&lt;br /&gt;
&lt;br /&gt;
=== New Features ===&lt;br /&gt;
* &#039;&#039;&#039;emmtrix Performance Estimator (ePE)&#039;&#039;&#039;&lt;br /&gt;
** Supporting performance estimation of Simulink blocks&lt;br /&gt;
*** Generation of interactive HTML performance report with results mapped to Simulink blocks and hierarchy&lt;br /&gt;
*** MBDComments trafo: Added new trafo to parse model-based design comments generated by TargetLink&lt;br /&gt;
** Supporting setting of loop trip count and if-block probabilities in the Hierarchical Program View GUI&lt;br /&gt;
*** Loops: Set number of iterations&lt;br /&gt;
*** If blocks: Set true path execution frequency&lt;br /&gt;
*** Functions: Set runtime in cycles or time&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;emmtrix Dependency Analyzer (eDA)&#039;&#039;&#039;&lt;br /&gt;
** Supporting bit-level dependency analysis of input/output signals&lt;br /&gt;
*** BitBlast trafo: Added new helper trafo that converts a C function into a boolean representation, breaking down operations into individual bit-level logic&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;emmtrix Code Vectorizer (eCV)&#039;&#039;&#039;&lt;br /&gt;
** Added support for AVX2 x86 ISA extension&lt;br /&gt;
** Added support for ARM SVE ISA extension&lt;br /&gt;
** Added support for loop-local structs, structs in vector code generation and continue statements&lt;br /&gt;
** Added support for vectorizing math functions:&lt;br /&gt;
*** &amp;lt;code&amp;gt;hypotf&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tanf&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;fdimf&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;logf&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;log10f&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;fdimf&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;fmaf&amp;lt;/code&amp;gt;&lt;br /&gt;
** Added new perspective for code vectorization&lt;br /&gt;
*** Vector code generation for testing, target and simulator&lt;br /&gt;
*** Buttons to run and compile code and compare results with sequential input code&lt;br /&gt;
* Add support for Triboard TC4D9 Parallel Processing Unit for Synopsis and Tasking&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;New/improved transformations:&#039;&#039;&#039;&lt;br /&gt;
** IfMerge trafo: Added new trafo to merge subsequent if statements with compatible condition&lt;br /&gt;
** BlockOutlineTrafo: Added new trafo to extract functions from blocks&lt;br /&gt;
** DeadStmtRemoval trafo: Added new trafo to remove dead statements&lt;br /&gt;
** RemoveIncludes trafo: Added new trafo to remove all non-standard includes and add declarations to source files&lt;br /&gt;
&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
* Performance Estimation: Added support for num exec calculation of if blocks with constant values&lt;br /&gt;
* BulkProcessing: Added support for a list of passes that should be executed&lt;br /&gt;
* Improved support for C23 standard: &lt;br /&gt;
** Supporting labels followed by a declaration&lt;br /&gt;
** Supporting unnamed parameters in function definitions&lt;br /&gt;
* Transformation Framework: Selected transformations can now be set via properties&lt;br /&gt;
** Currently supports transformations &amp;lt;code&amp;gt;MBDComments&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;IdiomRecognizer&amp;lt;/code&amp;gt;&lt;br /&gt;
* Improved performance of hierarchical program view for larger projects&lt;br /&gt;
* Settings dialog now has sections for each supported software platform for easier configuration of different use cases&lt;br /&gt;
&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
* Fixed bugs in LLVM IR based performance estimation&lt;br /&gt;
* Fixed bus in Assembly-based performance estimation&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
* Vectorization: Changed Tasking compiler setting to favor performance over code size&lt;br /&gt;
* GUI: Number formatting will now always use English language&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Release 2024.11 ==&lt;br /&gt;
&lt;br /&gt;
=== New Features ===&lt;br /&gt;
* New/improved transformations:&lt;br /&gt;
** ControlStructSimplify trafo: Added new trafo to simplify control structures&lt;br /&gt;
** VarCoalescing trafo: Added transformation to remove unnecessary copy operations by coalescing (i.e. reusing) variables&lt;br /&gt;
** ArrayToScalar trafo: Extended trafo to convert arrays to single scalars&lt;br /&gt;
** VarSplit trafo: Automatically perform loop if splitting on affected loops&lt;br /&gt;
** Vectorization trafo: Using platform SIMD vector length property as default vector length&lt;br /&gt;
** LoopUnswitch trafo: Added new trafo to unswitch `for` loops containing `if` conditions&lt;br /&gt;
** ConstPropagation trafo: Added `remove_dead_blocks=&amp;lt;no|defensive|aggressive&amp;gt;` parameter to remove dead blocks after constant propagation&lt;br /&gt;
** ConstantPropagation now supports arrays&lt;br /&gt;
** VectorizeTrafo: Added warnings for constructs that might lead to incorrect code&lt;br /&gt;
** Vectorization: Showing analysis abort reasons (For loop structure, analysis of memory accesses, detection of nested structures)&lt;br /&gt;
* Target platforms: Implemented Tasking/Synopsys targets for Aurix Triboard TC499a STD&lt;br /&gt;
* Vectorization: Supporting sin, cos and exp operations&lt;br /&gt;
* Full support for PPU of AURIX TC4x (reduction, rounding, multiply-accumulate...)&lt;br /&gt;
* Pragmas: `pragmas.json`: Supporting global, variable, parameter, and function declaration pragmas&lt;br /&gt;
* Transformation: Showing reason why a transformation cannot be applied&lt;br /&gt;
&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
* CLI: Added new `addtrafo &amp;lt;trafoname&amp;gt; &amp;lt;path&amp;gt; [--jsonparams &amp;lt;params&amp;gt;]` command to add a trafo to the `emx_trafos_v2.json` file&lt;br /&gt;
* GUI: Combo box to switch the active project is now disabled while a pass is running&lt;br /&gt;
* Performance Estimation: Improved loop analysis by using maximum number of iterations and supporting while loops. Uses maximum number of iterations if available and sets `avg = (min + max)/2`&lt;br /&gt;
* CLI: Added new `createproject2 &amp;lt;name&amp;gt; [--folder &amp;lt;dir&amp;gt;]` command&lt;br /&gt;
* C parsing: Changed handling of include directories&lt;br /&gt;
** Subdirectories of include folder are not automatically added as include folders anymore&lt;br /&gt;
** Parsing stops with an error message when an include cannot be resolved&lt;br /&gt;
** The name of all parsed header files and where they are included is printed on the console when debugging is enabled&lt;br /&gt;
&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
* Assembly-based performance estimation: Fixed incorrect code caused by const data type in ?: operator&lt;br /&gt;
* Vectorization: Fixed incorrect code generation caused by comments at the end of the for body&lt;br /&gt;
* C parsing: Fixed that pragmas within included files were not considered&lt;br /&gt;
* LoopInterchange trafo: Fixed exception caused by loop local variable used within variable initialization&lt;br /&gt;
* Vectorization: Fixed that all linear memory accesses were considered as indexed&lt;br /&gt;
* Vectorization: Fixed vectorization of loops containing unsupported code&lt;br /&gt;
* Performance estimation: Fixed handling of nested folder structures for ASM performance estimation&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
* Removed support for GPUs (CUDA and OpenCL code generation)&lt;br /&gt;
* Removed support for FPGAs (high-level synthesis)&lt;br /&gt;
* ParallelCodeGeneration: Deactivated default static array conversion for test code generation (can be activated in settings)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Release 2024.07 ==&lt;br /&gt;
&lt;br /&gt;
=== New Features ===&lt;br /&gt;
&lt;br /&gt;
* New/improved transformations&lt;br /&gt;
** Deroll trafo: Added new trafo to create loops for similar subsequent statements or constructs&lt;br /&gt;
** LoopFusion trafo: Added new trafo to fuse two subsequent for loops with the same iteration space&lt;br /&gt;
** PtrResolve trafo: Added new trafo to resolve pointers and replace indirect memory accesses by direct (used in eDA)&lt;br /&gt;
** MakeStatic trafo: Added new trafo to make functions static if used only locally to provide optimization potential for the compiler and ease the linking&lt;br /&gt;
** ArrayToScalar trafo: Added new trafo to convert arrays to scalars&lt;br /&gt;
** LoopUnroll trafo: &lt;br /&gt;
*** Added possibility to apply &amp;lt;code&amp;gt;LoopUnroll&amp;lt;/code&amp;gt; to all for-loops of selected functions&lt;br /&gt;
*** Automatically perform full loop unrolling when the unrolling factor exceeds the constant number of iterations&lt;br /&gt;
&lt;br /&gt;
* emmtrix Dependency Analyzer (eDA)&lt;br /&gt;
** Added result caching mechanism to speed up recurring analysis&lt;br /&gt;
** Added support for label propagation&lt;br /&gt;
** Added shortest-path and reachability report to follow how values/signals propagate&lt;br /&gt;
&lt;br /&gt;
* emmtrix Performance Estimator (ePE)&lt;br /&gt;
** Added min/max runtime calculation&lt;br /&gt;
&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
* C code handling&lt;br /&gt;
** Preserving &amp;lt;code&amp;gt;#define&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;#undef&amp;lt;/code&amp;gt; preprocessor directives&lt;br /&gt;
** Parsing C code comments for analysis and code generation&lt;br /&gt;
** Added option to set charsets for source code files&lt;br /&gt;
** Respecting the correct order of #include directives and other declarations&lt;br /&gt;
&lt;br /&gt;
* GUI Improvements&lt;br /&gt;
** Settings: Sorted and restructured settings&lt;br /&gt;
** Improved usability of emmtrix Studio project wizard&lt;br /&gt;
&lt;br /&gt;
* Analysis Time Improvements&lt;br /&gt;
** Improved performance of SSA calculation&lt;br /&gt;
** Improved analysis performance by caching result of variable usage&lt;br /&gt;
** Added internal caching for performance estimation&lt;br /&gt;
** Improvements of internal type calculations&lt;br /&gt;
** Added cache to improve performance to calculations in eDA&lt;br /&gt;
** Fixed performance bottleneck in dominator calculation in eDA&lt;br /&gt;
&lt;br /&gt;
* emmtrix Parallel Studio&lt;br /&gt;
** Added option to enable parallelization for shared memory (improves global variables synchronization)&lt;br /&gt;
&lt;br /&gt;
* General&lt;br /&gt;
** Improved support for pointers in dependency analysis in eDA&lt;br /&gt;
** Improved constant propagation by using sparse conditional constant propagation algorithm&lt;br /&gt;
** Commandline interface learned to run commands from script file&lt;br /&gt;
&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
* Fixed handling of enum declarations&lt;br /&gt;
* Improved support for nested folder structures&lt;br /&gt;
* Crash in SSA algorithm&lt;br /&gt;
* Fixed automatic insertion of forward declaration when necessary&lt;br /&gt;
* Handling of ArithmeticException e.g. caused by division by zero in const propagation&lt;br /&gt;
* Fixed stack overflow in SSA algorithm caused by deep CFGs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2023.11&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2023.11 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;new-features&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== New Features ===&lt;br /&gt;
&lt;br /&gt;
* All emmtrix tools are now gathered in the emmtrix Studio framework with their own perspectives&lt;br /&gt;
** emmtrix Parallel Studio&lt;br /&gt;
** emmtrix Performance Estimator&lt;br /&gt;
*** TargetLink Extension (coming soon)&lt;br /&gt;
*** Simulink Extension (on request)&lt;br /&gt;
** emmtrix Dependency Analyzer&lt;br /&gt;
** emmtrix Code Vectorizer (coming soon)&lt;br /&gt;
** emmtrix Model Code Generator&lt;br /&gt;
** emmtrix Code Generator&lt;br /&gt;
* Windows: A portable Cygwin installation is provided to remove the need to install any additional third-party tools&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;improvements&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
&lt;br /&gt;
* Hierarchical Program View: New indicator icon for tasks with measured timing data&lt;br /&gt;
* Code Transformations: Added setting in GUI to enable/disable code transformation analysis&lt;br /&gt;
* Frontend: Print out missing include files for all processed files for easier project setup and debugging&lt;br /&gt;
* Eclipse: Update to version 2023-06&lt;br /&gt;
* EMX-LLVM: Update to version 230901&lt;br /&gt;
* Added support for alias attribute (e.g. &amp;lt;code&amp;gt;__attribute__((alias(&amp;amp;quot;name&amp;amp;quot;)))&amp;lt;/code&amp;gt;) for functions and variables&lt;br /&gt;
* InstructionSimplifier trafo: Added the following simplifications:&lt;br /&gt;
** &amp;lt;code&amp;gt;const ? a : b&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;0 - x&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;-x&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;x [-&amp;amp;amp;^|/%] x&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;x [+-] (-y)&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;x [-+] y&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;(-x) + y&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;y - x&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;x [*/] (-1)&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;-x&amp;lt;/code&amp;gt;&lt;br /&gt;
* ExplicitCastInserter trafo: Added trafo to insert explicit type casts in expressions where implicit casts are performed&lt;br /&gt;
** &amp;lt;code&amp;gt;if (expr)&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;if ((_Bool)expr)&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;float_var = 10&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;float_var = (float)10&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;ptr_to_long_int + char&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;ptr_to__long_int + (int)char&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;bool_var * unsigned_long_var&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;(unsigned long)bool_var * unsigned_long_var&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;0 ? bool_var : vol_int_var&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;(_Bool)0 ? (volatile int)bool_var : vol_int_var&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;func_call(signed_int_var + long_double_var)&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;func_call((long double)signed_int_var + long_double_var)&amp;lt;/code&amp;gt;&lt;br /&gt;
* Simulink viewer: Improved usability&lt;br /&gt;
** Added sliders for larger models&lt;br /&gt;
** Added labels for simple blocks (e.g. sum, product)&lt;br /&gt;
** Improved contrast of background colors&lt;br /&gt;
** Improved positioning of labels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;bugfixes&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Parallelization: Fixed generation of inconsistent ids from send/recv calls&lt;br /&gt;
* Parallelization: Detect variable length arrays as unsupported and clustered&lt;br /&gt;
* Fixed wrong reordering of declarations for automatic merging of blocks&lt;br /&gt;
* Fixed access analysis of function call arguments including &amp;lt;code&amp;gt;&amp;amp;amp;&amp;lt;/code&amp;gt; and structs&lt;br /&gt;
* Fixed crash caused by struct field passed as pointer to function&lt;br /&gt;
* Project Wizard got stuck during project creation&lt;br /&gt;
* Performance Estimation: Fixed bug with LLVM IR based estimation and multiple source files&lt;br /&gt;
* Bugfix for handling custom paths replacing the system paths&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;emmtrix-parallel-studio-release-notes&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= emmtrix Parallel Studio Release Notes =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2022.10&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2022.10 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;improvements-1&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
&lt;br /&gt;
* Added support for GCC extension [https://gcc.gnu.org/onlinedocs/gcc/Statement-Exprs.html statement expressions]&lt;br /&gt;
* Update EMX-LLVM tools to release 2022.11.18&lt;br /&gt;
* Added separate template files for “Parallel Tests” (independent from sequential test template)&lt;br /&gt;
* Eclipse: Updated to version 2022.06&lt;br /&gt;
* Added setting to specify the path for EMX-LLVM tools&lt;br /&gt;
* Added new transformation to convert &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; loops to &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; loops&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;bugfixes-1&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Avoid false duplication of functions&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2022.07&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2022.07 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;new-features-1&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== New Features ===&lt;br /&gt;
&lt;br /&gt;
* Added support for assembly-based performance estimation&lt;br /&gt;
** Added option to enable assembly-based performance estimation in advanced settings&lt;br /&gt;
** Supporting Tricore using HighTec GCC compiler (tricore-gcc)&lt;br /&gt;
** Supporting ARM Cortex-A7 using [https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads ARM GNU Toolchain]&lt;br /&gt;
** Updated target defintions with assembler performance estimation&lt;br /&gt;
* Added new disassembly view with traceability between HTG and C source code&lt;br /&gt;
** Generating &amp;lt;code&amp;gt;assembly.asmmodel&amp;lt;/code&amp;gt; file storing disassembly and mapping information&lt;br /&gt;
** Disassembly view: Added disassembly view (AsmEditor) for &amp;lt;code&amp;gt;assembly.asmmodel&amp;lt;/code&amp;gt; files that displays disassembly information&lt;br /&gt;
** Disassembly view: Option to display timing information from assembly-based performance information&lt;br /&gt;
** Disassembly view: Option to reorder basic blocks to better match the order within the source file&lt;br /&gt;
** Disassembly view: Automatically highlighting the C source line in a corresponding editor if the caret is changed to an assembly instruction&lt;br /&gt;
** Disassembly view: Automatically highlighting the assembly instruction in a corresponding disassembly view if the caret is changed to a C expression&lt;br /&gt;
** HTG view: Added new &amp;lt;code&amp;gt;ASM&amp;lt;/code&amp;gt; button to open disassembly view&lt;br /&gt;
** HTG view: Automatically highlighting the assembly instructions within disassembly view if a HTG node is selected&lt;br /&gt;
** Currently supports Infineon AURIX and ARM Cortex-A7&lt;br /&gt;
* Performance estimation workflow&lt;br /&gt;
** Added new GUI elements to handle performance estimation to workflow&lt;br /&gt;
** Generation of HTML report with information on function level&lt;br /&gt;
** Added support for loading timing data from simulation and hardware&lt;br /&gt;
* Added support for LLVM-IR-based performance estimation&lt;br /&gt;
** Independent from target compiler&lt;br /&gt;
** Example target specification available for Infineon AURIX TC3xx&lt;br /&gt;
* Added new code sinking transformation&lt;br /&gt;
** The transformation moves assign statements to positions where it is executed less frequently&lt;br /&gt;
** A threshold value is given that specifies the minimum reduction factor for the execution count (threshold)&lt;br /&gt;
* Added new loop-invariant code motion transformation&lt;br /&gt;
** The transformation moves only statements by default&lt;br /&gt;
** It optionally moves sub-expressions by creating temporary variables (sub_exprs=1)&lt;br /&gt;
** It optionally reorders invariant expressions by applying the commutative and associative laws (reorder=1)&lt;br /&gt;
** It includes an built-in test about the number of moved expressions (expected_moved_exprs)&lt;br /&gt;
* Added checksum based upgrade mechanism for &amp;lt;code&amp;gt;target&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;template&amp;lt;/code&amp;gt; folders&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;improvements-2&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
&lt;br /&gt;
* Template processing: Added variables &amp;lt;code&amp;gt;C_FILES_PROCESSED&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;C_FILES_ADDITIONAL&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;C_FILES_TOCOMPILE&amp;lt;/code&amp;gt;&lt;br /&gt;
* CPP2C: Supporting projects with multiple *.cpp files&lt;br /&gt;
* Active project management&lt;br /&gt;
** GUI: Project list in workflow view now has an empty entry to deselect any project&lt;br /&gt;
** Bugfix: The active project is now stored explicitly in the workspace to avoid any ambiguity&lt;br /&gt;
** Bugfix: Fixed detection of changes to projects (rename, import, copy, etc.)&lt;br /&gt;
* Improved WhileToFor transformation with better detection of step and init code&lt;br /&gt;
* Improved loop unrolling transformation by adding support for declarations, unknown number of exections, returns and breaks&lt;br /&gt;
* C library: Supporting &amp;lt;code&amp;gt;va_start&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;va_end&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;va_arg&amp;lt;/code&amp;gt; of stdarg.h&lt;br /&gt;
* Improved trip count calculation of for loops by using local constant propagation&lt;br /&gt;
* Improved check for unsupported C constructs that will be automatically clustered&lt;br /&gt;
** Switch case constructs (that are not converted to if)&lt;br /&gt;
** Double pointers: e.g. &amp;lt;code&amp;gt;int **a&amp;lt;/code&amp;gt;&lt;br /&gt;
** Do while loops&lt;br /&gt;
** Goto statements&lt;br /&gt;
** Functions with multiple return paths (no return or one return at the end is allowed)&lt;br /&gt;
** Loops (for, while, do while) with continue&lt;br /&gt;
** Loops (for, while, do while) with break&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;bugfixes-2&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Parallel code generation: Header file &amp;lt;code&amp;gt;_emx_main.h&amp;lt;/code&amp;gt; was included multiple times&lt;br /&gt;
* Control-To-Goto: Fixed conversion of short-circuit operations within variable initialization&lt;br /&gt;
* Bugfix: Constant propagation with pointers&lt;br /&gt;
* Fixed issues with generation of temporary variables&lt;br /&gt;
* Fixed some GUI related bugs (avoid unnecessary exceptions)&lt;br /&gt;
* Fixed some bugs in the parallel performance estimation (wrong calculation of loops)&lt;br /&gt;
* Fixed Linux related bugs (paths, executable flags)&lt;br /&gt;
* Fixed Run on MATLAB and compare&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;other&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Other ===&lt;br /&gt;
&lt;br /&gt;
* Removed TWIG template support&lt;br /&gt;
* ePS is now using Java 17, required files for Windows and Linux are integrated&lt;br /&gt;
* Release is based on Eclipse 2022.03&lt;br /&gt;
* Update eCG to release from 29/04/22&lt;br /&gt;
* Update CPP2C to release from 29/07/22&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2022.04&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2022.04 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;new-features-2&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== New Features ===&lt;br /&gt;
&lt;br /&gt;
* Transformations:&lt;br /&gt;
** Introduced VarSplit transformation for splitting an array variable into multiple variables&lt;br /&gt;
** Introduced FuncPtrResolve transformation for replacing indirect function calls by if-then-else constructs&lt;br /&gt;
** Introduced &amp;lt;code&amp;gt;InstructionSimplifier&amp;lt;/code&amp;gt; transformation to simplify expressions by applying neutral and zero element optimizations&lt;br /&gt;
** Transformations can now track the reason the analysis failed&lt;br /&gt;
* Standard header files now available in template folder (&amp;lt;code&amp;gt;standard_includes&amp;lt;/code&amp;gt;) and can be edited by the user&lt;br /&gt;
* Introduced new file management (epsfiles.txt)&lt;br /&gt;
** Input files are now defined in the file &amp;lt;code&amp;gt;sources/epsfiles.txt&amp;lt;/code&amp;gt; which follows the syntax of [https://git-scm.com/docs/gitattributes .gitattributes] files&lt;br /&gt;
** It supports the following attributes&lt;br /&gt;
*** &amp;lt;code&amp;gt;action=[none|process|compile|copy]&amp;lt;/code&amp;gt;: Defines what ePS is doing with the file&lt;br /&gt;
**** &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt; or no attribute is ignoring the file&lt;br /&gt;
**** &amp;lt;code&amp;gt;compile&amp;lt;/code&amp;gt; is copying and compiling the file to output folder&lt;br /&gt;
**** &amp;lt;code&amp;gt;copy&amp;lt;/code&amp;gt; is only copying the file to output folder&lt;br /&gt;
**** &amp;lt;code&amp;gt;process&amp;lt;/code&amp;gt; is processing (reading and writing) the C source file by ePS&lt;br /&gt;
*** &amp;lt;code&amp;gt;template=[twig|ftl]&amp;lt;/code&amp;gt;: The file is processed by the specified template engine. A corresponding file extension is removed.&lt;br /&gt;
*** &amp;lt;code&amp;gt;c_preprocess&amp;lt;/code&amp;gt;: The source file is preprocessed through a C/C++ preprocessor&lt;br /&gt;
*** &amp;lt;code&amp;gt;codegen=[eCG|eCPP2C]&amp;lt;/code&amp;gt;: Code generation is applied to the source file&lt;br /&gt;
**** &amp;lt;code&amp;gt;eCG&amp;lt;/code&amp;gt; runs emmtrix Code Generator on the MATLAB or Scilab file&lt;br /&gt;
**** &amp;lt;code&amp;gt;eCPP2C&amp;lt;/code&amp;gt; runs emmtrix C++ to C Compiler on C++ source files&lt;br /&gt;
** Source file status is shown in Project Explorer as specified in epsfiles.txt&lt;br /&gt;
** Default epsfiles.txt file can be created via context menu in Project Explorer or in the Project Settings dialog&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;improvements-3&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
&lt;br /&gt;
* Target platforms:&lt;br /&gt;
** Added Tasking template for the Aurix TC397 platform&lt;br /&gt;
** Added hardware model of SPC58ECxx (PowerPC e200z4 dual-core)&lt;br /&gt;
* Vectorization transformation (still experimental)&lt;br /&gt;
** Improved support for array subscripts with linear memory access pattern&lt;br /&gt;
** Improved source code appearance after vectorization&lt;br /&gt;
** Supporting array subscripts with indexed memory access pattern&lt;br /&gt;
** Supporting vectorization of loops containing unvectorizable expressions&lt;br /&gt;
** Supporting vectorization of simple sub-functions&lt;br /&gt;
** Supporting &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; loops with non-constant iteration count&lt;br /&gt;
** Supporting memory accesses with indirection operator (e.g. &amp;lt;code&amp;gt;*(p+1) = ...&amp;lt;/code&amp;gt;)&lt;br /&gt;
** Supporting &amp;lt;code&amp;gt;?:&amp;lt;/code&amp;gt; operators, generic for loop initialization and non-vectorized local variables&lt;br /&gt;
* Performance estimation: Consider duration of variable initialization and ignoring constant expressions&lt;br /&gt;
* GUI: Changed format of exceptions dialog&lt;br /&gt;
* C library: Added header &amp;lt;code&amp;gt;arpa/inet.h&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;sys/socket.h&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;netinet/in.h&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;netdb.h&amp;lt;/code&amp;gt;&lt;br /&gt;
* Improved support for wide character string and char literals&lt;br /&gt;
* Supporting array size calculation of designated array initializers&lt;br /&gt;
* Performance estimation: Set default to 1 cycle per instruction when no data is available&lt;br /&gt;
* EpsProject: Include directories are relativized if they are part of the project&lt;br /&gt;
* CodeGeneration: Replicate input folder structure&lt;br /&gt;
* Added node context menu to Hierarchical Program View to export task dependencies in DOT or CSV format&lt;br /&gt;
* LLVM tools: Update to release from 27/04/2022&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;bugfixes-3&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Crash caused by &amp;lt;code&amp;gt;if (a = func() == 3)&amp;lt;/code&amp;gt;&lt;br /&gt;
* Frontend: Crash in type compatibility check when variable was redeclared after struct was redeclared&lt;br /&gt;
* Parallel code generation: Missing function prototypes of parallelized functions&lt;br /&gt;
* ParallelCodeGeneration: ‘sources’ folder is now correctly added to the includes&lt;br /&gt;
* Fixed OS-dependent path name that could cause one C file being parsed multiple times&lt;br /&gt;
* Frontend: Crash caused by two nested C99 for loops without curly brackets, e.g. &amp;lt;code&amp;gt;for (int i=0; i&amp;amp;lt;10; ++i) for (int i2; i2&amp;amp;lt;10; ++i2) ...&amp;lt;/code&amp;gt;&lt;br /&gt;
* Function duplication did not consider static variables&lt;br /&gt;
* Type deduction of function pointers&lt;br /&gt;
* Frontend: Improved error handling of false C code (e.g. case outside switch)&lt;br /&gt;
* Fixed executable flags for Linux&lt;br /&gt;
* Type deduction failed for address operator on &amp;lt;code&amp;gt;_Bool&amp;lt;/code&amp;gt; variable&lt;br /&gt;
* Performance estimation: Wrong warning: Assuming default number of iterations&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2022.01.a&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2022.01.a ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;improvements-4&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
&lt;br /&gt;
* Parallelization: Automatic scheduler avoids any schedules that causes slowdowns&lt;br /&gt;
* Parallelization: Functions with unsupported use of pointers are automatically clustered and will not be falsely parallelized&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;bugfixes-4&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Fixed errors with libraries math.h and errno.h&lt;br /&gt;
* Fixed bugs related to incompatible types&lt;br /&gt;
* Compilation error caused by conflict between user-defined macros (e.g. &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;) and winnt.h&lt;br /&gt;
* Fixed prompt for workspace selection at startup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2022.01&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2022.01 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;new-features-3&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== New Features ===&lt;br /&gt;
&lt;br /&gt;
* Added initial vectorization support for Aurix TC4xx PPU&lt;br /&gt;
** VectorizeTrafo: Added trafo for vectorizing a simple &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; loop into platform-independent vector code (alpha)&lt;br /&gt;
*** No check is performed that the vectorized code will be correct&lt;br /&gt;
*** Unsupported constructs are not detected beforehand. Instead, an exception is thrown during application&lt;br /&gt;
*** Supporting only simple array variable constructs of &amp;lt;code&amp;gt;a[i]&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; is the &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; iterator variable) or &amp;lt;code&amp;gt;a[j1]...[j2][i]&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;j1 ... j2&amp;lt;/code&amp;gt; must be loop invariant)&lt;br /&gt;
*** Supporting vectorization of reduction variables, e.g. &amp;lt;code&amp;gt;for (i=0; i&amp;amp;lt;N; ++i) i += a[i];&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Supporting predicated vector instructions&lt;br /&gt;
*** Supporting optional padding of array variables to eliminate predicated vector instructions&lt;br /&gt;
** TargetPlatform: &amp;lt;code&amp;gt;host_win32&amp;lt;/code&amp;gt; supports code generation of platform-independent vector code by using a template-based library for vector types and functions&lt;br /&gt;
** TargetPlatform: Added two “Aurix TC4xx Parallel Processing Unit” platforms with Tasking and Synopsys PPU compiler support&lt;br /&gt;
*** Supporting simulator code generation with cycle-approximate performance measurement&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;improvements-5&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
&lt;br /&gt;
* Supporting &amp;lt;code&amp;gt;long double&amp;lt;/code&amp;gt; in our libc math.h&lt;br /&gt;
* Added ConstPropagationTrafo transformation for applying constant propagation to a function&lt;br /&gt;
* Improved replacement of inc/dec (e.g. &amp;lt;code&amp;gt;++&amp;lt;/code&amp;gt;) and compound assign (e.g. &amp;lt;code&amp;gt;+=&amp;lt;/code&amp;gt;) operators&lt;br /&gt;
** Supports correct handling of volatile variables&lt;br /&gt;
** Resolution within array/struct initializers was not working (e.g. &amp;lt;code&amp;gt;int i1[] = { x++ };&amp;lt;/code&amp;gt;)&lt;br /&gt;
** Resolution within variable initialization could switch the order of statements (e.g. &amp;lt;code&amp;gt;int i1 = x++; int i2 = x;&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Target platforms: Added &amp;lt;code&amp;gt;char16_t&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;char32_t&amp;lt;/code&amp;gt; types and supporting macros&lt;br /&gt;
* Improved support for running code on target platforms&lt;br /&gt;
* Documentation: Added section about CLI&lt;br /&gt;
* Documentation: Set Cygwin 64 bit as only supported version&lt;br /&gt;
* Added support for selecting the target compiler affecting the macros and types used to parse the source code&lt;br /&gt;
** Settings: Added compiler combo box into general settings&lt;br /&gt;
** TargetPlatform: &amp;lt;code&amp;gt;microarchitecture.xml&amp;lt;/code&amp;gt;: Added &amp;lt;code&amp;gt;Compilers&amp;lt;/code&amp;gt; section&lt;br /&gt;
* Switched to Eclipse 2021-09&lt;br /&gt;
* Improved switch-to-if converter&lt;br /&gt;
* Added initial support for designated array range initializers (&amp;lt;code&amp;gt;[first ... last] = value&amp;lt;/code&amp;gt;) (see [https://gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html designated inits])&lt;br /&gt;
* Added optional function de-duplication pass (can be activated in advanced settings)&lt;br /&gt;
* Preserving all function, variable and type declarations and their original order within C file&lt;br /&gt;
* Flow: Improved monitor output (warning/error display) and added subtasks&lt;br /&gt;
* Multiple performance improvements for large projects (&#039;&#039;e.g. performance estimation works well with 1 mio lines of code&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;bugfixes-5&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Invalid function arguments after parallelization&lt;br /&gt;
* Parallelized function returned result on wrong core&lt;br /&gt;
* Duplication of &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; loops with declarations generated incorrect code&lt;br /&gt;
* Communication was not working with pointer variables&lt;br /&gt;
* Communication was placed after return statements&lt;br /&gt;
* Multiple transfers of same variable with same ID&lt;br /&gt;
* Fixed handling of large call trees&lt;br /&gt;
* Crash in SSATraversal caused by recursive functions with pointer parameters&lt;br /&gt;
* Memory leaks&lt;br /&gt;
* Avoiding “Too many arguments to function” warning for implicit functions&lt;br /&gt;
* Array size calculation of &amp;lt;code&amp;gt;array[ENUMERATOR]&amp;lt;/code&amp;gt; is now working&lt;br /&gt;
* COutput: -(-1) was output as –1&lt;br /&gt;
* Fixed analysis of for loops where the loop variable is modified before the for loop&lt;br /&gt;
* Pragmas outside of functions are preserved in the correct order&lt;br /&gt;
* Fixed output of forward-declared structs, unions and enums&lt;br /&gt;
* Merging two composite blocks could lead to two variables using the same name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2021.09.a&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2021.09.a ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;new-features-4&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== New Features ===&lt;br /&gt;
&lt;br /&gt;
* Added pass to use a preprocessor (e.g. gcc or clang) on C code before it is used in ePS&lt;br /&gt;
* Integrated AUTOSAR file parsing based on the Artop library&lt;br /&gt;
* Added calculation of confidence level for performance estimation&lt;br /&gt;
* Added support for a configuration file to add pragmas without changing the source code&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;improvements-6&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
&lt;br /&gt;
* Added basic support for:&lt;br /&gt;
** function pointers&lt;br /&gt;
** recursive functions&lt;br /&gt;
** designated array initializers&lt;br /&gt;
** designated struct/union initializers&lt;br /&gt;
** compound assignment operators&lt;br /&gt;
** C11 style anonymous enum/struct/union definitions embedded in other type definitions&lt;br /&gt;
** incomplete data types (according to C standard)&lt;br /&gt;
* Separated settings for sequential and parallel platform tests&lt;br /&gt;
* Added new functionalities to CLI:&lt;br /&gt;
** Configuration of projects&lt;br /&gt;
** Control over passes to run&lt;br /&gt;
* Improved traceability of input to output source code lines&lt;br /&gt;
* Added generation of log files for each pass that capture all output from the console&lt;br /&gt;
* Project files are now stored compressed to save space&lt;br /&gt;
* Reworked the status messages of the flow&lt;br /&gt;
* Improved profile-guided execution counts of for loops&lt;br /&gt;
* Added more information to properties view of HTG representation&lt;br /&gt;
* Switched file structure for parallelization constraints to reduce the number of required entries&lt;br /&gt;
* Added Infineon TC387 platform&lt;br /&gt;
* Made the analysis for transformations more robust&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;bugfixes-6&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Crash for arguments with pointer case (e.g. (void*) arg)&lt;br /&gt;
* Crash with function calls used in variable initialization&lt;br /&gt;
* Assertion caused by repeated function declarations in one translation unit&lt;br /&gt;
* Various conflicting types errors&lt;br /&gt;
* Wrong placement of global variables&lt;br /&gt;
* Typedef redefinition was always reported as error&lt;br /&gt;
* Function declaration and implementation of different but compatible function types caused errors&lt;br /&gt;
* Fixed several issues with files not being closed correctly in the GUI&lt;br /&gt;
* Fixed error in size calculation in recursive structs&lt;br /&gt;
* Propagation of absolute number of executions over function calls&lt;br /&gt;
* Errors in duplication of function calls&lt;br /&gt;
* Detection of recursive function calls in unused functions&lt;br /&gt;
* Type deduction was wrong in many cases (e.g. &amp;lt;code&amp;gt;enum&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;++&amp;lt;/code&amp;gt;)&lt;br /&gt;
* void-cast of function call caused incorrect code&lt;br /&gt;
* Removed automic inclusion of System32 folder in path on Windows&lt;br /&gt;
* Fixed bug with PATH variable on Windows&lt;br /&gt;
* Fixed path separation on Linux&lt;br /&gt;
* Wrong messages about assignments to constant variables&lt;br /&gt;
* Fixed layout of advanced settings page&lt;br /&gt;
* Renamed _emx_main.c to _emx_t_main.c to avoid conflicts with sources named main.c&lt;br /&gt;
* Functions called via function pointers/references were considered unused&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2021.06&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2021.06 ==&lt;br /&gt;
&lt;br /&gt;
* Added line information for warning “Variable is defined externally”&lt;br /&gt;
* Code generation: Added supported for generating inline assembler&lt;br /&gt;
* ConsistencyChecker: Introduced different levels of strictness and added corresponding project setting&lt;br /&gt;
* DepChainAnalysis: Added reason to warning if a function could not be analyzed&lt;br /&gt;
* Frontend / Model / Code generation: Supporting switch case expressions to contain generic instructions (e.g. enumerators) instead of just integers&lt;br /&gt;
* Frontend: Added support for inline assembler&lt;br /&gt;
* Frontend: Handling of null statements improved (especially if labeled or within empty body blocks) HTG: Adding task clusters for goto instructions&lt;br /&gt;
* Hardware support: Added the optimized ringbuffer communication models ringbuf_fixed_fork (the new default) and ringbuf_fixed_thread based on the existing Aurix optimized ringbuffer implementation&lt;br /&gt;
* Hardware support: Implemented new communication API:EMXAPI prefix replaced with EMX, Added functions to send and receive float and double types, Values to be sent/received by scalar communication functions are now passed by value and as the return value, Argument order changed so that the first four arguments of all functions are: src, dst, id and index, followed by value/buffer arguments when present&lt;br /&gt;
* Hardware support: Renamed communication model names ringbuf-&amp;amp;gt;ringbuf_fork and singlecopy_sharedmem-&amp;amp;gt;ringbuf_thread&lt;br /&gt;
* Product: Updated provided JRE on linux to 11.0.11&lt;br /&gt;
* Wizard: Added communication test example project&lt;br /&gt;
* Bugfix: Custom paths were not considered for executing external tools&lt;br /&gt;
* Bugfix: DepChainAnalysis: Fixed crash if a function was not duplicated&lt;br /&gt;
* Bugfix: ExtractMain transformation: Converting function to main was not working if the calling function was not main&lt;br /&gt;
* Bugfix: Fixed handling of the size of alias types&lt;br /&gt;
* Bugfix: Fixed some problems related to BasicBlock file locations&lt;br /&gt;
* Bugfix: Frontend / Code Generation: Handling of case blocks with { } was not working&lt;br /&gt;
* Bugfix: Frontend: Correct placement of pragmas in front of labels&lt;br /&gt;
* Bugfix: GUI: Re-initialize compiler defaults when project settings is changed&lt;br /&gt;
* Bugfix: SSA: Crash in SSATraversal caused by incorrect usedef detection of parameters&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2021.03a&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2021.03a ==&lt;br /&gt;
&lt;br /&gt;
* Code generation: Template processing is deleting template files directly after processing&lt;br /&gt;
* DepChainAnalysis: Added XML output (depchainanalysis.xml)&lt;br /&gt;
* DepChainAnalysis: Bugfix: Function calls with unused return value were broken&lt;br /&gt;
* Flow: Introduced source template processing of &#039;&#039;.ftl and &#039;&#039;.twig files. An option was added in general settings to enable that feature.&lt;br /&gt;
* GUI: Source template GUI option now also added for non-C inputs and defaults to disabled&lt;br /&gt;
* Performance estimation: Refactored BBDurationProvider and BBDurationEstimator&lt;br /&gt;
* Performance estimation: Refactored procedure call overhead&lt;br /&gt;
* Settings: Improved handling of false root procedures&lt;br /&gt;
* Supporting EMX_EXTRACTMAIN pragma to trigger extract main transformation. The extract main trafo uses the pragma to apply the transformation after all other transformations.&lt;br /&gt;
* Template processing: Introduced generic project-based variables&lt;br /&gt;
* Trafo: Added loop interchange transformation&lt;br /&gt;
* Bugfix: C Frontend: Pragma placement&lt;br /&gt;
* Bugfix: Crash in case of unary operator within while condition&lt;br /&gt;
* Bugfix: Exception caused by loop analyzer in case of reverse “for” loop&lt;br /&gt;
* Bugfix: Fixed several GUI and flow errors&lt;br /&gt;
* Bugfix: ParallelPostCodeGen: Fixed check for empty source folders list&lt;br /&gt;
* Bugfix: Parameters no longer removed from function without body&lt;br /&gt;
* Bugfix: Project wizard stored wrong String in .properties for InputLanguage&lt;br /&gt;
* Bugfix: TargetPlatform: GUI was broken in case a software platform was missing&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2021.03&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2021.03 ==&lt;br /&gt;
&lt;br /&gt;
* Added GUI mechanism to insert timing instructions around functions and at blocks marked with pragmas&lt;br /&gt;
* Bugfix: CDT Frontend: Variable declaration in the middle could produce wrong code&lt;br /&gt;
* Bugfix: Dangling exception with AliasType&lt;br /&gt;
* Bugfix: GUI: Project wizard was broken for empty workspaces&lt;br /&gt;
* Bugfix: GUI: the presence of a file without extension inside the ECG output folder caused an exception in C2MMapper&lt;br /&gt;
* Bugfix: HTG: Crash caused by a too deep HTG&lt;br /&gt;
* Bugfix: Indirection (dereference) as function call argument&lt;br /&gt;
* Bugfix: PaddingPragmaHandler: EMX_PADDING pragma is working across function boundaries&lt;br /&gt;
* Bugfix: Parallel Code Generation: Return assignment check failed for non-duplicated functions&lt;br /&gt;
* Bugfix: Remove unused functions setting was broken&lt;br /&gt;
* Bugfix: Scheduler: Root function forcibly clustered due to multiple returns are handled correctly&lt;br /&gt;
* Bugfix: Scheduler: exception caused by main function with multiple return statements&lt;br /&gt;
* Bugfix: Size deduction from variable initialization was broken for global variables&lt;br /&gt;
* Bugfix: The analysis failed in case a variable was available only as an external declaration. A warning is now issued in that case.&lt;br /&gt;
* Bugfix: incorrect view when switching between input languages&lt;br /&gt;
* DepChainAnalysis: Improved dependency chain analysis to take repeating function calls into account and added delay suffix for each dependency&lt;br /&gt;
* DepChainAnalysis: Supporting analysis of function calls&lt;br /&gt;
* DepChainAnalysis: Supporting control dependency calculation&lt;br /&gt;
* DepChainAnalysis: Supporting functions with return parameters&lt;br /&gt;
* Eclipse: Switched to version 2021.03&lt;br /&gt;
* Flow view: removed unnecessary methods for button state restores&lt;br /&gt;
* Flow: Introduced lambda-based CallNormalizer that reimplements the old functionality to move every call into its own basic block&lt;br /&gt;
* Flow: Output of eMCG is now stored in generated_files&lt;br /&gt;
* Frontend: Added C correctness checks&lt;br /&gt;
* GUI: Added button to generate transformed code&lt;br /&gt;
* GUI: Added indicator of execution frequency to block representation in HTG view&lt;br /&gt;
* GUI: Added tab in properties view for displaying source code&lt;br /&gt;
* GUI: Anti and output dependencies are not rendered if they are between tasks on different cores&lt;br /&gt;
* GUI: Children of blocks are scaled to make sure they fit into the parent&lt;br /&gt;
* GUI: HTG and Scheduler view: Added support for bringing up the context menu using the keyboard&lt;br /&gt;
* GUI: HTG and Scheduler view: Fixed a bug that caused invalid behavior when focus was lost during mouse drag&lt;br /&gt;
* GUI: HTG and Scheduler view: Made selection behavior more consistent with standard windows selection behavior&lt;br /&gt;
* GUI: HTG: Changing ecg_decisions.ini file only if the content changed. That prevents unnecessary eCG runs.&lt;br /&gt;
* GUI: The length of THEN/ELSE blocks is scaled according to their execution frequency&lt;br /&gt;
* GeCoS: Deleted several unused classes&lt;br /&gt;
* ParallelCodeGeneration: Leaving non-parallelized functions unchanged&lt;br /&gt;
* ParallelCodeGeneration: Removed user includes from _emx_main.h&lt;br /&gt;
* Performance estimation: Brought back execution frequency assumptions in case code cannot be analyzed&lt;br /&gt;
* Performance estimation: Changed perf test platform to aurix_tc397_kit&lt;br /&gt;
* Performance estimation: Improved LLVM profiling provider to handle nested control constructs and while loops&lt;br /&gt;
* Settings: Added setting to disable consistency checking&lt;br /&gt;
* Settings: Moved host profiling settings from advanced to general&lt;br /&gt;
* Settings: Supporting &amp;lt;Makefile&amp;gt; placeholder in compile command settings that is replaced by Makefile or Makefile.gen (whatever exists)&lt;br /&gt;
* Supporting &amp;lt;code&amp;gt;#pragma EMX_PADDING &amp;amp;lt;pad&amp;amp;gt;&amp;lt;/code&amp;gt; pragma to increase the size of the last dimension of an array to a multiple of &amp;lt;code&amp;gt;pad&amp;lt;/code&amp;gt;&lt;br /&gt;
* TargetPlatform: Supporting run command specification in software platform (e.g. &amp;lt;code&amp;gt;&amp;amp;lt;Run command=&amp;amp;quot;make sim&amp;amp;quot;/&amp;amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
* TargetPlatform: Supporting specification of compile settings in software platform&lt;br /&gt;
* TargetPlatform: Used software platform description for parallel testing&lt;br /&gt;
* Templates: Added EMXAPI_SyncCores and EMXAPI_GetCore API functions&lt;br /&gt;
* Templates: Converted timing template to use FTL instead of macros&lt;br /&gt;
* Trafo: Added ExtractMain transformation&lt;br /&gt;
* Trafo: Added ObfuscationTrafo to make identifiers obscure&lt;br /&gt;
* Trafo: Added function inline transformation&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2020.12&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2020.12 ==&lt;br /&gt;
&lt;br /&gt;
* Added Apache FreeMarker (.ftl file extension) as additional template language&lt;br /&gt;
* Flow GUI: Parsing the C source code is now a pass&lt;br /&gt;
* Switched to Eclipse-2020-09&lt;br /&gt;
* HTG and properties view: Displaying call overhead&lt;br /&gt;
* Scheduler / Performance estimation: Refactored procedure call overhead calculation/handling&lt;br /&gt;
* GUI: refactored eCG and ePS view to use same base&lt;br /&gt;
* AURIX: Implemented high-performance communication library using statically determined absolute addresses&lt;br /&gt;
* AURIX: Added new combined template for TC297 and TC397&lt;br /&gt;
* Parallel Code Generation: Implement feature to convert functions to static (Parallelization settings, activated by default)&lt;br /&gt;
* Performance estimation: Reworked calculation of call overhead&lt;br /&gt;
* Added post-placement communication optimization by moving send as early and recv as late as possible (Advanced setting, deactived by default)&lt;br /&gt;
* Most important bug fixes:&lt;br /&gt;
** Bugfix: Return type of parallelized functions&lt;br /&gt;
** Bugfix: Pragma-controlled clustering (&amp;lt;code&amp;gt;EMX_TASK_CLUSTER&amp;lt;/code&amp;gt;) of tasks was broken&lt;br /&gt;
** Bugfix: &amp;lt;code&amp;gt;EMX_TASK_ALLOC&amp;lt;/code&amp;gt; pragmas appeared in generated code&lt;br /&gt;
** Bugfix: Linux: Issue with short task names on task termination&lt;br /&gt;
** Bugfix: Preserving static keyword and name of static global variables&lt;br /&gt;
** Bugfix: Fixed support for &amp;lt;code&amp;gt;EMX_INITCODE&amp;lt;/code&amp;gt; pragma&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2020.06&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2020.06 ==&lt;br /&gt;
&lt;br /&gt;
* emmtrix project wizard now can import multiple C files&lt;br /&gt;
* Fixed handling of C projects without main function&lt;br /&gt;
* Introduced new indicators for status of passes&lt;br /&gt;
* Reworked handling of compiler settings&lt;br /&gt;
* Switched to internal pass infrastructure&lt;br /&gt;
* Switched to Eclipse version 2020-03&lt;br /&gt;
* Switched from Jasva 8 to Java 11&lt;br /&gt;
* Bugfix: CDTFrontend crashed for “for (;;) {}” loops [TS]&lt;br /&gt;
* TargetPlatform: Added support for additional function information (funcinfo.xml)&lt;br /&gt;
* Bugfix: Fixed template of MBA5728&lt;br /&gt;
* Added option to disable removal of unsused functions&lt;br /&gt;
* Added option to disable reordering of tasks&lt;br /&gt;
* Added option to parse of C files in eCG output folder&lt;br /&gt;
* Bugfix: Fixed generation of functions with simple declarations&lt;br /&gt;
* Removed enforced option “-B” for sequential tests&lt;br /&gt;
* Added handling of include directories&lt;br /&gt;
* Added button to parse C code in C projects&lt;br /&gt;
* Fixed various bugs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2019.11.07&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2019.11.07 ==&lt;br /&gt;
&lt;br /&gt;
* Fixed definition of custom paths&lt;br /&gt;
* Several bug fixes regarding global variables&lt;br /&gt;
* Several bug fixes regarding parameters of parallelized functions&lt;br /&gt;
* Improved generation of OpenCL code&lt;br /&gt;
* Improved handling of static keyword&lt;br /&gt;
* Fixed bug in analysis of data dependencies&lt;br /&gt;
* Several other minor bug fixes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2019.03.20&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2019.03.20 ==&lt;br /&gt;
&lt;br /&gt;
* Support for array of structs in emmtrix Code Generator&lt;br /&gt;
* Various improvements for data type selection in eCG&lt;br /&gt;
* Fixed bug that might cause parallel execution of passes within ePS&lt;br /&gt;
* Added option to set C macros for C workflow&lt;br /&gt;
* Improved error messages from CDTFrontend&lt;br /&gt;
* Redesigned SSH password and confirmation dialog&lt;br /&gt;
* Fixed various bugs related to C code input&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2018.08.09&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2018.08.09 ==&lt;br /&gt;
&lt;br /&gt;
* Support for Linux. We have tested it under Xubuntu 18.04. Since it is the first version for Linux, additional bugs compared to Windows cannot be excluded.&lt;br /&gt;
* Customization of the target platform: a target folder is automatically generated in the project folder, in which the various files for the target platform are located. Here e.g. timings for library functions can be stored. More details can be found in the ePS User Guide (just click on Parallel Studio Help in the tool).&lt;br /&gt;
* Support for software templates: in the generated subfolder “template” files can be stored that are to be used for building the parallel code. In addition, existing files can be customized for specific projects and templates can be filled in dynamically using Jtwig (http://jtwig.org/). Again, more details can be found in the ePS User-Guide&lt;br /&gt;
* Improved C support: processing of generic C code (e.g. with structs and switch cases) has been improved&lt;br /&gt;
* Static performance analysis has been reworked. Estimated times from previous versions may differ especially in nested structures. With the new method, it is no longer necessary that the input code is executed on the host system. Instead, all values are calculated as far as possible and otherwise populated with default values.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2017.07.04&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2017.07.04 ==&lt;br /&gt;
&lt;br /&gt;
* Restructured settings&lt;br /&gt;
* Removed option of eCG to mimic the output of MATLAB&lt;br /&gt;
* Integrated automatic consistency checker into the flow&lt;br /&gt;
** Model consistency&lt;br /&gt;
** Order consistency&lt;br /&gt;
** Schedule checker (times, containment, order)&lt;br /&gt;
* Unified video interfaces across all platforms&lt;br /&gt;
* Switched to Eclipse Oxygen&lt;br /&gt;
* Removed support for GeCoS scripts&lt;br /&gt;
* Improved sequential testing for C flow&lt;br /&gt;
* Simplified support of parallelization of functions with pointer parameters&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Fixed scheduler crash with function prototypes that omit parameter names&lt;br /&gt;
* Updated instruction performance for Cortex-A7 and Cortex-A15 on ODROID XU4&lt;br /&gt;
* Fixed a bug that could cause the tabular communication cost model to assign transfer costs for same-core transfers&lt;br /&gt;
* Fixed a bug that prevented to correctly derive a tabular communication cost models when multiple commtable files where present for the same target platform (affected heterogeneous architectures only)&lt;br /&gt;
* Analysis results are integrated into a node’s property view&lt;br /&gt;
* Fixed support for emx_task_alloc and emx_task_cluster pragmas: pragmas now take precedence over allocation made in the GUI or via the constraint settings JSON file&lt;br /&gt;
* Various fixes and improvements regarding user decisions&lt;br /&gt;
* Fixed a bug that would cause user decisions that were not changed in the current session to be removed from ecg_decisions.ini upon save of the file&lt;br /&gt;
* corrected calculation of start and finish times of for loops&lt;br /&gt;
* Fixed display of loops that are mapped to multiple cores&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2017.03.23&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2017.03.23 ==&lt;br /&gt;
&lt;br /&gt;
* Added Simulink Model Viewer, which currently supports:&lt;br /&gt;
** display of top level of model&lt;br /&gt;
** descend to sub block by double clicking on block&lt;br /&gt;
** block hover and selection&lt;br /&gt;
** history: Back/Forward/Home to model root&lt;br /&gt;
** zoom: 0,25 - 2.00 using toolbar or mouse wheel&lt;br /&gt;
* Support Simulink models&lt;br /&gt;
* HLS: Added synchronization for FPGA accelerators&lt;br /&gt;
* Fixed receive of pipe communication&lt;br /&gt;
* Enabled basic testing of C code in the C based flow&lt;br /&gt;
* Improved error handling when accessing projects/settings&lt;br /&gt;
* HLS: Added software interface generation for custom IP&lt;br /&gt;
* HLS: Added IP insertion into template Vivado project and bitstream generation&lt;br /&gt;
* HLS: Improved error handling and reporting&lt;br /&gt;
* Added video support for FriendlyARM NanoPi M3&lt;br /&gt;
* UnifyParameters now adds names to all unnamed function parameters&lt;br /&gt;
* Improved upgrade capabilities of project wizard&lt;br /&gt;
** automatic deletion of old epsproject and properties files&lt;br /&gt;
** generation of new epsproject and properties files&lt;br /&gt;
* Added Properties view to eCG and ePS perspective&lt;br /&gt;
* Added pass to place the eCG decision pragmas at parent blocks&lt;br /&gt;
* Improved error handling of update decision job&lt;br /&gt;
* Improved error handling of script execution&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2017.03.08&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2017.03.08 ==&lt;br /&gt;
&lt;br /&gt;
* Added support for Aurix FreeRTOS template and compiler script&lt;br /&gt;
* Added support for individual compiler settings for sequential, parallel and platform tests. These include:&lt;br /&gt;
** pre-/post-build bash script execution&lt;br /&gt;
** customization of CFLAG and LDFLAG&lt;br /&gt;
** customization of environment variables&lt;br /&gt;
* Improved support for handling of external files&lt;br /&gt;
* Improved support of __cplusplus define&lt;br /&gt;
* Added platform description for NanoPI M3 (S5P6818 Quad-Core Cortex-A53 1.4 GHz)&lt;br /&gt;
* Added platform description attribute “active” that determines whether a description is loaded/an available target platform&lt;br /&gt;
* HLS: improved the result checker to ensure compatability with Vivado HLS&lt;br /&gt;
* HLS: improved error checking of synthesis progress&lt;br /&gt;
* HLS: code refactoring and miscellaneous minor fixes&lt;br /&gt;
* Scheduler View: set minimal width of blocks to one pixel to improve placement of data dependencies&lt;br /&gt;
* Scheduler View: removed gaps beetween adjacent blocks to better reflect the blocks’ actual runtime&lt;br /&gt;
* Scheduler View: block selection markers are now drawn after blocks, so that they may not be overlapped by adjacent blocks anymore&lt;br /&gt;
* HTG View: moved information about from right pane to the properties view&lt;br /&gt;
* HTG View: added button to show the property view&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2016.27.01&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2016.27.01 ==&lt;br /&gt;
&lt;br /&gt;
* emmtrix Technologies GmbH was founded&lt;br /&gt;
[[Category:emmtrix Tools]]&lt;/div&gt;</summary>
		<author><name>Oliver.Wolf.EMX</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=TC4x_PPU_Coverage_Analysis&amp;diff=2745</id>
		<title>TC4x PPU Coverage Analysis</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=TC4x_PPU_Coverage_Analysis&amp;diff=2745"/>
		<updated>2025-06-30T07:52:07Z</updated>

		<summary type="html">&lt;p&gt;Oliver.Wolf.EMX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;During development of a library for the [[Infineon AURIX TC4x Parallel Processing Unit (PPU)]], we had to fulfil safety-critical process requirements (ISO 26262, ASPICE).  &lt;br /&gt;
One key deliverable was proof of structural code coverage for every safety-relevant unit test.&lt;br /&gt;
&lt;br /&gt;
Traditional host-based coverage tools (e.g. gcov, llvm-cov) assume that the code under test can be built and run natively on the host. Because PPU kernels are developed in a C dialect (Vector C Code) containing PPU-specific SIMD instructions, compiling and executing tests on the host was impossible.&lt;br /&gt;
&lt;br /&gt;
We therefore created a coverage workflow that runs the compiled PPU binary inside the PPU simulator.&lt;br /&gt;
&lt;br /&gt;
==Simulation-Based Coverage Workflow==&lt;br /&gt;
[[File:Example HTML coverage report.png|thumb|Example HTML coverage report for PPU]]&lt;br /&gt;
&lt;br /&gt;
Unlike classic host-based coverage methods, we &#039;&#039;&#039;do not rely on code instrumentation&#039;&#039;&#039;. Instead, the PPU simulator itself provides detailed trace data of &#039;&#039;&#039;every instruction executed&#039;&#039;&#039; during each test run. This ensures that coverage is measured directly on the final machine code without modifying the binary.&lt;br /&gt;
&lt;br /&gt;
Our implementation utilizes &#039;&#039;&#039;TASKING SmartCode&#039;&#039;&#039; for compiling the PPU code and the &#039;&#039;&#039;Synopsys ARC nSIM Instruction Set Simulator&#039;&#039;&#039; for executing the tests. This setup allows for precise tracking of executed instructions and branches during simulation.&lt;br /&gt;
&lt;br /&gt;
Our coverage process follows a simple &#039;&#039;&#039;three-step workflow&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Record per-test coverage&#039;&#039;&#039;  Each unit test is executed inside the PPU simulator, which generates raw coverage data indicating all executed instructions and branches for that single test.&lt;br /&gt;
# &#039;&#039;&#039;Merge results&#039;&#039;&#039;  After all tests have run, we merge the individual coverage data into one consolidated dataset representing the entire project’s coverage.&lt;br /&gt;
# &#039;&#039;&#039;Generate an HTML report&#039;&#039;&#039;  The merged coverage data is converted into a human-readable HTML report, allowing developers and quality engineers to review overall coverage levels and identify untested code areas down to the source line.&lt;br /&gt;
&lt;br /&gt;
This approach ensures that our coverage analysis is:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Target-accurate&#039;&#039;&#039;, because it is based on the real PPU machine code&lt;br /&gt;
* &#039;&#039;&#039;Non-intrusive&#039;&#039;&#039;, since it requires no code changes or instrumentation&lt;br /&gt;
* &#039;&#039;&#039;Fully automatable&#039;&#039;&#039;, integrating seamlessly into our CI/CD pipelines&lt;br /&gt;
* [[File:HTML report vector code.png|thumb|Example HTML coverage report for vectorized C code for PPU]]&#039;&#039;&#039;Generically extensible&#039;&#039;&#039;, allowing adaptation to other toolchains and simulators beyond the current setup&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[Infineon AURIX TC4x]]&lt;br /&gt;
* [[Infineon AURIX TC4x Parallel Processing Unit (PPU)]]&lt;br /&gt;
* [[emmtrix Code Vectorizer]]&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc4x/ Infineon’s AURIX™ TC4x family of microcontrollers]&lt;br /&gt;
* [https://www.tasking.com/products/smartcode/ TASKING SmartCode]&lt;br /&gt;
* [https://www.synopsys.com/dw/ipdir.php?ds=sim_nsim Synopsys ARC® nSIM Instruction Set Simulator]&lt;br /&gt;
&lt;br /&gt;
[[Category:emmtrix Tools]]&lt;/div&gt;</summary>
		<author><name>Oliver.Wolf.EMX</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=File:HTML_report_vector_code.png&amp;diff=2744</id>
		<title>File:HTML report vector code.png</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=File:HTML_report_vector_code.png&amp;diff=2744"/>
		<updated>2025-06-30T07:51:07Z</updated>

		<summary type="html">&lt;p&gt;Oliver.Wolf.EMX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Example HTML coverage report for vectorized C code&lt;/div&gt;</summary>
		<author><name>Oliver.Wolf.EMX</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=TC4x_PPU_Coverage_Analysis&amp;diff=2741</id>
		<title>TC4x PPU Coverage Analysis</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=TC4x_PPU_Coverage_Analysis&amp;diff=2741"/>
		<updated>2025-06-27T14:04:40Z</updated>

		<summary type="html">&lt;p&gt;Oliver.Wolf.EMX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;During development of a library for the [[Infineon AURIX TC4x Parallel Processing Unit (PPU)]], we had to fulfil safety-critical process requirements (ISO 26262, ASPICE).  &lt;br /&gt;
One key deliverable was proof of structural code coverage for every safety-relevant unit test.&lt;br /&gt;
&lt;br /&gt;
Traditional host-based coverage tools (e.g. gcov, llvm-cov) assume that the code under test can be built and run natively on the host. Because PPU kernels are developed in a C dialect (Vector C Code) containing PPU-specific SIMD instructions, compiling and executing tests on the host was impossible.&lt;br /&gt;
&lt;br /&gt;
We therefore created a coverage workflow that runs the compiled PPU binary inside the PPU simulator.&lt;br /&gt;
&lt;br /&gt;
==Simulation-Based Coverage Workflow==&lt;br /&gt;
Unlike classic host-based coverage methods, we &#039;&#039;&#039;do not rely on code instrumentation&#039;&#039;&#039;. Instead, the PPU simulator itself provides detailed trace data of &#039;&#039;&#039;every instruction executed&#039;&#039;&#039; during each test run. This ensures that coverage is measured directly on the final machine code without modifying the binary.&lt;br /&gt;
&lt;br /&gt;
Our coverage process follows a simple &#039;&#039;&#039;three-step workflow&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Record per-test coverage&#039;&#039;&#039; Each unit test is executed inside the PPU simulator, which generates raw coverage data indicating all executed instructions and branches for that single test.&lt;br /&gt;
# &#039;&#039;&#039;Merge results&#039;&#039;&#039;  After all tests have run, we merge the individual coverage data into one consolidated dataset representing the entire project’s coverage.&lt;br /&gt;
# &#039;&#039;&#039;Generate an HTML report&#039;&#039;&#039;  The merged coverage data is converted into a human-readable HTML report, allowing developers and quality engineers to review overall coverage levels and identify untested code areas down to the source line.&lt;br /&gt;
&lt;br /&gt;
This approach ensures that our coverage analysis is:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Target-accurate&#039;&#039;&#039;, because it is based on the real PPU machine code&lt;br /&gt;
* &#039;&#039;&#039;Non-intrusive&#039;&#039;&#039;, since it requires no code changes or instrumentation&lt;br /&gt;
* &#039;&#039;&#039;Fully automatable&#039;&#039;&#039;, integrating seamlessly into our CI/CD pipelines&lt;br /&gt;
[[File:Example HTML coverage report.png|thumb|Example HTML coverage report]]&lt;br /&gt;
[[Category:emmtrix Tools]]&lt;/div&gt;</summary>
		<author><name>Oliver.Wolf.EMX</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=File:Example_HTML_coverage_report.png&amp;diff=2739</id>
		<title>File:Example HTML coverage report.png</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=File:Example_HTML_coverage_report.png&amp;diff=2739"/>
		<updated>2025-06-27T14:04:07Z</updated>

		<summary type="html">&lt;p&gt;Oliver.Wolf.EMX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Example HTML coverage report with covered parts marked in green and lines that were not covered marked in red.&lt;/div&gt;</summary>
		<author><name>Oliver.Wolf.EMX</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Function_Duplication&amp;diff=2725</id>
		<title>Function Duplication</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Function_Duplication&amp;diff=2725"/>
		<updated>2025-06-12T09:30:31Z</updated>

		<summary type="html">&lt;p&gt;Oliver.Wolf.EMX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &#039;&#039;&#039;function duplication transformation&#039;&#039;&#039;  also known as function cloning is a technique commonly used in program optimization, parallelization, and analysis to &#039;&#039;&#039;create multiple copies of a function&#039;&#039;&#039;, each tailored to a specific context or use case. This approach allows for greater flexibility in optimizing or analyzing the function based on how it&#039;s used.&lt;br /&gt;
&lt;br /&gt;
= Description =&lt;br /&gt;
Function duplication copies an existing function every time the function is called from a different part of the code. Each copy is marked with a _duplicate_&amp;lt;n&amp;gt; suffix to show that multiple versions of the function exist. The additional copies allow individual analysis like constant propagation for each time the function is called.&lt;br /&gt;
&lt;br /&gt;
== When is it applied ==&lt;br /&gt;
&lt;br /&gt;
* When a function is not marked as inline. However, functions called from inline functions may still be copied if all other conditions are met.&lt;br /&gt;
* When a function is called more than once&lt;br /&gt;
* When the implementation of a function is available&lt;br /&gt;
* When the function call is on the call graph started by the root function. Additional calls from functions which are not part of this call graph don&#039;t cause any additional copies.&lt;br /&gt;
&lt;br /&gt;
= Where is it useful =&lt;br /&gt;
&lt;br /&gt;
* Static performance estimation of each call allows for more accurate estimation with its context (parameters and their values, memory usage...)&lt;br /&gt;
* Parallelization on different uses depending on the load of all cores during the call&lt;br /&gt;
* In combination with constant propagation it can provide improved results for the dependency analysis&lt;br /&gt;
[[Category:Code Transformation]]&lt;/div&gt;</summary>
		<author><name>Oliver.Wolf.EMX</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Function_Duplication&amp;diff=2724</id>
		<title>Function Duplication</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Function_Duplication&amp;diff=2724"/>
		<updated>2025-06-12T09:29:44Z</updated>

		<summary type="html">&lt;p&gt;Oliver.Wolf.EMX: Created page with &amp;quot;A &amp;#039;&amp;#039;&amp;#039;function duplication transformation&amp;#039;&amp;#039;&amp;#039;  also known as function cloning is a technique commonly used in program optimization, parallelization, and analysis to &amp;#039;&amp;#039;&amp;#039;create multiple copies of a function&amp;#039;&amp;#039;&amp;#039;, each tailored to a specific context or use case. This approach allows for greater flexibility in optimizing or analyzing the function based on how it&amp;#039;s used.  = Description = Function duplication copies an existing function every time the function is called from a dif...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &#039;&#039;&#039;function duplication transformation&#039;&#039;&#039;  also known as function cloning is a technique commonly used in program optimization, parallelization, and analysis to &#039;&#039;&#039;create multiple copies of a function&#039;&#039;&#039;, each tailored to a specific context or use case. This approach allows for greater flexibility in optimizing or analyzing the function based on how it&#039;s used.&lt;br /&gt;
&lt;br /&gt;
= Description =&lt;br /&gt;
Function duplication copies an existing function every time the function is called from a different part of the code. Each copy is marked with a _duplicate_&amp;lt;n&amp;gt; suffix to show that multiple versions of the function exist. The additional copies allow individual analysis like constant propagation for each time the function is called.&lt;br /&gt;
&lt;br /&gt;
== When is it applied ==&lt;br /&gt;
&lt;br /&gt;
* When a function is not marked as inline. However, functions called from inline functions may still be copied if all other conditions are met.&lt;br /&gt;
* When a function is called more than once&lt;br /&gt;
* When the implementation of a function is available&lt;br /&gt;
* When the function call is on the call graph started by the root function. Additional calls from functions which are not part of this call graph don&#039;t cause any additional copies.&lt;br /&gt;
&lt;br /&gt;
= Where is it useful =&lt;br /&gt;
&lt;br /&gt;
* Static performance estimation of each call allows for more accurate estimation with its context (parameters and their values, memory usage...)&lt;br /&gt;
* Parallelization on different uses depending on the load of all cores during the call&lt;br /&gt;
* In combination with constant propagation it can provide improved results for the dependency analysis&lt;/div&gt;</summary>
		<author><name>Oliver.Wolf.EMX</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Constant_Propagation&amp;diff=2721</id>
		<title>Constant Propagation</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Constant_Propagation&amp;diff=2721"/>
		<updated>2025-06-03T06:47:38Z</updated>

		<summary type="html">&lt;p&gt;Oliver.Wolf.EMX: Oliver.Wolf.EMX moved page Constant Propagation to Constant Propagation Transformation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Constant Propagation Transformation]]&lt;/div&gt;</summary>
		<author><name>Oliver.Wolf.EMX</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Constant_Propagation_Transformation&amp;diff=2720</id>
		<title>Constant Propagation Transformation</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Constant_Propagation_Transformation&amp;diff=2720"/>
		<updated>2025-06-03T06:47:38Z</updated>

		<summary type="html">&lt;p&gt;Oliver.Wolf.EMX: Oliver.Wolf.EMX moved page Constant Propagation to Constant Propagation Transformation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Constant Propagation Transformation}}&lt;br /&gt;
&lt;br /&gt;
Constant propagation is an optimization technique used in compilers to improve execution efficiency by replacing variables with known constant values during compilation. If an expression consists entirely of constants or previously propagated values, it is evaluated at compile time and replaced with its computed result. This transformation reduces runtime computations, simplifies code, and enables further optimizations by minimizing unnecessary variable assignments. By eliminating redundant calculations, constant propagation enhances program performance while preserving its original behavior.&lt;br /&gt;
==Constant Propagation Transformation in emmtrix Studio==&lt;br /&gt;
emmtrix Studio implements constant propagation using #pragma directives or via the GUI. Constant propagation is a transformation that propagates all known variable values within the block it is applied to. If an expression consists of propagated values and of constants, it will itself be evaluated and replaced with its constant value.&lt;br /&gt;
&lt;br /&gt;
All arithmetic operations for integral types are supported. Interprocedural propagation, i.e. propagating into and out of function calls, is partially supported.&lt;br /&gt;
&lt;br /&gt;
===Typical Usage and Benefits===&lt;br /&gt;
Constant propagation is typically used to generate a clearer code, to reduce complexity for dependency analysis and increase potential for better optimization possibilities.&lt;br /&gt;
===Example===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/* The following code tests constant propagation applied to main function. &lt;br /&gt;
 * In the given example, variables a, b and c are known. &lt;br /&gt;
 * They are propagated to the rest of the body of main.&lt;br /&gt;
 */   &lt;br /&gt;
&lt;br /&gt;
#pragma EMX_TRANSFORMATION ConstPropagation&lt;br /&gt;
int main(void) {&lt;br /&gt;
    int a = 2;&lt;br /&gt;
    int b = a;&lt;br /&gt;
    &lt;br /&gt;
    int c, d;&lt;br /&gt;
    c = 2 + 2;&lt;br /&gt;
    d = b + c;&lt;br /&gt;
    &lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/* The following code is the generated code after the transformation has been applied.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
int main(void) {&lt;br /&gt;
    int a = 2;&lt;br /&gt;
    int b = a;&lt;br /&gt;
    int c;&lt;br /&gt;
    int d;&lt;br /&gt;
    &lt;br /&gt;
    c = 4;&lt;br /&gt;
    d = 6;&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Parameters ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Id&lt;br /&gt;
!Possible Values&lt;br /&gt;
!Default Value&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;global&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;true, false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|Determines whether the constant propagation should work across function boundaries&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;modify_nonstatic_functions&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;true, false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|Determines whether the constant propagation may modify non-static functions. This should be used with care as it might be illegal if not all call-sites of the non-static functions are known.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;remove_dead_blocks&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;no, defensive, aggressive&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;no&amp;lt;/code&amp;gt;&lt;br /&gt;
|Determines whether parts of the code that are unreachable after constant propagation should be removed. The &amp;lt;code&amp;gt;aggressive&amp;lt;/code&amp;gt; variant might seldomly insert additional &amp;lt;code&amp;gt;goto&amp;lt;/code&amp;gt; statements in cases where the&amp;lt;code&amp;gt;defensive&amp;lt;/code&amp;gt; variant rather keeps some unreachable parts of the code to avoid &amp;lt;code&amp;gt;goto&amp;lt;/code&amp;gt; statements.&lt;br /&gt;
|}&lt;br /&gt;
[[Category:Code Transformation]]&lt;/div&gt;</summary>
		<author><name>Oliver.Wolf.EMX</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Main_Page&amp;diff=2715</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Main_Page&amp;diff=2715"/>
		<updated>2025-05-22T12:45:20Z</updated>

		<summary type="html">&lt;p&gt;Oliver.Wolf.EMX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
Welcome to the emmtrix Technologies Wiki. As a company with a deep-rooted passion for compilers, we specialize in source-to-source compilers designed to analyze, optimize and transform your code. This Wiki aims to offer detailed, technical background information that complements the tools and resources available on our official website. Here, you&#039;ll find in-depth explanations, usage guidelines, and insights into the engineering behind our specialized software solutions. Whether you&#039;re a developer or a technically-inclined enthusiast, this space is designed to deepen your understanding of what makes our tools essential for your projects.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;padding: 10px&amp;quot;&lt;br /&gt;
| style=&amp;quot;vertical-align: top; padding: 10px;&amp;quot; |&lt;br /&gt;
=== emmtrix Products ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
* [[emmtrix Studio Release Notes]]&lt;br /&gt;
* emmtrix Parallel Studio&lt;br /&gt;
* [[emmtrix Performance Estimator]]&lt;br /&gt;
** [[Mapping TargetLink generated C code back to Simulink blocks]]&lt;br /&gt;
* [[emmtrix Dependency Analyzer]]&lt;br /&gt;
* [[emmtrix Code Vectorizer]]&lt;br /&gt;
* [[emmtrix C++ to C Compiler]]&lt;br /&gt;
** [https://online-ecpp2c.emmtrix.com emmtrix C++ to C Compiler Online]&lt;br /&gt;
* [[:Category:emmtrix Studio FAQ|FAQ]]&lt;br /&gt;
* [[emmtrix Code Generator]] (discontinued)&lt;br /&gt;
* [[emmtrix Model Code Generator]] (discontinued)&lt;br /&gt;
| style=&amp;quot;vertical-align: top; padding: 10px;&amp;quot; |&lt;br /&gt;
=== Supported Architectures ===&lt;br /&gt;
* [[TriCore Instruction Set Architecture]]&lt;br /&gt;
** [[Infineon AURIX TC2xx]]&lt;br /&gt;
** [[Infineon AURIX TC3xx]]&lt;br /&gt;
** [[Infineon AURIX TC4x]], including [[Infineon AURIX TC4x Parallel Processing Unit (PPU)|Parallel Processing Unit (PPU)]]&lt;br /&gt;
* ... and many more&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Compiler Background ===&lt;br /&gt;
&lt;br /&gt;
* [[Loop Transformations]]&lt;br /&gt;
* [[:Category:Code Transformation]]&lt;br /&gt;
*[[Demystifying C++]]&lt;br /&gt;
*[[The alias Attribute|The alias attribute]]&lt;br /&gt;
*[[Clang Diagnostics Overview]]&lt;br /&gt;
*[[:Category:Clang Diagnostics]]&lt;br /&gt;
&lt;br /&gt;
=== Other Topics ===&lt;br /&gt;
* [[C to Z3 Cheat Sheet]]&lt;br /&gt;
* [[Eclipse Xcore Cheat Sheet]]&lt;br /&gt;
* [[Logical Execution Time (LET)]]&lt;br /&gt;
* [[ULP Difference of Float Numbers]]&lt;br /&gt;
* [[Automatic C to Rust Translation]]&lt;/div&gt;</summary>
		<author><name>Oliver.Wolf.EMX</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC3xx&amp;diff=2612</id>
		<title>Infineon AURIX TC3xx</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC3xx&amp;diff=2612"/>
		<updated>2025-03-25T14:44:46Z</updated>

		<summary type="html">&lt;p&gt;Oliver.Wolf.EMX: /* emmtrix Tools for AURIX TC3xx */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:AURIX TC399 LFBGA-516 plain.jpg|thumb|&#039;&#039;Infineon AURIX™ TC3xx second-generation microcontroller (TC399 BGA package). The AURIX TC3xx family integrates multiple TriCore CPUs and on-chip safety/security modules for automotive applications.&#039;&#039; ]]&lt;br /&gt;
The &#039;&#039;&#039;Infineon AURIX TC3xx&#039;&#039;&#039; (Automotive Realtime Integrated neXt-generation architecture) is a family of 32-bit automotive microcontrollers introduced as the second generation of Infineon’s AURIX platform. Launched in 2016 as a successor to the earlier [[Infineon AURIX TC2xx|AURIX TC2xx series]], the TC3xx devices emphasize high performance, functional safety, and embedded security for advanced automotive and industrial applications. AURIX TC3xx microcontrollers feature a hexa-core [[TriCore Instruction Set Architecture|&#039;&#039;TriCore&#039;&#039; processor architecture]] with enhanced safety measures, making them well-suited for demanding tasks such as autonomous driving domain controllers, powertrain control, and sensor data fusion in advanced driver-assistance systems (ADAS). The combination of multiple CPU cores, extensive on-chip memory, and a rich peripheral set allows TC3xx chips to deliver real-time responsiveness and reliability in safety-critical environments while meeting stringent automotive standards (such as ISO 26262 for functional safety).&amp;lt;ref name=&amp;quot;ref1951907555&amp;quot;&amp;gt;Safety Microcontrollers: Texas Instruments Hercules vs Infineon AURIX https://www.linkedin.com/pulse/safety-microcontrollers-texas-instruments-hercules-vs-cook-meng-miet&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref1428109010&amp;quot;&amp;gt;AURIX™ microcontroller TC3xx family of Infineon fuels automated driving and electromobility - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2016/INFATV201610-005.html&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref1948477695&amp;quot;&amp;gt;32-bit TriCore™ AURIX™– TC3xx - Infineon Technologies https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc3xx/&amp;lt;/ref&amp;gt;&lt;br /&gt;
==Applications==&lt;br /&gt;
AURIX TC3xx microcontrollers are used in a variety of safety-critical and high-performance applications across the automotive and industrial sectors. Key application domains include:&lt;br /&gt;
*&#039;&#039;&#039;Automotive Systems:&#039;&#039;&#039; The TC3xx family was primarily designed for automotive use and finds broad application in vehicles’ electronic control units (ECUs). Notably, it is used in &#039;&#039;powertrain and drivetrain control&#039;&#039; (engine management, transmission control, hybrid/electric vehicle inverter control, battery management) where its real-time processing and resilience support precise actuator control. It is also deployed in &#039;&#039;chassis and safety systems&#039;&#039; such as anti-lock braking systems (ABS), electronic stability control, airbag controllers, and electric power steering, leveraging its redundancy and fast response for fail-safe operation. With the growth of ADAS and autonomous driving, AURIX TC3xx devices serve as domain controllers for &#039;&#039;ADAS sensor fusion&#039;&#039;, handling data from radar, LiDAR, camera, and ultrasonic sensors and performing environment modeling and decision-making algorithms. Their combination of multiple cores and a built-in radar signal processing sub-system makes them an attractive choice for tasks like front radar processing, sensor fusion hubs, and &#039;&#039;autonomous driving domain controllers&#039;&#039; that must meet ASIL-D safety levels.&amp;lt;ref name=&amp;quot;ref14281090102&amp;quot;&amp;gt;AURIX™ microcontroller TC3xx family of Infineon fuels automated driving and electromobility - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2016/INFATV201610-005.html&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref572781451&amp;quot;&amp;gt;Safety Joins Performance: Infineon Introduces Automotive Multicore 32-bit Microcontroller Family AURIX™ to Meet Safety and Powertrain Requirements of Upcoming Vehicle Generations - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2012/INFATV201205-040.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Industrial Automation and Robotics:&#039;&#039;&#039; Infineon has also positioned the AURIX family for use in industrial applications that demand high reliability. The TC3xx MCUs, with their hardware self-test mechanisms and safety documentation, can be found in &#039;&#039;industrial motor drives, robotics controllers, and PLCs (programmable logic controllers)&#039;&#039;, where they help achieve functional safety certifications up to SIL-3 (according to IEC 61508). The powerful TriCore cores and rich peripheral set enable complex motor control algorithms (e.g., field-oriented control for servo motors) and real-time sensor processing in factory automation. Additionally, the support for automotive-grade networking (CAN/CAN-FD, Ethernet) and timing peripherals makes them suitable for synchronous control in robotics and machinery. Infineon’s provision of AUTOSAR-compatible software for AURIX has even facilitated its use in non-automotive settings such as medical devices and elevator controllers, where proven safety and security are required.&amp;lt;ref name=&amp;quot;ref496771205&amp;quot;&amp;gt;Infineon&#039;s AURIX™ &amp;amp; TRAVEO™ microcontroller families extend their support for IEC 61508 hardware and software metrics enabling industrial safety up to SIL-3 - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2023/INFATV202303-078.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Aerospace and Defense:&#039;&#039;&#039; The high fault-tolerance and deterministic performance of the AURIX TC3xx architecture also attract interest for aerospace and other mission-critical uses. In avionics systems or autonomous drones, for instance, the lockstep core configuration and robust error checking of AURIX can provide an added layer of reliability for flight control computers or navigation systems. While primarily an automotive chip, its ability to operate in harsh conditions (−40°C to 150°C range) and to detect internal failures in real-time makes it viable for certain aerospace electronic systems. Some defense and aerospace projects leverage COTS (commercial off-the-shelf) automotive components like AURIX for applications such as unmanned vehicle control and high-reliability communication links, given its safety pedigree. (In these domains, additional analysis and possibly radiation testing would be performed if the devices are used in high-altitude or space environments.)&lt;br /&gt;
== Architecture Overview ==&lt;br /&gt;
[[File:Infineon TC3xx Architecture.webp|545x545px|thumb]]&lt;br /&gt;
=== Processor Cores and Architecture===&lt;br /&gt;
The AURIX TC3xx family implements Infineon’s TriCore™ architecture, which uniquely combines aspects of RISC microcontrollers, DSP (digital signal processor) capabilities, and conventional microprocessor features into a single core design. Each TC3xx device can include up to six independent TriCore 32-bit CPU cores (TriCore version 1.6.2), all capable of running at up to 300 MHz clock frequency. Four of these cores can operate in dual-core lockstep pairs (with one core acting as a redundant checker for its partner) to provide fault detection for safety-critical functions. The TriCore cores use a superscalar Harvard architecture with 32-bit instruction words (and support for mixed 16/32-bit instruction encoding for code density). Each core includes a dedicated Floating Point Unit (FPU) for single-precision arithmetic and supports DSP-oriented instructions (e.g. single-cycle 16×16 MAC operations, SIMD for 16-bit/8-bit data) to accelerate signal processing tasks. For fast real-time performance, the architecture offers low interrupt latency (with automatic context save on-chip) and features like zero-overhead loops and a programmable peripheral timer unit for scheduling tasks. In total, a high-end TC3xx (such as the TC39x) provides six 300 MHz cores plus four checker cores, yielding a theoretical processing throughput of up to ~2400 DMIPS (Dhrystone MIPS) when all cores are utilized. This represents roughly a threefold increase in computational power over the previous AURIX generation (which achieved ~740 DMIPS with three cores).&amp;lt;ref name=&amp;quot;ref19484776952&amp;quot;&amp;gt;32-bit TriCore™ AURIX™– TC3xx - Infineon Technologies https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc3xx/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref2022357806&amp;quot;&amp;gt;UDE Debug, Trace and Test solutions for Infineon TriCore™ AURIX™ TC32, TC33, TC35, TC36, TC37, TC38, TC39, TC3x Microcontrollers       https://www.pls-mc.com/products/infineon-tricore-aurix-tc32-tc33-tc35-tc36-tc37-tc38-tc39-microcontrollers/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref14281090103&amp;quot;&amp;gt;AURIX™ microcontroller TC3xx family of Infineon fuels automated driving and electromobility - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2016/INFATV201610-005.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
===Memory Subsystem and Cache===&lt;br /&gt;
AURIX TC3xx microcontrollers integrate a large on-chip memory system to meet real-time and safety requirements. Program flash memory sizes range up to 16 MB on the largest models, with over 6 MB of on-chip SRAM available for data and scratchpad usage. Each TriCore CPU has its own tightly-coupled local memories as well as caches: for example, each core includes a 32 KB instruction cache and a 16 KB data cache. In addition, every core has separate local RAM blocks (Harvard architecture) for instructions and data (often termed PSPR and DSPR – Program Scratch-Pad RAM and Data Scratch-Pad RAM) that allow deterministic access for time-critical routines. Shared global memory is provided via a Local Memory Unit (LMU) which can be up to several hundred kilobytes (for instance, 768 KB in the TC39x) accessible by all cores. The memory system is connected by a high-bandwidth internal bus fabric (the SRI crossbar and peripheral buses) that arbitrates access between cores, DMA engines, and peripherals. This architecture ensures that each core can quickly fetch instructions and data either from its local cache/RAM or the central memory, enabling efficient parallel processing. Memory protection hardware is also built-in to isolate tasks of different criticality, an important feature for safety and security.&amp;lt;ref name=&amp;quot;ref19484776952&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref5727814512&amp;quot;&amp;gt;Safety Joins Performance: Infineon Introduces Automotive Multicore 32-bit Microcontroller Family AURIX™ to Meet Safety and Powertrain Requirements of Upcoming Vehicle Generations - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2012/INFATV201205-040.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
===Peripherals and Interfaces===&lt;br /&gt;
One of the strengths of the AURIX TC3xx architecture is its extensive set of on-chip peripherals and interface controllers, designed to handle the complex networking and I/O needs of modern vehicles and industrial systems. Key peripheral features and interfaces include:&amp;lt;ref name=&amp;quot;ref19484776952&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref2022357806&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref14281090103&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref3635926&amp;quot;&amp;gt;AURIX Training System Architecture https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_System_Architecture-Training-v01_00-EN.pdf?fileId=5546d46272e49d2a0172eb476d56739e&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Networking Interfaces:&#039;&#039;&#039; Multiple CAN FD controllers (supporting up to 12 CAN-FD channels in high-end variants) for in-vehicle networking, with legacy CAN and LIN interfaces (up to 24 LIN channels) for lower-speed device communication. Many TC3xx devices also integrate up to two FlexRay controllers for time-triggered automotive networks (maintaining compatibility with earlier automotive communication standards). For high-bandwidth data, a Gigabit Ethernet MAC is included, enabling uses like automotive Ethernet (e.g., audio-video bridging and IP-based connectivity).&lt;br /&gt;
* &#039;&#039;&#039;Analog and Timers:&#039;&#039;&#039; A suite of analog peripherals including multiple ADC units for sensor interfacing and motor control, and DACs in some models. Sophisticated timer units are on-chip, notably the Generic Timer Module (GTM) and Capture/Compare Units (CCU6), which can generate complex PWM waveforms and handle events for engine control, power inverters, or robotics with minimal CPU intervention. These timers enable precise control of actuators (e.g. fuel injection timing, electric motor commutation) in real time.&lt;br /&gt;
*&#039;&#039;&#039;Serial Interfaces:&#039;&#039;&#039; SPI, I²C, UART/LIN and other serial interfaces for connecting to external sensors, actuator controllers, and memory. The controllers often support multiple instances (several SPI channels, etc.) to accommodate numerous devices. AURIX TC3xx also provides an external bus interface (EBU) for parallel memory or FPGA connectivity, and an SD/MMC interface (eMMC) to connect external flash memory for data logging or over-the-air update storage.&lt;br /&gt;
*&#039;&#039;&#039;Dedicated Processing Units:&#039;&#039;&#039; Some AURIX TC3xx models include special accelerators, such as a hardware Fast Fourier Transform unit (HW-FFT) and up to two Signal Processing Units (SPUs) optimized for radar signal processing. These enable the microcontroller to handle radar front-end data or other intensive DSP tasks (like Fourier transforms for radar or audio signals) on-chip, which is crucial for advanced driver assistance sensors. There is also a &#039;&#039;Security Module&#039;&#039; (covered in a later section) and a Safety Management Unit that supervise system integrity.&lt;br /&gt;
*&#039;&#039;&#039;Other On-chip Modules:&#039;&#039;&#039; Watchdog timers, error-correction coders for memories (ECC on flash and RAM for reliability), a programmable interrupt system, multiple DMA channels (up to 128 DMA channels) for efficient data movement, and debug interfaces (JTAG and a 2/3-pin DAP) for development. The on-chip debug system supports tracing of program execution (via a built-in Emulation Memory, MCDS) to aid in complex multicore software development.&lt;br /&gt;
&lt;br /&gt;
Overall, the AURIX TC3xx provides a highly integrated SoC-like platform, allowing a single chip to manage tasks ranging from powertrain control and chassis control to infotainment gateways. This high level of integration reduces the need for separate companion chips and helps to lower system complexity and cost.&lt;br /&gt;
===Performance and Benchmarking===&lt;br /&gt;
Fabricated in a 40 nm embedded flash process&amp;lt;ref name=&amp;quot;ref2022357806&amp;quot; /&amp;gt;, AURIX TC3xx processors achieve significant performance gains over prior generations while maintaining automotive-grade power efficiency. With six 32-bit cores at 300 MHz (four of them paired in lockstep), a flagship TC3xx device (e.g., TC39x) can deliver up to approximately 2,400 DMIPS of aggregate computing throughput&amp;lt;ref name=&amp;quot;ref2022357806&amp;quot; /&amp;gt;. In terms of per-core performance, the TriCore architecture yields around 1.3–2.0 DMIPS/MHz depending on the instruction mix, meaning each 300 MHz core can approach ~400–600 DMIPS in optimized scenarios&amp;lt;ref name=&amp;quot;ref14281090103&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot;&amp;gt;Infineon AURIX - Wikipedia https://en.wikipedia.org/wiki/Infineon_AURIX&amp;lt;/ref&amp;gt;. This is on par with or exceeding many contemporary 32-bit automotive MCUs. The integrated DSP extensions and optional accelerators (like the FFT unit) also enable high-speed signal processing, with Infineon citing up to ~1.8 GFLOPS of DSP throughput for certain operations&amp;lt;ref name=&amp;quot;ref1222155140&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Real-world performance improvements of the TC3xx over its predecessor are notable: for example, compared to the first-generation AURIX (which offered up to 740 DMIPS), the TC3xx’s expanded core count and clock speed provide roughly three times the computational power on the same type of workload&amp;lt;ref name=&amp;quot;ref14281090103&amp;quot; /&amp;gt;. This extra headroom allows more functions (such as running multiple control algorithms or sensor fusion tasks in parallel) to be consolidated onto one microcontroller without compromising real-time deadlines&amp;lt;ref name=&amp;quot;ref14281090103&amp;quot; /&amp;gt;. Despite the increase in speed and core count, the TC3xx family was designed with power and thermal constraints in mind, achieving these gains within similar power consumption envelopes as the previous generation by leveraging the smaller 40 nm process and power-saving features like clock gating&amp;lt;ref name=&amp;quot;ref5727814512&amp;quot; /&amp;gt;. The deterministic real-time performance (with features like lockstep and tightly-coupled memory) makes the AURIX TC3xx suitable for the most demanding automotive applications, where consistent low latency and high throughput are required simultaneously.&lt;br /&gt;
&lt;br /&gt;
== On-Chip System Connectivity and Bridges ==&lt;br /&gt;
[[File:TC3xx On-Chip System Connectivity.png|thumb|SRI Domains]]&lt;br /&gt;
The AURIX™ TC3xx Platform has three independent on-chip connectivity resources: &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;System Resource Interconnect Fabric (SRI Fabric)&#039;&#039;&#039; connects the TriCore CPUs, the DMA module, and other high bandwidth requestors to high bandwidth memories and other resources for instruction fetches and data accesses. A key component of the fabric is the SRI crossbar, which connects all the agents in one SRI domain. The SRI crossbar carries the transactions between the SRI Masters and SRI Slaves of the domain. The SRI crossbar supports parallel transactions between different SRI Master and SRI Slave agents. In addition to the parallelism of concurrent requests, it also supports pipelined requests from an SRI Master to a SRI Slave.&lt;br /&gt;
* &#039;&#039;&#039;System Peripheral Bus (SPB)&#039;&#039;&#039; connects the TriCore CPUs, the DMA module, and other SPB masters to the medium and low bandwidth peripherals. SPB masters do not directly connect to the SRI Fabric, and will access SRI attached resources via a SFI_F2S Bridge.&lt;br /&gt;
* &#039;&#039;&#039;Back Bone Bus (BBB)&#039;&#039;&#039; connects the TriCore CPUs, the DMA module, and SPB masters with ADAS resources. SRI Masters do not directly connect to the BBB, but access BBB attached resources via a SFI_S2F Bridge. SPB masters also do not directly connect to the BBB, but access BBB attached resources via bridging over the SRI Fabric.&lt;br /&gt;
&lt;br /&gt;
=== CPU Resource Access Times ===&lt;br /&gt;
These tables describe the CPU access times to various resources in CPU clock cycles for the AURIX™ TC3xx Platform. In the case of load or fetch accesses, the access times are the minimum number of CPU stall cycles to complete the access. If there is a conflict for the resource accessed, there may be additional stall cycles till the conflicting access completes. &lt;br /&gt;
&lt;br /&gt;
For write access, the access times are the maximum for a sequence of such access (non-conflicting). In many cases for a singleton access, or a short sequence, write buffering reduces the stall effect seen by a CPU, sometimes to 0. However, as with loads and fetches, if there is a conflict for the resource accessed, there may be additional stall cycles till the conflicting access completes.&lt;br /&gt;
&lt;br /&gt;
==== Access latency for global resources ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! CPU Access Type !! CPU stall cycles&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
| Data read from System Peripheral Bus (SPB) || &amp;lt;math&amp;gt;\frac{f_\text{CPU}}{f_\text{SPB}} \cdot (4 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |The final number of stall cycles will depend&amp;lt;br&amp;gt;on the real number of WS generated by the target resource.&lt;br /&gt;
|-&lt;br /&gt;
| Data write to System Peripheral Bus (SPB) || &amp;lt;math&amp;gt;\frac{f_\text{CPU}}{f_\text{SPB}} \cdot (4 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Data read from Back Bone Bus (BBB) (TC39x, TC37xED) || &amp;lt;math&amp;gt;9 + \frac{f_\text{CPU}}{f_\text{BBB}} \cdot (5 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |When SFI_S2F is connected to XBar2 (TC39x and TC37xED)&amp;lt;br&amp;gt;there is an additional latency due to access going through an S2S.&lt;br /&gt;
|-&lt;br /&gt;
| Data write to Back Bone Bus (BBB) (TC39x, TC37xED) || &amp;lt;math&amp;gt;5 + \frac{f_\text{CPU}}{f_\text{BBB}} \cdot (4 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Data read from Back Bone Bus (BBB) (TC35x, TC33xED) || &amp;lt;math&amp;gt;6 + \frac{f_\text{CPU}}{f_\text{BBB}} \cdot (5 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Data write to Back Bone Bus (BBB) (TC35x, TC33xED) || &amp;lt;math&amp;gt;3 + \frac{f_\text{CPU}}{f_\text{BBB}} \cdot (4 + \text{Module Wait State})&amp;lt;/math&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Module Wait State&#039;&#039;&#039;: The number of wait states for read and for write accesses is &amp;gt;= 1 and depends on the accessed module and its configuration.&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CPU Accesses: Stall cycles for local and SRI resources ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! CPU Access Type !! Local CPU !! Local SRI !! Remote SRI Domain&lt;br /&gt;
|-&lt;br /&gt;
| Data read from DSPR || 0 || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data write to DSPR || 0 || 5, {{rev|3|with Pipelining}}|| 5, {{rev|4|with Pipelining}}&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from DSPR || See local SRI column || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data read from DLMU || 0 || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data write to DLMU || 2 || 5, {{rev|3|with Pipelining}}|| 5, 4&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from DLMU || See local SRI column || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data read from PSPR || See local SRI column || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data write to PSPR || See local SRI column || 5, {{rev|3|with Pipelining}}|| 5, {{rev|4|with Pipelining}}&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from PSPR || 0 || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data read from PFlash || 5 + PWS || 10 + PWS || 13 + PWS&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from PFlash (buffer miss) || 2 + PWS || 9 + PWS || 12 + PWS&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from PFlash (buffer hit) || 3 || 6 || 9&lt;br /&gt;
|-&lt;br /&gt;
| Data read from LMU || n.a. || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data write to LMU || n.a. || 5, {{rev|3|with Pipelining}}|| 5, {{rev|4|with Pipelining}}&lt;br /&gt;
|-&lt;br /&gt;
| Instruction fetch from LMU || n.a. || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| Data read from DFlash || n.a. || 5 + 3*(3 + DCWS) || 8 + 3*(3 + DCWS)&lt;br /&gt;
|-&lt;br /&gt;
| Data read access from EMEM (TC39x, TC37xED) || n.a. || n.a. || 14, {{rev|15|f&amp;lt;sub&amp;gt;BBB&amp;lt;/sub&amp;gt; &amp;lt; f&amp;lt;sub&amp;gt;SRI&amp;lt;/sub&amp;gt;}}&lt;br /&gt;
|-&lt;br /&gt;
| Data write access to EMEM (TC39x, TC37xED) || n.a. || n.a. || 9&lt;br /&gt;
|-&lt;br /&gt;
| Data read access from EMEM (TC35x, TC33xED) || n.a. || 11, {{rev|12|f&amp;lt;sub&amp;gt;BBB&amp;lt;/sub&amp;gt; &amp;lt; f&amp;lt;sub&amp;gt;SRI&amp;lt;/sub&amp;gt;}}|| n.a.&lt;br /&gt;
|-&lt;br /&gt;
| Data write access to EMEM (TC35x, TC33xED) || n.a. || 9 || n.a.&lt;br /&gt;
|-&lt;br /&gt;
| Data read access from DAM || n.a. || 10 || 13&lt;br /&gt;
|-&lt;br /&gt;
| Data write access to DAM || n.a. || 7 || 7&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;small&amp;gt;&#039;&#039;&#039;Remote SRI Domain&#039;&#039;&#039;: Only applies to products with SRI extenders. Additional latency due to access going through an S2S&amp;lt;/small&amp;gt;&lt;br /&gt;
* &amp;lt;small&amp;gt;&#039;&#039;&#039;PWS&#039;&#039;&#039;: Configured PFlash Wait States (Includes cycles for PFlash access cycles only). ECC correction latency is only incurred when the incoming data requires ECC correction.&amp;lt;/small&amp;gt;&lt;br /&gt;
* &amp;lt;small&amp;gt;&#039;&#039;&#039;PWS&#039;&#039;&#039;: Configured PFlash Wait States (Includes cycles for PFlash access cycles only). ECC correction latency is only incurred when the incoming data requires ECC correction.&amp;lt;/small&amp;gt;&lt;br /&gt;
* &amp;lt;small&amp;gt;&#039;&#039;&#039;DCWS&#039;&#039;&#039;: Configured DFlash Corrected Wait States (Includes cycles for DFlash access cycles and ECC correction latency)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CPU Subsystem (CPU0 ... CPU5) ==&lt;br /&gt;
[[File:TC3xx Processor Core, Local Memory and Connectivity.png|alt=TC3xx Processor Core, Local Memory and Connectivity|thumb|Processor Core, Local Memory and Connectivity]]The Infineon AURIX TC3xx features up to 6 processor cores implementing the [[Tricore TC1.6.2 Instruction Set Architecture|TC1.6.2 instruction set architecture]]. The following section focuses on the microarchitectural details of the CPU subsystem. For more information about the ISA, please take a look at the [[Tricore Instruction Set Architecture|TC1.6.2 article]].&lt;br /&gt;
&lt;br /&gt;
The processor core connects to the following memories and bus interfaces (where implemented):&lt;br /&gt;
*Program Scratch-Pad SRAM (PSPR)&lt;br /&gt;
*Data Scratch-Pad SRAM (DSPR)&lt;br /&gt;
*Program Cache (PCache)&lt;br /&gt;
*Data Cache (DCache)&lt;br /&gt;
*Local Memory Unit (DLMU)&lt;br /&gt;
*Local Pflash bank (LPB)&lt;br /&gt;
*SRI slave interface (x2)&lt;br /&gt;
*SRI master Interface&lt;br /&gt;
*SPB master interface&lt;br /&gt;
&lt;br /&gt;
=== TC1.6.2P Implementation Features ===&lt;br /&gt;
*Most instructions executed in 1 cycle&lt;br /&gt;
*Branch instructions in 1, 2 or 3 cycles (using dynamic branch prediction)&lt;br /&gt;
*Wide memory interface for fast context switch&lt;br /&gt;
* Automatic context save-on-entry and restore-on-exit for: subroutine, interrupt, trap&lt;br /&gt;
*Six memory protection register sets&lt;br /&gt;
*Dual instruction issuing (in parallel into Integer Pipeline and Load/Store Pipeline)&lt;br /&gt;
*Third pipeline for loop instruction only (zero overhead loop)&lt;br /&gt;
*Single precision Floating Point Unit (IEEE-754 Compatible)&lt;br /&gt;
*Dedicated Integer divide unit&lt;br /&gt;
*18 data memory protection ranges, 10 code memory protection ranges arranged in 6 sets&lt;br /&gt;
&lt;br /&gt;
=== Pipeline ===&lt;br /&gt;
&lt;br /&gt;
=== Instruction Timing ===&lt;br /&gt;
&lt;br /&gt;
==Functional Safety and Security Features==&lt;br /&gt;
===Hardware Security Module and Encryption===&lt;br /&gt;
One of the defining features of the AURIX TC3xx family is its robust hardware-based security subsystem, implemented to protect against cyber threats and unauthorized manipulation of vehicle systems. Each TC3xx MCU includes a dedicated &#039;&#039;Hardware Security Module&#039;&#039; (HSM), which is essentially an on-chip co-processor with its own CPU and cryptographic engine designed to handle secure operations. In the second-generation AURIX (TC3xx), the HSM was upgraded with support for asymmetric cryptography (e.g., RSA, ECC algorithms) in hardware, providing significantly faster public-key encryption and authentication capabilities than pure software implementations. This HSM supports &#039;&#039;&#039;EVITA Full&#039;&#039;&#039; (the highest level of the EU’s EVITA automotive security requirements), meaning it can perform secure boot, message authentication, and encryption at a level suitable for protecting critical in-vehicle communications. For example, the HSM can encrypt and authenticate CAN/Ethernet messages to prevent spoofing or tampering on the vehicle network, and it can manage cryptographic keys securely isolated from the main application cores.&amp;lt;ref name=&amp;quot;ref14281090104&amp;quot;&amp;gt;AURIX™ microcontroller TC3xx family of Infineon fuels automated driving and electromobility - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2016/INFATV201610-005.html&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref20223578062&amp;quot;&amp;gt;UDE Debug, Trace and Test solutions for Infineon TriCore™ AURIX™ TC32, TC33, TC35, TC36, TC37, TC38, TC39, TC3x Microcontrollers       https://www.pls-mc.com/products/infineon-tricore-aurix-tc32-tc33-tc35-tc36-tc37-tc38-tc39-microcontrollers/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The security module enables features like &#039;&#039;&#039;secure boot&#039;&#039;&#039;, where the AURIX will only execute firmware that is digitally signed by the vehicle manufacturer, thereby preventing unauthorized or malicious code. It also facilitates &#039;&#039;over-the-air (OTA) updates&#039;&#039; in a secure manner: the TC3xx HSM can verify and decrypt update packages received via telematics, allowing firmware upgrades while protecting against attackers attempting to hijack the software. In addition, the HSM includes a true random number generator and supports protocols for immobilizer and theft protection systems. Infineon’s implementation essentially treats the HSM as an “embedded smart card” inside the microcontroller. This approach, building on Infineon’s expertise in chip card security, helps to safeguard sensitive assets like cryptographic keys and to perform secure operations (encryption, decryption, authentication) in hardware, making attacks significantly more difficult. The strong cybersecurity provisions of the AURIX TC3xx have made it a preferred choice for vehicle gateway ECUs and central body controllers, which are points of entry for connected car communications and thus high-value targets for hackers. By incorporating the HSM, automotive OEMs can implement advanced security features such as encrypted onboard communication (to thwart bus tampering) and secure diagnostics, ensuring the vehicle’s electronic data is protected against cyber threats even as cars become more connected.&amp;lt;ref name=&amp;quot;ref14281090104&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref5727814513&amp;quot;&amp;gt;Safety Joins Performance: Infineon Introduces Automotive Multicore 32-bit Microcontroller Family AURIX™ to Meet Safety and Powertrain Requirements of Upcoming Vehicle Generations - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2012/INFATV201205-040.html&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref19484776953&amp;quot;&amp;gt;32-bit TriCore™ AURIX™– TC3xx - Infineon Technologies https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc3xx/&amp;lt;/ref&amp;gt;&lt;br /&gt;
=== Functional Safety and Fault Tolerance===&lt;br /&gt;
Beyond cybersecurity, the AURIX TC3xx architecture is built with extensive &#039;&#039;functional safety&#039;&#039; features to meet the highest safety integrity levels in automotive systems. The multi-core design supports &#039;&#039;lockstep operation&#039;&#039;, where redundant checker cores run in parallel with main cores and continuously compare results cycle-by-cycle. In TC3xx devices, up to four of the six TriCore CPUs have such lockstep partner cores, allowing the microcontroller to detect any single-point CPU failure instantly (if a discrepancy arises between the core and its checker, a fault is signaled). A &#039;&#039;Safety Management Unit (SMU)&#039;&#039; is integrated on-chip to monitor various fault conditions throughout the device – it aggregates error signals from the lockstep cores, memory ECC monitors, clock/watchdog monitors, and peripheral self-tests, and can initiate safe-state actions (like resetting the chip or signaling an error pin to an external supervisor) if a critical fault is detected. The AURIX safety concept also includes a distributed Memory Protection Unit (MPU) arrangement, with multiple memory protection contexts that prevent errant or malicious code from writing to wrong memory areas. This helps contain faults and eases the integration of software with mixed criticality (Infineon allows partitioning software components of different ASIL levels on the same MCU while keeping them isolated).&amp;lt;ref name=&amp;quot;ref14281090104&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref5727814513&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref19519075552&amp;quot;&amp;gt;Safety Microcontrollers: Texas Instruments Hercules vs Infineon AURIX https://www.linkedin.com/pulse/safety-microcontrollers-texas-instruments-hercules-vs-cook-meng-miet&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Crucially, the TC3xx family was developed according to ISO 26262 processes and can achieve &#039;&#039;&#039;ASIL-D&#039;&#039;&#039; (Automotive Safety Integrity Level D), the highest grade for automotive functional safety. Compared to a traditional dual-core lockstep approach, the AURIX’s multi-core safety architecture allowed Infineon to reduce certain safety development overheads (earlier Infineon data suggested up to 30% reduction in safety software workload) by providing built-in safety mechanisms and diagnostics. Infineon supplies a comprehensive safety manual and diagnostic libraries for the AURIX, helping engineers utilize features like CPU self-tests, RAM tests, and CRC checks to comply with safety standards. In addition to automotive standards, the AURIX TC3xx has also been qualified for &#039;&#039;&#039;industrial safety&#039;&#039;&#039;: in 2023, Infineon announced support for IEC 61508 metrics, enabling designs with AURIX to reach SIL-2 and SIL-3 safety integrity levels for industrial applications. This cross-industry safety compliance is facilitated by the MCU’s redundant design and detailed failure mode documentation (FMEDA) provided by Infineon. In summary, the AURIX TC3xx integrates both proactive safety (fault prevention via lockstep, monitoring and protection) and reactive safety (fault detection and safe shutdown), making it a dependable component for systems that cannot afford unintended behavior, whether in cars, factories, or aerospace. &amp;lt;ref name=&amp;quot;ref14281090104&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref5727814513&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ref4967712052&amp;quot;&amp;gt;Infineon&#039;s AURIX™ &amp;amp; TRAVEO™ microcontroller families extend their support for IEC 61508 hardware and software metrics enabling industrial safety up to SIL-3 - Infineon Technologies https://www.infineon.com/cms/en/about-infineon/press/market-news/2023/INFATV202303-078.html&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ref196858272&amp;quot;&amp;gt;MCUs support industrial functional safety - Electronic Products https://www.electronicproducts.com/mcus-support-industrial-functional-safety/&amp;lt;/ref&amp;gt;&lt;br /&gt;
== Platform Devices ==&lt;br /&gt;
The following table shows a feature overview of the AURIX™ TC3xx Platform family focusing on memory and number of cores.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
!Feature&lt;br /&gt;
!TC33x&lt;br /&gt;
!TC33xEXT&lt;br /&gt;
!TC35x&lt;br /&gt;
!TC36x&lt;br /&gt;
!TC37x&lt;br /&gt;
!TC37xEXT&lt;br /&gt;
!TC38x&lt;br /&gt;
!TC39x&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |CPUs&lt;br /&gt;
|Cores / Checker Cores&lt;br /&gt;
|1 / 1&lt;br /&gt;
|2 / 1&lt;br /&gt;
|3 / 2&lt;br /&gt;
|2 / 2&lt;br /&gt;
|3 / 2&lt;br /&gt;
|3 / 3&lt;br /&gt;
|4 / 2&lt;br /&gt;
|6 / 4&lt;br /&gt;
|-&lt;br /&gt;
|Max. Freq.&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot; |300 MHz&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Cache per CPU &lt;br /&gt;
|Program [KB]&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot; |32&lt;br /&gt;
|-&lt;br /&gt;
|Data [KB]&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot; |16&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |SRAM per CPU&lt;br /&gt;
|PSPR [KB]&lt;br /&gt;
|8&lt;br /&gt;
|{{rev|32|CPU0}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|64&lt;br /&gt;
|32&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|-&lt;br /&gt;
|DSPR [KB]&lt;br /&gt;
|192&lt;br /&gt;
|{{rev|192|CPU0}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|192&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|{{rev|240|CPU0&amp;amp;1}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|-&lt;br /&gt;
|DLMU [KB]&lt;br /&gt;
|8&lt;br /&gt;
|{{rev|8|CPU0}}&lt;br /&gt;
{{rev|64|other}}&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |SRAM global&lt;br /&gt;
|LMU [KB]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|512&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|128&lt;br /&gt;
|768&lt;br /&gt;
|-&lt;br /&gt;
|DAM [KB]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|32&lt;br /&gt;
| -&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |Extension Memory (EMEM)&lt;br /&gt;
|TCM [MB]&lt;br /&gt;
| -&lt;br /&gt;
|1&lt;br /&gt;
|2&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|2&lt;br /&gt;
| -&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|XCM [MB]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|1&lt;br /&gt;
| -&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|XTM [KB]&lt;br /&gt;
| -&lt;br /&gt;
|16&lt;br /&gt;
|16&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|16&lt;br /&gt;
| -&lt;br /&gt;
|16&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Program Flash&lt;br /&gt;
|Size [MB]&lt;br /&gt;
|2&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|6&lt;br /&gt;
|10&lt;br /&gt;
|10&lt;br /&gt;
|16&lt;br /&gt;
|-&lt;br /&gt;
|Banks [MB]&lt;br /&gt;
|1 x 2&lt;br /&gt;
|2 x 2&lt;br /&gt;
|2 x 2&lt;br /&gt;
|2 x 2&lt;br /&gt;
|2 x 3&lt;br /&gt;
|3 x 3, 1 x 1&lt;br /&gt;
|3 x 3, 1 x 1&lt;br /&gt;
|5 x 3, 1 x 1&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Data Flash&lt;br /&gt;
|DF0 Size (single-ended) [KB]&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|256&lt;br /&gt;
|512&lt;br /&gt;
|512&lt;br /&gt;
|1024&lt;br /&gt;
|-&lt;br /&gt;
|DF1 Size (single-ended) [KB]&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |DMA&lt;br /&gt;
|Channels&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|64&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|128&lt;br /&gt;
|-&lt;br /&gt;
|Move Engines&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|Resource Partitions&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Compilers ==&lt;br /&gt;
The AURIX TC3xx family is a series of high-performance microcontrollers widely used in automotive and industrial applications. Compilers for the AURIX TC3xx are crucial for developers aiming to optimize performance, reliability, and safety in their applications. One significant aspect of the compiler landscape for AURIX TC3xx is the limited direct support from mainline open-source compilers such as GCC or LLVM/Clang. The primary reason for this is the stringent requirements for functional safety in automotive and industrial applications, which demand specialized features and compliance with safety standards that are often not met by general-purpose open-source compilers.&lt;br /&gt;
&lt;br /&gt;
=== Commercial Compilers ===&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Tasking&#039;&#039;&#039;: Tasking compilers are renowned for their robust support for automotive applications, offering advanced debugging capabilities and optimization techniques tailored for the AURIX architecture. They provide extensive code optimization, comprehensive debugging tools, and strong support for safety standards such as ISO 26262, making them ideal for developing high-performance, reliable, and safe applications.&lt;br /&gt;
# &#039;&#039;&#039;HighTec&#039;&#039;&#039;: The HighTec compiler is a popular choice, known for its Eclipse-based development environment and strong multicore support. HighTec provides both GCC and LLVM-based ports of open-source compilers tailored specifically for the AURIX TC3xx family. These compilers offer efficient parallel execution, advanced code analysis, and an integrated development environment, ensuring robust performance and compliance with safety standards.&lt;br /&gt;
# &#039;&#039;&#039;Green Hills Software&#039;&#039;&#039;: Green Hills Software provides a highly optimized toolchain aimed at safety-critical applications, focusing on high performance and strict compliance with automotive standards. Their compiler offers superior optimization, extensive safety features, and a proprietary IDE with specialized tools for automotive development, ensuring developers can meet the stringent demands of functional safety.&lt;br /&gt;
&lt;br /&gt;
=== GCC for AURIX ===&lt;br /&gt;
&lt;br /&gt;
While mainline GCC does not directly support the AURIX TC3xx family, there is an unofficial GCC version available for AURIX. Due to the GNU General Public License (GPL), the source code from HighTec was retrieved and, along with binary versions, published on GitHub:&lt;br /&gt;
&lt;br /&gt;
*GCC 4.9.4/Binutils 2.20/Newlib 1.18 for Tricore Aurix [[https://github.com/volumit/package_494 Source]] [[https://github.com/volumit/tricore_gcc494_mingw_bins Prebuild Mingw Binaries]] [[https://github.com/volumit/tricore_gcc494_linux_bins Prebuild Linux Binaries]]&lt;br /&gt;
*GCC 9.4.0/Binutils 2.20/Newlib 1.18 for Tricore Aurix [[https://github.com/volumit/package_940 Source]] [[https://github.com/volumit/tricore_gcc940_mingw_bins Prebuild Mingw Binaries]] [[https://github.com/volumit/tricore_gcc940_linux_bins Prebuild Linux Binaries]]&lt;br /&gt;
*GDB 10.0.50 for Tricore Aurix [[https://github.com/volumit/gdb-tricore Source]]&lt;br /&gt;
==emmtrix Tools for AURIX TC3xx==&lt;br /&gt;
[[File:lowres-Signet Associated Partner EN.eps.png|thumb|305x305px|emmtrix Technologies is Infineon Associated Partner, has over 10 years of experience working with Infineon and their &#039;&#039;&#039;AURIX™ microcontroller family&#039;&#039;&#039; and has been collaborating for the past five years.]]&lt;br /&gt;
emmtrix offers the following tool for the Infineon AURIX TC3xx architecture:&lt;br /&gt;
=== emmtrix Performance Estimator ===&lt;br /&gt;
[[emmtrix Performance Estimator|emmtrix Performance Estimator (ePE)]] provides static timing analysis of C code. Compared to simulation or measurement on hardware, static performance analysis can be applied significantly earlier in the development process and will deliver results on average 6 months earlier compared to a typical automotive HIL setup. The analysis only takes a few minutes at most and runs on the developer’s PC independently of any target hardware. Function developers can analyze their runnables or SWCs without the need of a fully integrated program. emmtrix Performance Estimator is fully compatible with &#039;&#039;&#039;Infineon&#039;s AURIX™ [[Infineon AURIX TC2xx|TC2xx]] / TC3xx/ [[Infineon AURIX TC4x|TC4x]] microcontroller family,&#039;&#039;&#039; ensuring precise and reliable performance analysis for embedded systems. &lt;br /&gt;
&lt;br /&gt;
A unique feature is the combination with TargetLink or Embedded Coder generated code. Without any measurement overhead, our static performance estimation can analyze even the smallest code snippets. This allows us to map the timing analysis to Simulink blocks, giving function developers insight into the timing behavior of their models. &lt;br /&gt;
&lt;br /&gt;
ePE offers three accuracy levels: &lt;br /&gt;
&lt;br /&gt;
* analysis of C code&lt;br /&gt;
* generically compiler-optimized code&lt;br /&gt;
* assembly code from the target compiler.&lt;br /&gt;
&lt;br /&gt;
Method 1 yields results with minimum effort while method 3 takes the timing of the processor pipeline into account. All methods offer excellent reliability when tracking the tendency of changes in software runtimes e.g. when used in a continuous integration environment.&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
*[[Infineon AURIX TC4x]]&lt;br /&gt;
*[[Infineon AURIX TC2xx]]&lt;br /&gt;
*[[TriCore Instruction Set Architecture]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
*https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc3xx/&lt;br /&gt;
*[https://documentation.infineon.com/aurixtc3xx/docs/qmd1702366622648 AURIX TC3xx user manuals]&lt;br /&gt;
**[https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Part1-UserManual-v02_00-EN.pdf?fileId=5546d462712ef9b701717d3605221d96 AURIX™ TC3xx User Manual Part-1]&lt;br /&gt;
**[https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Part2-UserManual-v02_00-EN.pdf?fileId=5546d462712ef9b701717d35f8541d94 AURIX™ TC3xx User Manual Part-2]&lt;br /&gt;
**[https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Architecture_vol1-UserManual-v01_00-EN.pdf?fileId=5546d46276fb756a01771bc4c2e33bdd AURIX™ TC3xx Architecture vol 1]&lt;br /&gt;
**[https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Architecture_vol2-UserManual-v01_00-EN.pdf?fileId=5546d46276fb756a01771bc4a6d73b70 AURIX™ TC3xx Architecture vol 2]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Category:Supported Architectures]]&lt;/div&gt;</summary>
		<author><name>Oliver.Wolf.EMX</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC4x&amp;diff=2611</id>
		<title>Infineon AURIX TC4x</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Infineon_AURIX_TC4x&amp;diff=2611"/>
		<updated>2025-03-25T14:44:22Z</updated>

		<summary type="html">&lt;p&gt;Oliver.Wolf.EMX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Infineon Aurix TC4x.webp|right|frameless]]&lt;br /&gt;
The TC4x is Infineon&#039;s latest generation of AURIX™ microcontrollers, designed for advanced automotive applications, including eMobility, Advanced Driver Assistance Systems (ADAS), and automotive E/E (Electric/Electronic) architectures. These microcontrollers are built on a 28 nm process and feature the [[TriCore Instruction Set Architecture|TriCore™ 1.8 instruction set architecture]], which includes up to six cores running at speeds up to 500 MHz. This architecture is optimized for high-performance and real-time applications.&lt;br /&gt;
&lt;br /&gt;
== Key Features ==&lt;br /&gt;
* &#039;&#039;&#039;High Performance and Scalability&#039;&#039;&#039;: Equipped with a Parallel Processing Unit (PPU), Data Routing Engine (DRE), and other accelerators to enhance AI capabilities and real-time processing.&lt;br /&gt;
* &#039;&#039;&#039;Extensive Connectivity&#039;&#039;&#039;: Supports high-speed communication interfaces such as 5 Gbps Ethernet, PCIe, CAN-XL, and 10BASE-T1S Ethernet, providing flexibility and performance for various automotive applications.&lt;br /&gt;
* &#039;&#039;&#039;Enhanced Security&#039;&#039;&#039;: Compliant with ISO 21434, the TC4x includes advanced cybersecurity modules and supports safe, over-the-air (SOTA) updates with zero downtime.&lt;br /&gt;
* &#039;&#039;&#039;Memory and Storage&#039;&#039;&#039;: Features up to 25 MB of on-chip flash memory, allowing for complex software applications and data storage.&lt;br /&gt;
* &#039;&#039;&#039;Real-Time Control&#039;&#039;&#039;: Advanced timers and ADCs (Analog-to-Digital Converters) improve control loops for electric motors and power conversion tasks.&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
[[File:Infineon TC4x Architecture.png|thumb|Infineon TC4x architecture|494x494px]]&lt;br /&gt;
&lt;br /&gt;
=== System Architecture ===&lt;br /&gt;
&lt;br /&gt;
=== TC 1.8P Processor Core (CPU0 ... CPU5) ===&lt;br /&gt;
&lt;br /&gt;
=== Parallel Processing Unit (PPU) ===&lt;br /&gt;
The PPU is an implementation of the &#039;&#039;&#039;DesignWare ARC EV71 Processor&#039;&#039;&#039;. The length of the vector registers is flexible and depends on the version. Commercially, 128 or 256 bit vector registers are available. In a pre-series stepping even 512 bit was used.&lt;br /&gt;
&lt;br /&gt;
== Applications ==&lt;br /&gt;
* eMobility&lt;br /&gt;
* ADAS&lt;br /&gt;
* Automotive E/E architectures&lt;br /&gt;
* Affordable artificial intelligence (AI) applications&lt;br /&gt;
&lt;br /&gt;
== emmtrix Tools for AURIX TC4x ==&lt;br /&gt;
emmtrix offers several tools for the Infineon AURIX TC4x architecture:&lt;br /&gt;
&lt;br /&gt;
* [https://www.emmtrix.com/tools/emmtrix-code-vectorizer emmtrix Code Vectorizer] for vectorizing C code for the Infineon PPU. emmtrix was working together with Infineon already during develop of the TC4x architecture for supporting the PPU and received one of the first series A test boards.&lt;br /&gt;
* [https://www.emmtrix.com/tools/emmtrix-performance-estimatorator emmtrix Performance Estimator] for estimating the performance of C code written for the Tricore CPUs.&lt;br /&gt;
&lt;br /&gt;
[[File:Infineon Board.png|thumb|Infineon Development Board (AURIX™ TC4x Communication Board)]]&lt;br /&gt;
&lt;br /&gt;
=== emmtrix Code Vectorizer ===&lt;br /&gt;
[https://www.emmtrix.com/tools/emmtrix-code-vectorizer emmtrix Code Vectorizer (eCV)] simplifies programming the Parallel Processing Unit (PPU) on Infineon’s &#039;&#039;&#039;AURIX™ TC4x microcontrollers&#039;&#039;&#039;, enabling significant acceleration of data-parallel applications like sensor fusion or AI inference. By leveraging the PPU, these tasks can be accelerated by factors &amp;gt;10, unlocking the full potential of hardware capabilities.&lt;br /&gt;
&lt;br /&gt;
eCV automates the vectorization process, transforming sequential C code into optimized vectorized code tailored to the &#039;&#039;&#039;AURIX™ TC4x architecture&#039;&#039;&#039;. This includes efficient handling of memory layouts and advanced loop transformations. Developers can simulate and test functionality even without access to target hardware, reducing development time and effort.&lt;br /&gt;
&lt;br /&gt;
With support for &#039;&#039;&#039;Simulink® models, ONNX-based AI workflows,&#039;&#039;&#039; and detailed performance insights through integrated simulators, eCV minimizes the need for manual optimization while maximizing hardware performance.[[File:lowres-Signet Associated Partner EN.eps.png|thumb|305x305px|emmtrix Technologies is Infineon Associated Partner, has over 10 years of experience working with Infineon and their &#039;&#039;&#039;AURIX™ microcontroller family&#039;&#039;&#039; and has been collaborating for the past five years.]]&lt;br /&gt;
&lt;br /&gt;
=== emmtrix Performance Estimator ===&lt;br /&gt;
[[emmtrix Performance Estimator|emmtrix Performance Estimator (ePE)]] provides static timing analysis of C code. Compared to simulation or measurement on hardware, static performance analysis can be applied significantly earlier in the development process and will deliver results on average 6 months earlier compared to a typical automotive HIL setup. The analysis only takes a few minutes at most and runs on the developer’s PC independently of any target hardware. Function developers can analyze their runnables or SWCs without the need of a fully integrated program. emmtrix Performance Estimator is fully compatible with &#039;&#039;&#039;Infineon&#039;s AURIX™ [[Infineon AURIX TC2xx|TC2xx]] / [[Infineon AURIX TC3xx|TC3xx]]/ TC4x microcontroller family,&#039;&#039;&#039; ensuring precise and reliable performance analysis for embedded systems. &lt;br /&gt;
&lt;br /&gt;
A unique feature is the combination with TargetLink or Embedded Coder generated code. Without any measurement overhead, our static performance estimation can analyze even the smallest code snippets. This allows us to map the timing analysis to Simulink blocks, giving function developers insight into the timing behavior of their models. &lt;br /&gt;
&lt;br /&gt;
ePE offers three accuracy levels: &lt;br /&gt;
&lt;br /&gt;
* analysis of C code&lt;br /&gt;
* generically compiler-optimized code&lt;br /&gt;
* assembly code from the target compiler.&lt;br /&gt;
&lt;br /&gt;
Method 1 yields results with minimum effort while method 3 takes the timing of the processor pipeline into account. All methods offer excellent reliability when tracking the tendency of changes in software runtimes e.g. when used in a continuous integration environment.&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[Infineon AURIX TC3xx]]&lt;br /&gt;
* [[TriCore Instruction Set Architecture]]&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
&lt;br /&gt;
* https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc4x/&lt;br /&gt;
&lt;br /&gt;
[[Category:Supported Architectures]]&lt;/div&gt;</summary>
		<author><name>Oliver.Wolf.EMX</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=emmtrix_Studio_Release_Notes&amp;diff=2563</id>
		<title>emmtrix Studio Release Notes</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=emmtrix_Studio_Release_Notes&amp;diff=2563"/>
		<updated>2025-03-14T09:40:10Z</updated>

		<summary type="html">&lt;p&gt;Oliver.Wolf.EMX: /* emmtrix Studio Release Notes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;emmtrix-studio-release-notes&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= emmtrix Studio Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Release 2025.03 ==&lt;br /&gt;
&lt;br /&gt;
=== New Features ===&lt;br /&gt;
* &#039;&#039;&#039;emmtrix Performance Estimator (ePE)&#039;&#039;&#039;&lt;br /&gt;
** Supporting performance estimation of Simulink blocks&lt;br /&gt;
*** Generation of interactive HTML performance report with results mapped to Simulink blocks and hierarchy&lt;br /&gt;
*** MBDComments trafo: Added new trafo to parse model-based design comments generated by TargetLink&lt;br /&gt;
** Supporting setting of loop trip count and if-block probabilities in the Hierarchical Program View GUI&lt;br /&gt;
*** Loops: Set number of iterations&lt;br /&gt;
*** If blocks: Set true path execution frequency&lt;br /&gt;
*** Functions: Set runtime in cycles or time&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;emmtrix Dependency Analyzer (eDA)&#039;&#039;&#039;&lt;br /&gt;
** Supporting bit-level dependency analysis of input/output signals&lt;br /&gt;
*** BitBlast trafo: Added new helper trafo that converts a C function into a boolean representation, breaking down operations into individual bit-level logic&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;emmtrix Code Vectorizer (eCV)&#039;&#039;&#039;&lt;br /&gt;
** Added support for AVX2 x86 ISA extension&lt;br /&gt;
** Added support for ARM SVE ISA extension&lt;br /&gt;
** Added support for loop-local structs, structs in vector code generation and continue statements&lt;br /&gt;
** Added support for vectorizing math functions:&lt;br /&gt;
*** &amp;lt;code&amp;gt;hypotf&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tanf&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;fdimf&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;logf&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;log10f&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;fdimf&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;fmaf&amp;lt;/code&amp;gt;&lt;br /&gt;
** Added new perspective for code vectorization&lt;br /&gt;
*** Vector code generation for testing, target and simulator&lt;br /&gt;
*** Buttons to run and compile code and compare results with sequential input code&lt;br /&gt;
* Add support for Triboard TC4D9 Parallel Processing Unit for Synopsis and Tasking&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;New/improved transformations:&#039;&#039;&#039;&lt;br /&gt;
** IfMerge trafo: Added new trafo to merge subsequent if statements with compatible condition&lt;br /&gt;
** BlockOutlineTrafo: Added new trafo to extract functions from blocks&lt;br /&gt;
** DeadStmtRemoval trafo: Added new trafo to remove dead statements&lt;br /&gt;
** RemoveIncludes trafo: Added new trafo to remove all non-standard includes and add declarations to source files&lt;br /&gt;
&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
* Performance Estimation: Added support for num exec calculation of if blocks with constant values&lt;br /&gt;
* BulkProcessing: Added support for a list of passes that should be executed&lt;br /&gt;
* Improved support for C23 standard: &lt;br /&gt;
** Supporting labels followed by a declaration&lt;br /&gt;
** Supporting unnamed parameters in function definitions&lt;br /&gt;
* Transformation Framework: Selected transformations can now be set via properties&lt;br /&gt;
** Currently supports transformations &amp;lt;code&amp;gt;MBDComments&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;IdiomRecognizer&amp;lt;/code&amp;gt;&lt;br /&gt;
* Improved performance of hierarchical program view for larger projects&lt;br /&gt;
* Settings dialog now has sections for each supported software platform for easier configuration of different use cases&lt;br /&gt;
&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
* Fixed bugs in LLVM IR based performance estimation&lt;br /&gt;
* Fixed bus in Assembly-based performance estimation&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
* Vectorization: Changed Tasking compiler setting to favor performance over code size&lt;br /&gt;
* GUI: Number formatting will now always use English language&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Release 2024.11 ==&lt;br /&gt;
&lt;br /&gt;
=== New Features ===&lt;br /&gt;
* New/improved transformations:&lt;br /&gt;
** ControlStructSimplify trafo: Added new trafo to simplify control structures&lt;br /&gt;
** VarCoalescing trafo: Added transformation to remove unnecessary copy operations by coalescing (i.e. reusing) variables&lt;br /&gt;
** ArrayToScalar trafo: Extended trafo to convert arrays to single scalars&lt;br /&gt;
** VarSplit trafo: Automatically perform loop if splitting on affected loops&lt;br /&gt;
** Vectorization trafo: Using platform SIMD vector length property as default vector length&lt;br /&gt;
** LoopUnswitch trafo: Added new trafo to unswitch `for` loops containing `if` conditions&lt;br /&gt;
** ConstPropagation trafo: Added `remove_dead_blocks=&amp;lt;no|defensive|aggressive&amp;gt;` parameter to remove dead blocks after constant propagation&lt;br /&gt;
** ConstantPropagation now supports arrays&lt;br /&gt;
** VectorizeTrafo: Added warnings for constructs that might lead to incorrect code&lt;br /&gt;
** Vectorization: Showing analysis abort reasons (For loop structure, analysis of memory accesses, detection of nested structures)&lt;br /&gt;
* Target platforms: Implemented Tasking/Synopsys targets for Aurix Triboard TC499a STD&lt;br /&gt;
* Vectorization: Supporting sin, cos and exp operations&lt;br /&gt;
* Full support for PPU of AURIX TC4x (reduction, rounding, multiply-accumulate...)&lt;br /&gt;
* Pragmas: `pragmas.json`: Supporting global, variable, parameter, and function declaration pragmas&lt;br /&gt;
* Transformation: Showing reason why a transformation cannot be applied&lt;br /&gt;
&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
* CLI: Added new `addtrafo &amp;lt;trafoname&amp;gt; &amp;lt;path&amp;gt; [--jsonparams &amp;lt;params&amp;gt;]` command to add a trafo to the `emx_trafos_v2.json` file&lt;br /&gt;
* GUI: Combo box to switch the active project is now disabled while a pass is running&lt;br /&gt;
* Performance Estimation: Improved loop analysis by using maximum number of iterations and supporting while loops. Uses maximum number of iterations if available and sets `avg = (min + max)/2`&lt;br /&gt;
* CLI: Added new `createproject2 &amp;lt;name&amp;gt; [--folder &amp;lt;dir&amp;gt;]` command&lt;br /&gt;
* C parsing: Changed handling of include directories&lt;br /&gt;
** Subdirectories of include folder are not automatically added as include folders anymore&lt;br /&gt;
** Parsing stops with an error message when an include cannot be resolved&lt;br /&gt;
** The name of all parsed header files and where they are included is printed on the console when debugging is enabled&lt;br /&gt;
&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
* Assembly-based performance estimation: Fixed incorrect code caused by const data type in ?: operator&lt;br /&gt;
* Vectorization: Fixed incorrect code generation caused by comments at the end of the for body&lt;br /&gt;
* C parsing: Fixed that pragmas within included files were not considered&lt;br /&gt;
* LoopInterchange trafo: Fixed exception caused by loop local variable used within variable initialization&lt;br /&gt;
* Vectorization: Fixed that all linear memory accesses were considered as indexed&lt;br /&gt;
* Vectorization: Fixed vectorization of loops containing unsupported code&lt;br /&gt;
* Performance estimation: Fixed handling of nested folder structures for ASM performance estimation&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
* Removed support for GPUs (CUDA and OpenCL code generation)&lt;br /&gt;
* Removed support for FPGAs (high-level synthesis)&lt;br /&gt;
* ParallelCodeGeneration: Deactivated default static array conversion for test code generation (can be activated in settings)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Release 2024.07 ==&lt;br /&gt;
&lt;br /&gt;
=== New Features ===&lt;br /&gt;
&lt;br /&gt;
* New/improved transformations&lt;br /&gt;
** Deroll trafo: Added new trafo to create loops for similar subsequent statements or constructs&lt;br /&gt;
** LoopFusion trafo: Added new trafo to fuse two subsequent for loops with the same iteration space&lt;br /&gt;
** PtrResolve trafo: Added new trafo to resolve pointers and replace indirect memory accesses by direct (used in eDA)&lt;br /&gt;
** MakeStatic trafo: Added new trafo to make functions static if used only locally to provide optimization potential for the compiler and ease the linking&lt;br /&gt;
** ArrayToScalar trafo: Added new trafo to convert arrays to scalars&lt;br /&gt;
** LoopUnroll trafo: &lt;br /&gt;
*** Added possibility to apply &amp;lt;code&amp;gt;LoopUnroll&amp;lt;/code&amp;gt; to all for-loops of selected functions&lt;br /&gt;
*** Automatically perform full loop unrolling when the unrolling factor exceeds the constant number of iterations&lt;br /&gt;
&lt;br /&gt;
* emmtrix Dependency Analyzer (eDA)&lt;br /&gt;
** Added result caching mechanism to speed up recurring analysis&lt;br /&gt;
** Added support for label propagation&lt;br /&gt;
** Added shortest-path and reachability report to follow how values/signals propagate&lt;br /&gt;
&lt;br /&gt;
* emmtrix Performance Estimator (ePE)&lt;br /&gt;
** Added min/max runtime calculation&lt;br /&gt;
&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
* C code handling&lt;br /&gt;
** Preserving &amp;lt;code&amp;gt;#define&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;#undef&amp;lt;/code&amp;gt; preprocessor directives&lt;br /&gt;
** Parsing C code comments for analysis and code generation&lt;br /&gt;
** Added option to set charsets for source code files&lt;br /&gt;
** Respecting the correct order of #include directives and other declarations&lt;br /&gt;
&lt;br /&gt;
* GUI Improvements&lt;br /&gt;
** Settings: Sorted and restructured settings&lt;br /&gt;
** Improved usability of emmtrix Studio project wizard&lt;br /&gt;
&lt;br /&gt;
* Analysis Time Improvements&lt;br /&gt;
** Improved performance of SSA calculation&lt;br /&gt;
** Improved analysis performance by caching result of variable usage&lt;br /&gt;
** Added internal caching for performance estimation&lt;br /&gt;
** Improvements of internal type calculations&lt;br /&gt;
** Added cache to improve performance to calculations in eDA&lt;br /&gt;
** Fixed performance bottleneck in dominator calculation in eDA&lt;br /&gt;
&lt;br /&gt;
* emmtrix Parallel Studio&lt;br /&gt;
** Added option to enable parallelization for shared memory (improves global variables synchronization)&lt;br /&gt;
&lt;br /&gt;
* General&lt;br /&gt;
** Improved support for pointers in dependency analysis in eDA&lt;br /&gt;
** Improved constant propagation by using sparse conditional constant propagation algorithm&lt;br /&gt;
** Commandline interface learned to run commands from script file&lt;br /&gt;
&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
* Fixed handling of enum declarations&lt;br /&gt;
* Improved support for nested folder structures&lt;br /&gt;
* Crash in SSA algorithm&lt;br /&gt;
* Fixed automatic insertion of forward declaration when necessary&lt;br /&gt;
* Handling of ArithmeticException e.g. caused by division by zero in const propagation&lt;br /&gt;
* Fixed stack overflow in SSA algorithm caused by deep CFGs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2023.11&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2023.11 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;new-features&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== New Features ===&lt;br /&gt;
&lt;br /&gt;
* All emmtrix tools are now gathered in the emmtrix Studio framework with their own perspectives&lt;br /&gt;
** emmtrix Parallel Studio&lt;br /&gt;
** emmtrix Performance Estimator&lt;br /&gt;
*** TargetLink Extension (coming soon)&lt;br /&gt;
*** Simulink Extension (on request)&lt;br /&gt;
** emmtrix Dependency Analyzer&lt;br /&gt;
** emmtrix Code Vectorizer (coming soon)&lt;br /&gt;
** emmtrix Model Code Generator&lt;br /&gt;
** emmtrix Code Generator&lt;br /&gt;
* Windows: A portable Cygwin installation is provided to remove the need to install any additional third-party tools&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;improvements&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
&lt;br /&gt;
* Hierarchical Program View: New indicator icon for tasks with measured timing data&lt;br /&gt;
* Code Transformations: Added setting in GUI to enable/disable code transformation analysis&lt;br /&gt;
* Frontend: Print out missing include files for all processed files for easier project setup and debugging&lt;br /&gt;
* Eclipse: Update to version 2023-06&lt;br /&gt;
* EMX-LLVM: Update to version 230901&lt;br /&gt;
* Added support for alias attribute (e.g. &amp;lt;code&amp;gt;__attribute__((alias(&amp;amp;quot;name&amp;amp;quot;)))&amp;lt;/code&amp;gt;) for functions and variables&lt;br /&gt;
* InstructionSimplifier trafo: Added the following simplifications:&lt;br /&gt;
** &amp;lt;code&amp;gt;const ? a : b&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;0 - x&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;-x&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;x [-&amp;amp;amp;^|/%] x&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;x [+-] (-y)&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;x [-+] y&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;(-x) + y&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;y - x&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;x [*/] (-1)&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;-x&amp;lt;/code&amp;gt;&lt;br /&gt;
* ExplicitCastInserter trafo: Added trafo to insert explicit type casts in expressions where implicit casts are performed&lt;br /&gt;
** &amp;lt;code&amp;gt;if (expr)&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;if ((_Bool)expr)&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;float_var = 10&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;float_var = (float)10&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;ptr_to_long_int + char&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;ptr_to__long_int + (int)char&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;bool_var * unsigned_long_var&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;(unsigned long)bool_var * unsigned_long_var&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;0 ? bool_var : vol_int_var&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;(_Bool)0 ? (volatile int)bool_var : vol_int_var&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;func_call(signed_int_var + long_double_var)&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;func_call((long double)signed_int_var + long_double_var)&amp;lt;/code&amp;gt;&lt;br /&gt;
* Simulink viewer: Improved usability&lt;br /&gt;
** Added sliders for larger models&lt;br /&gt;
** Added labels for simple blocks (e.g. sum, product)&lt;br /&gt;
** Improved contrast of background colors&lt;br /&gt;
** Improved positioning of labels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;bugfixes&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Parallelization: Fixed generation of inconsistent ids from send/recv calls&lt;br /&gt;
* Parallelization: Detect variable length arrays as unsupported and clustered&lt;br /&gt;
* Fixed wrong reordering of declarations for automatic merging of blocks&lt;br /&gt;
* Fixed access analysis of function call arguments including &amp;lt;code&amp;gt;&amp;amp;amp;&amp;lt;/code&amp;gt; and structs&lt;br /&gt;
* Fixed crash caused by struct field passed as pointer to function&lt;br /&gt;
* Project Wizard got stuck during project creation&lt;br /&gt;
* Performance Estimation: Fixed bug with LLVM IR based estimation and multiple source files&lt;br /&gt;
* Bugfix for handling custom paths replacing the system paths&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;emmtrix-parallel-studio-release-notes&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= emmtrix Parallel Studio Release Notes =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2022.10&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2022.10 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;improvements-1&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
&lt;br /&gt;
* Added support for GCC extension [https://gcc.gnu.org/onlinedocs/gcc/Statement-Exprs.html statement expressions]&lt;br /&gt;
* Update EMX-LLVM tools to release 2022.11.18&lt;br /&gt;
* Added separate template files for “Parallel Tests” (independent from sequential test template)&lt;br /&gt;
* Eclipse: Updated to version 2022.06&lt;br /&gt;
* Added setting to specify the path for EMX-LLVM tools&lt;br /&gt;
* Added new transformation to convert &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; loops to &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; loops&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;bugfixes-1&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Avoid false duplication of functions&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2022.07&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2022.07 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;new-features-1&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== New Features ===&lt;br /&gt;
&lt;br /&gt;
* Added support for assembly-based performance estimation&lt;br /&gt;
** Added option to enable assembly-based performance estimation in advanced settings&lt;br /&gt;
** Supporting Tricore using HighTec GCC compiler (tricore-gcc)&lt;br /&gt;
** Supporting ARM Cortex-A7 using [https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads ARM GNU Toolchain]&lt;br /&gt;
** Updated target defintions with assembler performance estimation&lt;br /&gt;
* Added new disassembly view with traceability between HTG and C source code&lt;br /&gt;
** Generating &amp;lt;code&amp;gt;assembly.asmmodel&amp;lt;/code&amp;gt; file storing disassembly and mapping information&lt;br /&gt;
** Disassembly view: Added disassembly view (AsmEditor) for &amp;lt;code&amp;gt;assembly.asmmodel&amp;lt;/code&amp;gt; files that displays disassembly information&lt;br /&gt;
** Disassembly view: Option to display timing information from assembly-based performance information&lt;br /&gt;
** Disassembly view: Option to reorder basic blocks to better match the order within the source file&lt;br /&gt;
** Disassembly view: Automatically highlighting the C source line in a corresponding editor if the caret is changed to an assembly instruction&lt;br /&gt;
** Disassembly view: Automatically highlighting the assembly instruction in a corresponding disassembly view if the caret is changed to a C expression&lt;br /&gt;
** HTG view: Added new &amp;lt;code&amp;gt;ASM&amp;lt;/code&amp;gt; button to open disassembly view&lt;br /&gt;
** HTG view: Automatically highlighting the assembly instructions within disassembly view if a HTG node is selected&lt;br /&gt;
** Currently supports Infineon AURIX and ARM Cortex-A7&lt;br /&gt;
* Performance estimation workflow&lt;br /&gt;
** Added new GUI elements to handle performance estimation to workflow&lt;br /&gt;
** Generation of HTML report with information on function level&lt;br /&gt;
** Added support for loading timing data from simulation and hardware&lt;br /&gt;
* Added support for LLVM-IR-based performance estimation&lt;br /&gt;
** Independent from target compiler&lt;br /&gt;
** Example target specification available for Infineon AURIX TC3xx&lt;br /&gt;
* Added new code sinking transformation&lt;br /&gt;
** The transformation moves assign statements to positions where it is executed less frequently&lt;br /&gt;
** A threshold value is given that specifies the minimum reduction factor for the execution count (threshold)&lt;br /&gt;
* Added new loop-invariant code motion transformation&lt;br /&gt;
** The transformation moves only statements by default&lt;br /&gt;
** It optionally moves sub-expressions by creating temporary variables (sub_exprs=1)&lt;br /&gt;
** It optionally reorders invariant expressions by applying the commutative and associative laws (reorder=1)&lt;br /&gt;
** It includes an built-in test about the number of moved expressions (expected_moved_exprs)&lt;br /&gt;
* Added checksum based upgrade mechanism for &amp;lt;code&amp;gt;target&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;template&amp;lt;/code&amp;gt; folders&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;improvements-2&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
&lt;br /&gt;
* Template processing: Added variables &amp;lt;code&amp;gt;C_FILES_PROCESSED&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;C_FILES_ADDITIONAL&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;C_FILES_TOCOMPILE&amp;lt;/code&amp;gt;&lt;br /&gt;
* CPP2C: Supporting projects with multiple *.cpp files&lt;br /&gt;
* Active project management&lt;br /&gt;
** GUI: Project list in workflow view now has an empty entry to deselect any project&lt;br /&gt;
** Bugfix: The active project is now stored explicitly in the workspace to avoid any ambiguity&lt;br /&gt;
** Bugfix: Fixed detection of changes to projects (rename, import, copy, etc.)&lt;br /&gt;
* Improved WhileToFor transformation with better detection of step and init code&lt;br /&gt;
* Improved loop unrolling transformation by adding support for declarations, unknown number of exections, returns and breaks&lt;br /&gt;
* C library: Supporting &amp;lt;code&amp;gt;va_start&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;va_end&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;va_arg&amp;lt;/code&amp;gt; of stdarg.h&lt;br /&gt;
* Improved trip count calculation of for loops by using local constant propagation&lt;br /&gt;
* Improved check for unsupported C constructs that will be automatically clustered&lt;br /&gt;
** Switch case constructs (that are not converted to if)&lt;br /&gt;
** Double pointers: e.g. &amp;lt;code&amp;gt;int **a&amp;lt;/code&amp;gt;&lt;br /&gt;
** Do while loops&lt;br /&gt;
** Goto statements&lt;br /&gt;
** Functions with multiple return paths (no return or one return at the end is allowed)&lt;br /&gt;
** Loops (for, while, do while) with continue&lt;br /&gt;
** Loops (for, while, do while) with break&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;bugfixes-2&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Parallel code generation: Header file &amp;lt;code&amp;gt;_emx_main.h&amp;lt;/code&amp;gt; was included multiple times&lt;br /&gt;
* Control-To-Goto: Fixed conversion of short-circuit operations within variable initialization&lt;br /&gt;
* Bugfix: Constant propagation with pointers&lt;br /&gt;
* Fixed issues with generation of temporary variables&lt;br /&gt;
* Fixed some GUI related bugs (avoid unnecessary exceptions)&lt;br /&gt;
* Fixed some bugs in the parallel performance estimation (wrong calculation of loops)&lt;br /&gt;
* Fixed Linux related bugs (paths, executable flags)&lt;br /&gt;
* Fixed Run on MATLAB and compare&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;other&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Other ===&lt;br /&gt;
&lt;br /&gt;
* Removed TWIG template support&lt;br /&gt;
* ePS is now using Java 17, required files for Windows and Linux are integrated&lt;br /&gt;
* Release is based on Eclipse 2022.03&lt;br /&gt;
* Update eCG to release from 29/04/22&lt;br /&gt;
* Update CPP2C to release from 29/07/22&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2022.04&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2022.04 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;new-features-2&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== New Features ===&lt;br /&gt;
&lt;br /&gt;
* Transformations:&lt;br /&gt;
** Introduced VarSplit transformation for splitting an array variable into multiple variables&lt;br /&gt;
** Introduced FuncPtrResolve transformation for replacing indirect function calls by if-then-else constructs&lt;br /&gt;
** Introduced &amp;lt;code&amp;gt;InstructionSimplifier&amp;lt;/code&amp;gt; transformation to simplify expressions by applying neutral and zero element optimizations&lt;br /&gt;
** Transformations can now track the reason the analysis failed&lt;br /&gt;
* Standard header files now available in template folder (&amp;lt;code&amp;gt;standard_includes&amp;lt;/code&amp;gt;) and can be edited by the user&lt;br /&gt;
* Introduced new file management (epsfiles.txt)&lt;br /&gt;
** Input files are now defined in the file &amp;lt;code&amp;gt;sources/epsfiles.txt&amp;lt;/code&amp;gt; which follows the syntax of [https://git-scm.com/docs/gitattributes .gitattributes] files&lt;br /&gt;
** It supports the following attributes&lt;br /&gt;
*** &amp;lt;code&amp;gt;action=[none|process|compile|copy]&amp;lt;/code&amp;gt;: Defines what ePS is doing with the file&lt;br /&gt;
**** &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt; or no attribute is ignoring the file&lt;br /&gt;
**** &amp;lt;code&amp;gt;compile&amp;lt;/code&amp;gt; is copying and compiling the file to output folder&lt;br /&gt;
**** &amp;lt;code&amp;gt;copy&amp;lt;/code&amp;gt; is only copying the file to output folder&lt;br /&gt;
**** &amp;lt;code&amp;gt;process&amp;lt;/code&amp;gt; is processing (reading and writing) the C source file by ePS&lt;br /&gt;
*** &amp;lt;code&amp;gt;template=[twig|ftl]&amp;lt;/code&amp;gt;: The file is processed by the specified template engine. A corresponding file extension is removed.&lt;br /&gt;
*** &amp;lt;code&amp;gt;c_preprocess&amp;lt;/code&amp;gt;: The source file is preprocessed through a C/C++ preprocessor&lt;br /&gt;
*** &amp;lt;code&amp;gt;codegen=[eCG|eCPP2C]&amp;lt;/code&amp;gt;: Code generation is applied to the source file&lt;br /&gt;
**** &amp;lt;code&amp;gt;eCG&amp;lt;/code&amp;gt; runs emmtrix Code Generator on the MATLAB or Scilab file&lt;br /&gt;
**** &amp;lt;code&amp;gt;eCPP2C&amp;lt;/code&amp;gt; runs emmtrix C++ to C Compiler on C++ source files&lt;br /&gt;
** Source file status is shown in Project Explorer as specified in epsfiles.txt&lt;br /&gt;
** Default epsfiles.txt file can be created via context menu in Project Explorer or in the Project Settings dialog&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;improvements-3&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
&lt;br /&gt;
* Target platforms:&lt;br /&gt;
** Added Tasking template for the Aurix TC397 platform&lt;br /&gt;
** Added hardware model of SPC58ECxx (PowerPC e200z4 dual-core)&lt;br /&gt;
* Vectorization transformation (still experimental)&lt;br /&gt;
** Improved support for array subscripts with linear memory access pattern&lt;br /&gt;
** Improved source code appearance after vectorization&lt;br /&gt;
** Supporting array subscripts with indexed memory access pattern&lt;br /&gt;
** Supporting vectorization of loops containing unvectorizable expressions&lt;br /&gt;
** Supporting vectorization of simple sub-functions&lt;br /&gt;
** Supporting &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; loops with non-constant iteration count&lt;br /&gt;
** Supporting memory accesses with indirection operator (e.g. &amp;lt;code&amp;gt;*(p+1) = ...&amp;lt;/code&amp;gt;)&lt;br /&gt;
** Supporting &amp;lt;code&amp;gt;?:&amp;lt;/code&amp;gt; operators, generic for loop initialization and non-vectorized local variables&lt;br /&gt;
* Performance estimation: Consider duration of variable initialization and ignoring constant expressions&lt;br /&gt;
* GUI: Changed format of exceptions dialog&lt;br /&gt;
* C library: Added header &amp;lt;code&amp;gt;arpa/inet.h&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;sys/socket.h&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;netinet/in.h&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;netdb.h&amp;lt;/code&amp;gt;&lt;br /&gt;
* Improved support for wide character string and char literals&lt;br /&gt;
* Supporting array size calculation of designated array initializers&lt;br /&gt;
* Performance estimation: Set default to 1 cycle per instruction when no data is available&lt;br /&gt;
* EpsProject: Include directories are relativized if they are part of the project&lt;br /&gt;
* CodeGeneration: Replicate input folder structure&lt;br /&gt;
* Added node context menu to Hierarchical Program View to export task dependencies in DOT or CSV format&lt;br /&gt;
* LLVM tools: Update to release from 27/04/2022&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;bugfixes-3&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Crash caused by &amp;lt;code&amp;gt;if (a = func() == 3)&amp;lt;/code&amp;gt;&lt;br /&gt;
* Frontend: Crash in type compatibility check when variable was redeclared after struct was redeclared&lt;br /&gt;
* Parallel code generation: Missing function prototypes of parallelized functions&lt;br /&gt;
* ParallelCodeGeneration: ‘sources’ folder is now correctly added to the includes&lt;br /&gt;
* Fixed OS-dependent path name that could cause one C file being parsed multiple times&lt;br /&gt;
* Frontend: Crash caused by two nested C99 for loops without curly brackets, e.g. &amp;lt;code&amp;gt;for (int i=0; i&amp;amp;lt;10; ++i) for (int i2; i2&amp;amp;lt;10; ++i2) ...&amp;lt;/code&amp;gt;&lt;br /&gt;
* Function duplication did not consider static variables&lt;br /&gt;
* Type deduction of function pointers&lt;br /&gt;
* Frontend: Improved error handling of false C code (e.g. case outside switch)&lt;br /&gt;
* Fixed executable flags for Linux&lt;br /&gt;
* Type deduction failed for address operator on &amp;lt;code&amp;gt;_Bool&amp;lt;/code&amp;gt; variable&lt;br /&gt;
* Performance estimation: Wrong warning: Assuming default number of iterations&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2022.01.a&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2022.01.a ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;improvements-4&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
&lt;br /&gt;
* Parallelization: Automatic scheduler avoids any schedules that causes slowdowns&lt;br /&gt;
* Parallelization: Functions with unsupported use of pointers are automatically clustered and will not be falsely parallelized&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;bugfixes-4&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Fixed errors with libraries math.h and errno.h&lt;br /&gt;
* Fixed bugs related to incompatible types&lt;br /&gt;
* Compilation error caused by conflict between user-defined macros (e.g. &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;) and winnt.h&lt;br /&gt;
* Fixed prompt for workspace selection at startup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2022.01&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2022.01 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;new-features-3&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== New Features ===&lt;br /&gt;
&lt;br /&gt;
* Added initial vectorization support for Aurix TC4xx PPU&lt;br /&gt;
** VectorizeTrafo: Added trafo for vectorizing a simple &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; loop into platform-independent vector code (alpha)&lt;br /&gt;
*** No check is performed that the vectorized code will be correct&lt;br /&gt;
*** Unsupported constructs are not detected beforehand. Instead, an exception is thrown during application&lt;br /&gt;
*** Supporting only simple array variable constructs of &amp;lt;code&amp;gt;a[i]&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; is the &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; iterator variable) or &amp;lt;code&amp;gt;a[j1]...[j2][i]&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;j1 ... j2&amp;lt;/code&amp;gt; must be loop invariant)&lt;br /&gt;
*** Supporting vectorization of reduction variables, e.g. &amp;lt;code&amp;gt;for (i=0; i&amp;amp;lt;N; ++i) i += a[i];&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Supporting predicated vector instructions&lt;br /&gt;
*** Supporting optional padding of array variables to eliminate predicated vector instructions&lt;br /&gt;
** TargetPlatform: &amp;lt;code&amp;gt;host_win32&amp;lt;/code&amp;gt; supports code generation of platform-independent vector code by using a template-based library for vector types and functions&lt;br /&gt;
** TargetPlatform: Added two “Aurix TC4xx Parallel Processing Unit” platforms with Tasking and Synopsys PPU compiler support&lt;br /&gt;
*** Supporting simulator code generation with cycle-approximate performance measurement&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;improvements-5&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
&lt;br /&gt;
* Supporting &amp;lt;code&amp;gt;long double&amp;lt;/code&amp;gt; in our libc math.h&lt;br /&gt;
* Added ConstPropagationTrafo transformation for applying constant propagation to a function&lt;br /&gt;
* Improved replacement of inc/dec (e.g. &amp;lt;code&amp;gt;++&amp;lt;/code&amp;gt;) and compound assign (e.g. &amp;lt;code&amp;gt;+=&amp;lt;/code&amp;gt;) operators&lt;br /&gt;
** Supports correct handling of volatile variables&lt;br /&gt;
** Resolution within array/struct initializers was not working (e.g. &amp;lt;code&amp;gt;int i1[] = { x++ };&amp;lt;/code&amp;gt;)&lt;br /&gt;
** Resolution within variable initialization could switch the order of statements (e.g. &amp;lt;code&amp;gt;int i1 = x++; int i2 = x;&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Target platforms: Added &amp;lt;code&amp;gt;char16_t&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;char32_t&amp;lt;/code&amp;gt; types and supporting macros&lt;br /&gt;
* Improved support for running code on target platforms&lt;br /&gt;
* Documentation: Added section about CLI&lt;br /&gt;
* Documentation: Set Cygwin 64 bit as only supported version&lt;br /&gt;
* Added support for selecting the target compiler affecting the macros and types used to parse the source code&lt;br /&gt;
** Settings: Added compiler combo box into general settings&lt;br /&gt;
** TargetPlatform: &amp;lt;code&amp;gt;microarchitecture.xml&amp;lt;/code&amp;gt;: Added &amp;lt;code&amp;gt;Compilers&amp;lt;/code&amp;gt; section&lt;br /&gt;
* Switched to Eclipse 2021-09&lt;br /&gt;
* Improved switch-to-if converter&lt;br /&gt;
* Added initial support for designated array range initializers (&amp;lt;code&amp;gt;[first ... last] = value&amp;lt;/code&amp;gt;) (see [https://gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html designated inits])&lt;br /&gt;
* Added optional function de-duplication pass (can be activated in advanced settings)&lt;br /&gt;
* Preserving all function, variable and type declarations and their original order within C file&lt;br /&gt;
* Flow: Improved monitor output (warning/error display) and added subtasks&lt;br /&gt;
* Multiple performance improvements for large projects (&#039;&#039;e.g. performance estimation works well with 1 mio lines of code&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;bugfixes-5&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Invalid function arguments after parallelization&lt;br /&gt;
* Parallelized function returned result on wrong core&lt;br /&gt;
* Duplication of &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; loops with declarations generated incorrect code&lt;br /&gt;
* Communication was not working with pointer variables&lt;br /&gt;
* Communication was placed after return statements&lt;br /&gt;
* Multiple transfers of same variable with same ID&lt;br /&gt;
* Fixed handling of large call trees&lt;br /&gt;
* Crash in SSATraversal caused by recursive functions with pointer parameters&lt;br /&gt;
* Memory leaks&lt;br /&gt;
* Avoiding “Too many arguments to function” warning for implicit functions&lt;br /&gt;
* Array size calculation of &amp;lt;code&amp;gt;array[ENUMERATOR]&amp;lt;/code&amp;gt; is now working&lt;br /&gt;
* COutput: -(-1) was output as –1&lt;br /&gt;
* Fixed analysis of for loops where the loop variable is modified before the for loop&lt;br /&gt;
* Pragmas outside of functions are preserved in the correct order&lt;br /&gt;
* Fixed output of forward-declared structs, unions and enums&lt;br /&gt;
* Merging two composite blocks could lead to two variables using the same name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2021.09.a&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2021.09.a ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;new-features-4&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== New Features ===&lt;br /&gt;
&lt;br /&gt;
* Added pass to use a preprocessor (e.g. gcc or clang) on C code before it is used in ePS&lt;br /&gt;
* Integrated AUTOSAR file parsing based on the Artop library&lt;br /&gt;
* Added calculation of confidence level for performance estimation&lt;br /&gt;
* Added support for a configuration file to add pragmas without changing the source code&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;improvements-6&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
&lt;br /&gt;
* Added basic support for:&lt;br /&gt;
** function pointers&lt;br /&gt;
** recursive functions&lt;br /&gt;
** designated array initializers&lt;br /&gt;
** designated struct/union initializers&lt;br /&gt;
** compound assignment operators&lt;br /&gt;
** C11 style anonymous enum/struct/union definitions embedded in other type definitions&lt;br /&gt;
** incomplete data types (according to C standard)&lt;br /&gt;
* Separated settings for sequential and parallel platform tests&lt;br /&gt;
* Added new functionalities to CLI:&lt;br /&gt;
** Configuration of projects&lt;br /&gt;
** Control over passes to run&lt;br /&gt;
* Improved traceability of input to output source code lines&lt;br /&gt;
* Added generation of log files for each pass that capture all output from the console&lt;br /&gt;
* Project files are now stored compressed to save space&lt;br /&gt;
* Reworked the status messages of the flow&lt;br /&gt;
* Improved profile-guided execution counts of for loops&lt;br /&gt;
* Added more information to properties view of HTG representation&lt;br /&gt;
* Switched file structure for parallelization constraints to reduce the number of required entries&lt;br /&gt;
* Added Infineon TC387 platform&lt;br /&gt;
* Made the analysis for transformations more robust&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;bugfixes-6&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Crash for arguments with pointer case (e.g. (void*) arg)&lt;br /&gt;
* Crash with function calls used in variable initialization&lt;br /&gt;
* Assertion caused by repeated function declarations in one translation unit&lt;br /&gt;
* Various conflicting types errors&lt;br /&gt;
* Wrong placement of global variables&lt;br /&gt;
* Typedef redefinition was always reported as error&lt;br /&gt;
* Function declaration and implementation of different but compatible function types caused errors&lt;br /&gt;
* Fixed several issues with files not being closed correctly in the GUI&lt;br /&gt;
* Fixed error in size calculation in recursive structs&lt;br /&gt;
* Propagation of absolute number of executions over function calls&lt;br /&gt;
* Errors in duplication of function calls&lt;br /&gt;
* Detection of recursive function calls in unused functions&lt;br /&gt;
* Type deduction was wrong in many cases (e.g. &amp;lt;code&amp;gt;enum&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;++&amp;lt;/code&amp;gt;)&lt;br /&gt;
* void-cast of function call caused incorrect code&lt;br /&gt;
* Removed automic inclusion of System32 folder in path on Windows&lt;br /&gt;
* Fixed bug with PATH variable on Windows&lt;br /&gt;
* Fixed path separation on Linux&lt;br /&gt;
* Wrong messages about assignments to constant variables&lt;br /&gt;
* Fixed layout of advanced settings page&lt;br /&gt;
* Renamed _emx_main.c to _emx_t_main.c to avoid conflicts with sources named main.c&lt;br /&gt;
* Functions called via function pointers/references were considered unused&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2021.06&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2021.06 ==&lt;br /&gt;
&lt;br /&gt;
* Added line information for warning “Variable is defined externally”&lt;br /&gt;
* Code generation: Added supported for generating inline assembler&lt;br /&gt;
* ConsistencyChecker: Introduced different levels of strictness and added corresponding project setting&lt;br /&gt;
* DepChainAnalysis: Added reason to warning if a function could not be analyzed&lt;br /&gt;
* Frontend / Model / Code generation: Supporting switch case expressions to contain generic instructions (e.g. enumerators) instead of just integers&lt;br /&gt;
* Frontend: Added support for inline assembler&lt;br /&gt;
* Frontend: Handling of null statements improved (especially if labeled or within empty body blocks) HTG: Adding task clusters for goto instructions&lt;br /&gt;
* Hardware support: Added the optimized ringbuffer communication models ringbuf_fixed_fork (the new default) and ringbuf_fixed_thread based on the existing Aurix optimized ringbuffer implementation&lt;br /&gt;
* Hardware support: Implemented new communication API:EMXAPI prefix replaced with EMX, Added functions to send and receive float and double types, Values to be sent/received by scalar communication functions are now passed by value and as the return value, Argument order changed so that the first four arguments of all functions are: src, dst, id and index, followed by value/buffer arguments when present&lt;br /&gt;
* Hardware support: Renamed communication model names ringbuf-&amp;amp;gt;ringbuf_fork and singlecopy_sharedmem-&amp;amp;gt;ringbuf_thread&lt;br /&gt;
* Product: Updated provided JRE on linux to 11.0.11&lt;br /&gt;
* Wizard: Added communication test example project&lt;br /&gt;
* Bugfix: Custom paths were not considered for executing external tools&lt;br /&gt;
* Bugfix: DepChainAnalysis: Fixed crash if a function was not duplicated&lt;br /&gt;
* Bugfix: ExtractMain transformation: Converting function to main was not working if the calling function was not main&lt;br /&gt;
* Bugfix: Fixed handling of the size of alias types&lt;br /&gt;
* Bugfix: Fixed some problems related to BasicBlock file locations&lt;br /&gt;
* Bugfix: Frontend / Code Generation: Handling of case blocks with { } was not working&lt;br /&gt;
* Bugfix: Frontend: Correct placement of pragmas in front of labels&lt;br /&gt;
* Bugfix: GUI: Re-initialize compiler defaults when project settings is changed&lt;br /&gt;
* Bugfix: SSA: Crash in SSATraversal caused by incorrect usedef detection of parameters&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2021.03a&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2021.03a ==&lt;br /&gt;
&lt;br /&gt;
* Code generation: Template processing is deleting template files directly after processing&lt;br /&gt;
* DepChainAnalysis: Added XML output (depchainanalysis.xml)&lt;br /&gt;
* DepChainAnalysis: Bugfix: Function calls with unused return value were broken&lt;br /&gt;
* Flow: Introduced source template processing of &#039;&#039;.ftl and &#039;&#039;.twig files. An option was added in general settings to enable that feature.&lt;br /&gt;
* GUI: Source template GUI option now also added for non-C inputs and defaults to disabled&lt;br /&gt;
* Performance estimation: Refactored BBDurationProvider and BBDurationEstimator&lt;br /&gt;
* Performance estimation: Refactored procedure call overhead&lt;br /&gt;
* Settings: Improved handling of false root procedures&lt;br /&gt;
* Supporting EMX_EXTRACTMAIN pragma to trigger extract main transformation. The extract main trafo uses the pragma to apply the transformation after all other transformations.&lt;br /&gt;
* Template processing: Introduced generic project-based variables&lt;br /&gt;
* Trafo: Added loop interchange transformation&lt;br /&gt;
* Bugfix: C Frontend: Pragma placement&lt;br /&gt;
* Bugfix: Crash in case of unary operator within while condition&lt;br /&gt;
* Bugfix: Exception caused by loop analyzer in case of reverse “for” loop&lt;br /&gt;
* Bugfix: Fixed several GUI and flow errors&lt;br /&gt;
* Bugfix: ParallelPostCodeGen: Fixed check for empty source folders list&lt;br /&gt;
* Bugfix: Parameters no longer removed from function without body&lt;br /&gt;
* Bugfix: Project wizard stored wrong String in .properties for InputLanguage&lt;br /&gt;
* Bugfix: TargetPlatform: GUI was broken in case a software platform was missing&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2021.03&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2021.03 ==&lt;br /&gt;
&lt;br /&gt;
* Added GUI mechanism to insert timing instructions around functions and at blocks marked with pragmas&lt;br /&gt;
* Bugfix: CDT Frontend: Variable declaration in the middle could produce wrong code&lt;br /&gt;
* Bugfix: Dangling exception with AliasType&lt;br /&gt;
* Bugfix: GUI: Project wizard was broken for empty workspaces&lt;br /&gt;
* Bugfix: GUI: the presence of a file without extension inside the ECG output folder caused an exception in C2MMapper&lt;br /&gt;
* Bugfix: HTG: Crash caused by a too deep HTG&lt;br /&gt;
* Bugfix: Indirection (dereference) as function call argument&lt;br /&gt;
* Bugfix: PaddingPragmaHandler: EMX_PADDING pragma is working across function boundaries&lt;br /&gt;
* Bugfix: Parallel Code Generation: Return assignment check failed for non-duplicated functions&lt;br /&gt;
* Bugfix: Remove unused functions setting was broken&lt;br /&gt;
* Bugfix: Scheduler: Root function forcibly clustered due to multiple returns are handled correctly&lt;br /&gt;
* Bugfix: Scheduler: exception caused by main function with multiple return statements&lt;br /&gt;
* Bugfix: Size deduction from variable initialization was broken for global variables&lt;br /&gt;
* Bugfix: The analysis failed in case a variable was available only as an external declaration. A warning is now issued in that case.&lt;br /&gt;
* Bugfix: incorrect view when switching between input languages&lt;br /&gt;
* DepChainAnalysis: Improved dependency chain analysis to take repeating function calls into account and added delay suffix for each dependency&lt;br /&gt;
* DepChainAnalysis: Supporting analysis of function calls&lt;br /&gt;
* DepChainAnalysis: Supporting control dependency calculation&lt;br /&gt;
* DepChainAnalysis: Supporting functions with return parameters&lt;br /&gt;
* Eclipse: Switched to version 2021.03&lt;br /&gt;
* Flow view: removed unnecessary methods for button state restores&lt;br /&gt;
* Flow: Introduced lambda-based CallNormalizer that reimplements the old functionality to move every call into its own basic block&lt;br /&gt;
* Flow: Output of eMCG is now stored in generated_files&lt;br /&gt;
* Frontend: Added C correctness checks&lt;br /&gt;
* GUI: Added button to generate transformed code&lt;br /&gt;
* GUI: Added indicator of execution frequency to block representation in HTG view&lt;br /&gt;
* GUI: Added tab in properties view for displaying source code&lt;br /&gt;
* GUI: Anti and output dependencies are not rendered if they are between tasks on different cores&lt;br /&gt;
* GUI: Children of blocks are scaled to make sure they fit into the parent&lt;br /&gt;
* GUI: HTG and Scheduler view: Added support for bringing up the context menu using the keyboard&lt;br /&gt;
* GUI: HTG and Scheduler view: Fixed a bug that caused invalid behavior when focus was lost during mouse drag&lt;br /&gt;
* GUI: HTG and Scheduler view: Made selection behavior more consistent with standard windows selection behavior&lt;br /&gt;
* GUI: HTG: Changing ecg_decisions.ini file only if the content changed. That prevents unnecessary eCG runs.&lt;br /&gt;
* GUI: The length of THEN/ELSE blocks is scaled according to their execution frequency&lt;br /&gt;
* GeCoS: Deleted several unused classes&lt;br /&gt;
* ParallelCodeGeneration: Leaving non-parallelized functions unchanged&lt;br /&gt;
* ParallelCodeGeneration: Removed user includes from _emx_main.h&lt;br /&gt;
* Performance estimation: Brought back execution frequency assumptions in case code cannot be analyzed&lt;br /&gt;
* Performance estimation: Changed perf test platform to aurix_tc397_kit&lt;br /&gt;
* Performance estimation: Improved LLVM profiling provider to handle nested control constructs and while loops&lt;br /&gt;
* Settings: Added setting to disable consistency checking&lt;br /&gt;
* Settings: Moved host profiling settings from advanced to general&lt;br /&gt;
* Settings: Supporting &amp;lt;Makefile&amp;gt; placeholder in compile command settings that is replaced by Makefile or Makefile.gen (whatever exists)&lt;br /&gt;
* Supporting &amp;lt;code&amp;gt;#pragma EMX_PADDING &amp;amp;lt;pad&amp;amp;gt;&amp;lt;/code&amp;gt; pragma to increase the size of the last dimension of an array to a multiple of &amp;lt;code&amp;gt;pad&amp;lt;/code&amp;gt;&lt;br /&gt;
* TargetPlatform: Supporting run command specification in software platform (e.g. &amp;lt;code&amp;gt;&amp;amp;lt;Run command=&amp;amp;quot;make sim&amp;amp;quot;/&amp;amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
* TargetPlatform: Supporting specification of compile settings in software platform&lt;br /&gt;
* TargetPlatform: Used software platform description for parallel testing&lt;br /&gt;
* Templates: Added EMXAPI_SyncCores and EMXAPI_GetCore API functions&lt;br /&gt;
* Templates: Converted timing template to use FTL instead of macros&lt;br /&gt;
* Trafo: Added ExtractMain transformation&lt;br /&gt;
* Trafo: Added ObfuscationTrafo to make identifiers obscure&lt;br /&gt;
* Trafo: Added function inline transformation&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2020.12&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2020.12 ==&lt;br /&gt;
&lt;br /&gt;
* Added Apache FreeMarker (.ftl file extension) as additional template language&lt;br /&gt;
* Flow GUI: Parsing the C source code is now a pass&lt;br /&gt;
* Switched to Eclipse-2020-09&lt;br /&gt;
* HTG and properties view: Displaying call overhead&lt;br /&gt;
* Scheduler / Performance estimation: Refactored procedure call overhead calculation/handling&lt;br /&gt;
* GUI: refactored eCG and ePS view to use same base&lt;br /&gt;
* AURIX: Implemented high-performance communication library using statically determined absolute addresses&lt;br /&gt;
* AURIX: Added new combined template for TC297 and TC397&lt;br /&gt;
* Parallel Code Generation: Implement feature to convert functions to static (Parallelization settings, activated by default)&lt;br /&gt;
* Performance estimation: Reworked calculation of call overhead&lt;br /&gt;
* Added post-placement communication optimization by moving send as early and recv as late as possible (Advanced setting, deactived by default)&lt;br /&gt;
* Most important bug fixes:&lt;br /&gt;
** Bugfix: Return type of parallelized functions&lt;br /&gt;
** Bugfix: Pragma-controlled clustering (&amp;lt;code&amp;gt;EMX_TASK_CLUSTER&amp;lt;/code&amp;gt;) of tasks was broken&lt;br /&gt;
** Bugfix: &amp;lt;code&amp;gt;EMX_TASK_ALLOC&amp;lt;/code&amp;gt; pragmas appeared in generated code&lt;br /&gt;
** Bugfix: Linux: Issue with short task names on task termination&lt;br /&gt;
** Bugfix: Preserving static keyword and name of static global variables&lt;br /&gt;
** Bugfix: Fixed support for &amp;lt;code&amp;gt;EMX_INITCODE&amp;lt;/code&amp;gt; pragma&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2020.06&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2020.06 ==&lt;br /&gt;
&lt;br /&gt;
* emmtrix project wizard now can import multiple C files&lt;br /&gt;
* Fixed handling of C projects without main function&lt;br /&gt;
* Introduced new indicators for status of passes&lt;br /&gt;
* Reworked handling of compiler settings&lt;br /&gt;
* Switched to internal pass infrastructure&lt;br /&gt;
* Switched to Eclipse version 2020-03&lt;br /&gt;
* Switched from Jasva 8 to Java 11&lt;br /&gt;
* Bugfix: CDTFrontend crashed for “for (;;) {}” loops [TS]&lt;br /&gt;
* TargetPlatform: Added support for additional function information (funcinfo.xml)&lt;br /&gt;
* Bugfix: Fixed template of MBA5728&lt;br /&gt;
* Added option to disable removal of unsused functions&lt;br /&gt;
* Added option to disable reordering of tasks&lt;br /&gt;
* Added option to parse of C files in eCG output folder&lt;br /&gt;
* Bugfix: Fixed generation of functions with simple declarations&lt;br /&gt;
* Removed enforced option “-B” for sequential tests&lt;br /&gt;
* Added handling of include directories&lt;br /&gt;
* Added button to parse C code in C projects&lt;br /&gt;
* Fixed various bugs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2019.11.07&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2019.11.07 ==&lt;br /&gt;
&lt;br /&gt;
* Fixed definition of custom paths&lt;br /&gt;
* Several bug fixes regarding global variables&lt;br /&gt;
* Several bug fixes regarding parameters of parallelized functions&lt;br /&gt;
* Improved generation of OpenCL code&lt;br /&gt;
* Improved handling of static keyword&lt;br /&gt;
* Fixed bug in analysis of data dependencies&lt;br /&gt;
* Several other minor bug fixes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2019.03.20&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2019.03.20 ==&lt;br /&gt;
&lt;br /&gt;
* Support for array of structs in emmtrix Code Generator&lt;br /&gt;
* Various improvements for data type selection in eCG&lt;br /&gt;
* Fixed bug that might cause parallel execution of passes within ePS&lt;br /&gt;
* Added option to set C macros for C workflow&lt;br /&gt;
* Improved error messages from CDTFrontend&lt;br /&gt;
* Redesigned SSH password and confirmation dialog&lt;br /&gt;
* Fixed various bugs related to C code input&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2018.08.09&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2018.08.09 ==&lt;br /&gt;
&lt;br /&gt;
* Support for Linux. We have tested it under Xubuntu 18.04. Since it is the first version for Linux, additional bugs compared to Windows cannot be excluded.&lt;br /&gt;
* Customization of the target platform: a target folder is automatically generated in the project folder, in which the various files for the target platform are located. Here e.g. timings for library functions can be stored. More details can be found in the ePS User Guide (just click on Parallel Studio Help in the tool).&lt;br /&gt;
* Support for software templates: in the generated subfolder “template” files can be stored that are to be used for building the parallel code. In addition, existing files can be customized for specific projects and templates can be filled in dynamically using Jtwig (http://jtwig.org/). Again, more details can be found in the ePS User-Guide&lt;br /&gt;
* Improved C support: processing of generic C code (e.g. with structs and switch cases) has been improved&lt;br /&gt;
* Static performance analysis has been reworked. Estimated times from previous versions may differ especially in nested structures. With the new method, it is no longer necessary that the input code is executed on the host system. Instead, all values are calculated as far as possible and otherwise populated with default values.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2017.07.04&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2017.07.04 ==&lt;br /&gt;
&lt;br /&gt;
* Restructured settings&lt;br /&gt;
* Removed option of eCG to mimic the output of MATLAB&lt;br /&gt;
* Integrated automatic consistency checker into the flow&lt;br /&gt;
** Model consistency&lt;br /&gt;
** Order consistency&lt;br /&gt;
** Schedule checker (times, containment, order)&lt;br /&gt;
* Unified video interfaces across all platforms&lt;br /&gt;
* Switched to Eclipse Oxygen&lt;br /&gt;
* Removed support for GeCoS scripts&lt;br /&gt;
* Improved sequential testing for C flow&lt;br /&gt;
* Simplified support of parallelization of functions with pointer parameters&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Fixed scheduler crash with function prototypes that omit parameter names&lt;br /&gt;
* Updated instruction performance for Cortex-A7 and Cortex-A15 on ODROID XU4&lt;br /&gt;
* Fixed a bug that could cause the tabular communication cost model to assign transfer costs for same-core transfers&lt;br /&gt;
* Fixed a bug that prevented to correctly derive a tabular communication cost models when multiple commtable files where present for the same target platform (affected heterogeneous architectures only)&lt;br /&gt;
* Analysis results are integrated into a node’s property view&lt;br /&gt;
* Fixed support for emx_task_alloc and emx_task_cluster pragmas: pragmas now take precedence over allocation made in the GUI or via the constraint settings JSON file&lt;br /&gt;
* Various fixes and improvements regarding user decisions&lt;br /&gt;
* Fixed a bug that would cause user decisions that were not changed in the current session to be removed from ecg_decisions.ini upon save of the file&lt;br /&gt;
* corrected calculation of start and finish times of for loops&lt;br /&gt;
* Fixed display of loops that are mapped to multiple cores&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2017.03.23&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2017.03.23 ==&lt;br /&gt;
&lt;br /&gt;
* Added Simulink Model Viewer, which currently supports:&lt;br /&gt;
** display of top level of model&lt;br /&gt;
** descend to sub block by double clicking on block&lt;br /&gt;
** block hover and selection&lt;br /&gt;
** history: Back/Forward/Home to model root&lt;br /&gt;
** zoom: 0,25 - 2.00 using toolbar or mouse wheel&lt;br /&gt;
* Support Simulink models&lt;br /&gt;
* HLS: Added synchronization for FPGA accelerators&lt;br /&gt;
* Fixed receive of pipe communication&lt;br /&gt;
* Enabled basic testing of C code in the C based flow&lt;br /&gt;
* Improved error handling when accessing projects/settings&lt;br /&gt;
* HLS: Added software interface generation for custom IP&lt;br /&gt;
* HLS: Added IP insertion into template Vivado project and bitstream generation&lt;br /&gt;
* HLS: Improved error handling and reporting&lt;br /&gt;
* Added video support for FriendlyARM NanoPi M3&lt;br /&gt;
* UnifyParameters now adds names to all unnamed function parameters&lt;br /&gt;
* Improved upgrade capabilities of project wizard&lt;br /&gt;
** automatic deletion of old epsproject and properties files&lt;br /&gt;
** generation of new epsproject and properties files&lt;br /&gt;
* Added Properties view to eCG and ePS perspective&lt;br /&gt;
* Added pass to place the eCG decision pragmas at parent blocks&lt;br /&gt;
* Improved error handling of update decision job&lt;br /&gt;
* Improved error handling of script execution&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2017.03.08&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2017.03.08 ==&lt;br /&gt;
&lt;br /&gt;
* Added support for Aurix FreeRTOS template and compiler script&lt;br /&gt;
* Added support for individual compiler settings for sequential, parallel and platform tests. These include:&lt;br /&gt;
** pre-/post-build bash script execution&lt;br /&gt;
** customization of CFLAG and LDFLAG&lt;br /&gt;
** customization of environment variables&lt;br /&gt;
* Improved support for handling of external files&lt;br /&gt;
* Improved support of __cplusplus define&lt;br /&gt;
* Added platform description for NanoPI M3 (S5P6818 Quad-Core Cortex-A53 1.4 GHz)&lt;br /&gt;
* Added platform description attribute “active” that determines whether a description is loaded/an available target platform&lt;br /&gt;
* HLS: improved the result checker to ensure compatability with Vivado HLS&lt;br /&gt;
* HLS: improved error checking of synthesis progress&lt;br /&gt;
* HLS: code refactoring and miscellaneous minor fixes&lt;br /&gt;
* Scheduler View: set minimal width of blocks to one pixel to improve placement of data dependencies&lt;br /&gt;
* Scheduler View: removed gaps beetween adjacent blocks to better reflect the blocks’ actual runtime&lt;br /&gt;
* Scheduler View: block selection markers are now drawn after blocks, so that they may not be overlapped by adjacent blocks anymore&lt;br /&gt;
* HTG View: moved information about from right pane to the properties view&lt;br /&gt;
* HTG View: added button to show the property view&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2016.27.01&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2016.27.01 ==&lt;br /&gt;
&lt;br /&gt;
* emmtrix Technologies GmbH was founded&lt;br /&gt;
[[Category:emmtrix Tools]]&lt;/div&gt;</summary>
		<author><name>Oliver.Wolf.EMX</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=emmtrix_Studio_Release_Notes&amp;diff=2362</id>
		<title>emmtrix Studio Release Notes</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=emmtrix_Studio_Release_Notes&amp;diff=2362"/>
		<updated>2024-11-29T20:24:47Z</updated>

		<summary type="html">&lt;p&gt;Oliver.Wolf.EMX: /* emmtrix Studio Release Notes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;emmtrix-studio-release-notes&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= emmtrix Studio Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Release 2024.11 ==&lt;br /&gt;
&lt;br /&gt;
=== New Features ===&lt;br /&gt;
* New/improved transformations:&lt;br /&gt;
** ControlStructSimplify trafo: Added new trafo to simplify control structures&lt;br /&gt;
** VarCoalescing trafo: Added transformation to remove unnecessary copy operations by coalescing (i.e. reusing) variables&lt;br /&gt;
** ArrayToScalar trafo: Extended trafo to convert arrays to single scalars&lt;br /&gt;
** VarSplit trafo: Automatically perform loop if splitting on affected loops&lt;br /&gt;
** Vectorization trafo: Using platform SIMD vector length property as default vector length&lt;br /&gt;
** LoopUnswitch trafo: Added new trafo to unswitch `for` loops containing `if` conditions&lt;br /&gt;
** ConstPropagation trafo: Added `remove_dead_blocks=&amp;lt;no|defensive|aggressive&amp;gt;` parameter to remove dead blocks after constant propagation&lt;br /&gt;
** ConstantPropagation now supports arrays&lt;br /&gt;
** VectorizeTrafo: Added warnings for constructs that might lead to incorrect code&lt;br /&gt;
** Vectorization: Showing analysis abort reasons (For loop structure, analysis of memory accesses, detection of nested structures)&lt;br /&gt;
* Target platforms: Implemented Tasking/Synopsys targets for Aurix Triboard TC499a STD&lt;br /&gt;
* Vectorization: Supporting sin, cos and exp operations&lt;br /&gt;
* Full support for PPU of AURIX TC4x (reduction, rounding, multiply-accumulate...)&lt;br /&gt;
* Pragmas: `pragmas.json`: Supporting global, variable, parameter, and function declaration pragmas&lt;br /&gt;
* Transformation: Showing reason why a transformation cannot be applied&lt;br /&gt;
&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
* CLI: Added new `addtrafo &amp;lt;trafoname&amp;gt; &amp;lt;path&amp;gt; [--jsonparams &amp;lt;params&amp;gt;]` command to add a trafo to the `emx_trafos_v2.json` file&lt;br /&gt;
* GUI: Combo box to switch the active project is now disabled while a pass is running&lt;br /&gt;
* Performance Estimation: Improved loop analysis by using maximum number of iterations and supporting while loops. Uses maximum number of iterations if available and sets `avg = (min + max)/2`&lt;br /&gt;
* CLI: Added new `createproject2 &amp;lt;name&amp;gt; [--folder &amp;lt;dir&amp;gt;]` command&lt;br /&gt;
* C parsing: Changed handling of include directories&lt;br /&gt;
** Subdirectories of include folder are not automatically added as include folders anymore&lt;br /&gt;
** Parsing stops with an error message when an include cannot be resolved&lt;br /&gt;
** The name of all parsed header files and where they are included is printed on the console when debugging is enabled&lt;br /&gt;
&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
* Assembly-based performance estimation: Fixed incorrect code caused by const data type in ?: operator&lt;br /&gt;
* Vectorization: Fixed incorrect code generation caused by comments at the end of the for body&lt;br /&gt;
* C parsing: Fixed that pragmas within included files were not considered&lt;br /&gt;
* LoopInterchange trafo: Fixed exception caused by loop local variable used within variable initialization&lt;br /&gt;
* Vectorization: Fixed that all linear memory accesses were considered as indexed&lt;br /&gt;
* Vectorization: Fixed vectorization of loops containing unsupported code&lt;br /&gt;
* Performance estimation: Fixed handling of nested folder structures for ASM performance estimation&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
* Removed support for GPUs (CUDA and OpenCL code generation)&lt;br /&gt;
* Removed support for FPGAs (high-level synthesis)&lt;br /&gt;
* ParallelCodeGeneration: Deactivated default static array conversion for test code generation (can be activated in settings)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Release 2024.07 ==&lt;br /&gt;
&lt;br /&gt;
=== New Features ===&lt;br /&gt;
&lt;br /&gt;
* New/improved transformations&lt;br /&gt;
** Deroll trafo: Added new trafo to create loops for similar subsequent statements or constructs&lt;br /&gt;
** LoopFusion trafo: Added new trafo to fuse two subsequent for loops with the same iteration space&lt;br /&gt;
** PtrResolve trafo: Added new trafo to resolve pointers and replace indirect memory accesses by direct (used in eDA)&lt;br /&gt;
** MakeStatic trafo: Added new trafo to make functions static if used only locally to provide optimization potential for the compiler and ease the linking&lt;br /&gt;
** ArrayToScalar trafo: Added new trafo to convert arrays to scalars&lt;br /&gt;
** LoopUnroll trafo: &lt;br /&gt;
*** Added possibility to apply &amp;lt;code&amp;gt;LoopUnroll&amp;lt;/code&amp;gt; to all for-loops of selected functions&lt;br /&gt;
*** Automatically perform full loop unrolling when the unrolling factor exceeds the constant number of iterations&lt;br /&gt;
&lt;br /&gt;
* emmtrix Dependency Analyzer (eDA)&lt;br /&gt;
** Added result caching mechanism to speed up recurring analysis&lt;br /&gt;
** Added support for label propagation&lt;br /&gt;
** Added shortest-path and reachability report to follow how values/signals propagate&lt;br /&gt;
&lt;br /&gt;
* emmtrix Performance Estimator (ePE)&lt;br /&gt;
** Added min/max runtime calculation&lt;br /&gt;
&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
* C code handling&lt;br /&gt;
** Preserving &amp;lt;code&amp;gt;#define&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;#undef&amp;lt;/code&amp;gt; preprocessor directives&lt;br /&gt;
** Parsing C code comments for analysis and code generation&lt;br /&gt;
** Added option to set charsets for source code files&lt;br /&gt;
** Respecting the correct order of #include directives and other declarations&lt;br /&gt;
&lt;br /&gt;
* GUI Improvements&lt;br /&gt;
** Settings: Sorted and restructured settings&lt;br /&gt;
** Improved usability of emmtrix Studio project wizard&lt;br /&gt;
&lt;br /&gt;
* Analysis Time Improvements&lt;br /&gt;
** Improved performance of SSA calculation&lt;br /&gt;
** Improved analysis performance by caching result of variable usage&lt;br /&gt;
** Added internal caching for performance estimation&lt;br /&gt;
** Improvements of internal type calculations&lt;br /&gt;
** Added cache to improve performance to calculations in eDA&lt;br /&gt;
** Fixed performance bottleneck in dominator calculation in eDA&lt;br /&gt;
&lt;br /&gt;
* emmtrix Parallel Studio&lt;br /&gt;
** Added option to enable parallelization for shared memory (improves global variables synchronization)&lt;br /&gt;
&lt;br /&gt;
* General&lt;br /&gt;
** Improved support for pointers in dependency analysis in eDA&lt;br /&gt;
** Improved constant propagation by using sparse conditional constant propagation algorithm&lt;br /&gt;
** Commandline interface learned to run commands from script file&lt;br /&gt;
&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
* Fixed handling of enum declarations&lt;br /&gt;
* Improved support for nested folder structures&lt;br /&gt;
* Crash in SSA algorithm&lt;br /&gt;
* Fixed automatic insertion of forward declaration when necessary&lt;br /&gt;
* Handling of ArithmeticException e.g. caused by division by zero in const propagation&lt;br /&gt;
* Fixed stack overflow in SSA algorithm caused by deep CFGs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2023.11&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2023.11 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;new-features&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== New Features ===&lt;br /&gt;
&lt;br /&gt;
* All emmtrix tools are now gathered in the emmtrix Studio framework with their own perspectives&lt;br /&gt;
** emmtrix Parallel Studio&lt;br /&gt;
** emmtrix Performance Estimator&lt;br /&gt;
*** TargetLink Extension (coming soon)&lt;br /&gt;
*** Simulink Extension (on request)&lt;br /&gt;
** emmtrix Dependency Analyzer&lt;br /&gt;
** emmtrix Code Vectorizer (coming soon)&lt;br /&gt;
** emmtrix Model Code Generator&lt;br /&gt;
** emmtrix Code Generator&lt;br /&gt;
* Windows: A portable Cygwin installation is provided to remove the need to install any additional third-party tools&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;improvements&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
&lt;br /&gt;
* Hierarchical Program View: New indicator icon for tasks with measured timing data&lt;br /&gt;
* Code Transformations: Added setting in GUI to enable/disable code transformation analysis&lt;br /&gt;
* Frontend: Print out missing include files for all processed files for easier project setup and debugging&lt;br /&gt;
* Eclipse: Update to version 2023-06&lt;br /&gt;
* EMX-LLVM: Update to version 230901&lt;br /&gt;
* Added support for alias attribute (e.g. &amp;lt;code&amp;gt;__attribute__((alias(&amp;amp;quot;name&amp;amp;quot;)))&amp;lt;/code&amp;gt;) for functions and variables&lt;br /&gt;
* InstructionSimplifier trafo: Added the following simplifications:&lt;br /&gt;
** &amp;lt;code&amp;gt;const ? a : b&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;0 - x&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;-x&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;x [-&amp;amp;amp;^|/%] x&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;x [+-] (-y)&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;x [-+] y&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;(-x) + y&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;y - x&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;x [*/] (-1)&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;-x&amp;lt;/code&amp;gt;&lt;br /&gt;
* ExplicitCastInserter trafo: Added trafo to insert explicit type casts in expressions where implicit casts are performed&lt;br /&gt;
** &amp;lt;code&amp;gt;if (expr)&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;if ((_Bool)expr)&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;float_var = 10&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;float_var = (float)10&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;ptr_to_long_int + char&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;ptr_to__long_int + (int)char&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;bool_var * unsigned_long_var&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;(unsigned long)bool_var * unsigned_long_var&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;0 ? bool_var : vol_int_var&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;(_Bool)0 ? (volatile int)bool_var : vol_int_var&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;func_call(signed_int_var + long_double_var)&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;func_call((long double)signed_int_var + long_double_var)&amp;lt;/code&amp;gt;&lt;br /&gt;
* Simulink viewer: Improved usability&lt;br /&gt;
** Added sliders for larger models&lt;br /&gt;
** Added labels for simple blocks (e.g. sum, product)&lt;br /&gt;
** Improved contrast of background colors&lt;br /&gt;
** Improved positioning of labels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;bugfixes&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Parallelization: Fixed generation of inconsistent ids from send/recv calls&lt;br /&gt;
* Parallelization: Detect variable length arrays as unsupported and clustered&lt;br /&gt;
* Fixed wrong reordering of declarations for automatic merging of blocks&lt;br /&gt;
* Fixed access analysis of function call arguments including &amp;lt;code&amp;gt;&amp;amp;amp;&amp;lt;/code&amp;gt; and structs&lt;br /&gt;
* Fixed crash caused by struct field passed as pointer to function&lt;br /&gt;
* Project Wizard got stuck during project creation&lt;br /&gt;
* Performance Estimation: Fixed bug with LLVM IR based estimation and multiple source files&lt;br /&gt;
* Bugfix for handling custom paths replacing the system paths&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;emmtrix-parallel-studio-release-notes&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= emmtrix Parallel Studio Release Notes =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2022.10&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2022.10 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;improvements-1&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
&lt;br /&gt;
* Added support for GCC extension [https://gcc.gnu.org/onlinedocs/gcc/Statement-Exprs.html statement expressions]&lt;br /&gt;
* Update EMX-LLVM tools to release 2022.11.18&lt;br /&gt;
* Added separate template files for “Parallel Tests” (independent from sequential test template)&lt;br /&gt;
* Eclipse: Updated to version 2022.06&lt;br /&gt;
* Added setting to specify the path for EMX-LLVM tools&lt;br /&gt;
* Added new transformation to convert &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; loops to &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; loops&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;bugfixes-1&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Avoid false duplication of functions&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2022.07&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2022.07 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;new-features-1&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== New Features ===&lt;br /&gt;
&lt;br /&gt;
* Added support for assembly-based performance estimation&lt;br /&gt;
** Added option to enable assembly-based performance estimation in advanced settings&lt;br /&gt;
** Supporting Tricore using HighTec GCC compiler (tricore-gcc)&lt;br /&gt;
** Supporting ARM Cortex-A7 using [https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads ARM GNU Toolchain]&lt;br /&gt;
** Updated target defintions with assembler performance estimation&lt;br /&gt;
* Added new disassembly view with traceability between HTG and C source code&lt;br /&gt;
** Generating &amp;lt;code&amp;gt;assembly.asmmodel&amp;lt;/code&amp;gt; file storing disassembly and mapping information&lt;br /&gt;
** Disassembly view: Added disassembly view (AsmEditor) for &amp;lt;code&amp;gt;assembly.asmmodel&amp;lt;/code&amp;gt; files that displays disassembly information&lt;br /&gt;
** Disassembly view: Option to display timing information from assembly-based performance information&lt;br /&gt;
** Disassembly view: Option to reorder basic blocks to better match the order within the source file&lt;br /&gt;
** Disassembly view: Automatically highlighting the C source line in a corresponding editor if the caret is changed to an assembly instruction&lt;br /&gt;
** Disassembly view: Automatically highlighting the assembly instruction in a corresponding disassembly view if the caret is changed to a C expression&lt;br /&gt;
** HTG view: Added new &amp;lt;code&amp;gt;ASM&amp;lt;/code&amp;gt; button to open disassembly view&lt;br /&gt;
** HTG view: Automatically highlighting the assembly instructions within disassembly view if a HTG node is selected&lt;br /&gt;
** Currently supports Infineon AURIX and ARM Cortex-A7&lt;br /&gt;
* Performance estimation workflow&lt;br /&gt;
** Added new GUI elements to handle performance estimation to workflow&lt;br /&gt;
** Generation of HTML report with information on function level&lt;br /&gt;
** Added support for loading timing data from simulation and hardware&lt;br /&gt;
* Added support for LLVM-IR-based performance estimation&lt;br /&gt;
** Independent from target compiler&lt;br /&gt;
** Example target specification available for Infineon AURIX TC3xx&lt;br /&gt;
* Added new code sinking transformation&lt;br /&gt;
** The transformation moves assign statements to positions where it is executed less frequently&lt;br /&gt;
** A threshold value is given that specifies the minimum reduction factor for the execution count (threshold)&lt;br /&gt;
* Added new loop-invariant code motion transformation&lt;br /&gt;
** The transformation moves only statements by default&lt;br /&gt;
** It optionally moves sub-expressions by creating temporary variables (sub_exprs=1)&lt;br /&gt;
** It optionally reorders invariant expressions by applying the commutative and associative laws (reorder=1)&lt;br /&gt;
** It includes an built-in test about the number of moved expressions (expected_moved_exprs)&lt;br /&gt;
* Added checksum based upgrade mechanism for &amp;lt;code&amp;gt;target&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;template&amp;lt;/code&amp;gt; folders&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;improvements-2&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
&lt;br /&gt;
* Template processing: Added variables &amp;lt;code&amp;gt;C_FILES_PROCESSED&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;C_FILES_ADDITIONAL&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;C_FILES_TOCOMPILE&amp;lt;/code&amp;gt;&lt;br /&gt;
* CPP2C: Supporting projects with multiple *.cpp files&lt;br /&gt;
* Active project management&lt;br /&gt;
** GUI: Project list in workflow view now has an empty entry to deselect any project&lt;br /&gt;
** Bugfix: The active project is now stored explicitly in the workspace to avoid any ambiguity&lt;br /&gt;
** Bugfix: Fixed detection of changes to projects (rename, import, copy, etc.)&lt;br /&gt;
* Improved WhileToFor transformation with better detection of step and init code&lt;br /&gt;
* Improved loop unrolling transformation by adding support for declarations, unknown number of exections, returns and breaks&lt;br /&gt;
* C library: Supporting &amp;lt;code&amp;gt;va_start&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;va_end&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;va_arg&amp;lt;/code&amp;gt; of stdarg.h&lt;br /&gt;
* Improved trip count calculation of for loops by using local constant propagation&lt;br /&gt;
* Improved check for unsupported C constructs that will be automatically clustered&lt;br /&gt;
** Switch case constructs (that are not converted to if)&lt;br /&gt;
** Double pointers: e.g. &amp;lt;code&amp;gt;int **a&amp;lt;/code&amp;gt;&lt;br /&gt;
** Do while loops&lt;br /&gt;
** Goto statements&lt;br /&gt;
** Functions with multiple return paths (no return or one return at the end is allowed)&lt;br /&gt;
** Loops (for, while, do while) with continue&lt;br /&gt;
** Loops (for, while, do while) with break&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;bugfixes-2&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Parallel code generation: Header file &amp;lt;code&amp;gt;_emx_main.h&amp;lt;/code&amp;gt; was included multiple times&lt;br /&gt;
* Control-To-Goto: Fixed conversion of short-circuit operations within variable initialization&lt;br /&gt;
* Bugfix: Constant propagation with pointers&lt;br /&gt;
* Fixed issues with generation of temporary variables&lt;br /&gt;
* Fixed some GUI related bugs (avoid unnecessary exceptions)&lt;br /&gt;
* Fixed some bugs in the parallel performance estimation (wrong calculation of loops)&lt;br /&gt;
* Fixed Linux related bugs (paths, executable flags)&lt;br /&gt;
* Fixed Run on MATLAB and compare&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;other&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Other ===&lt;br /&gt;
&lt;br /&gt;
* Removed TWIG template support&lt;br /&gt;
* ePS is now using Java 17, required files for Windows and Linux are integrated&lt;br /&gt;
* Release is based on Eclipse 2022.03&lt;br /&gt;
* Update eCG to release from 29/04/22&lt;br /&gt;
* Update CPP2C to release from 29/07/22&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2022.04&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2022.04 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;new-features-2&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== New Features ===&lt;br /&gt;
&lt;br /&gt;
* Transformations:&lt;br /&gt;
** Introduced VarSplit transformation for splitting an array variable into multiple variables&lt;br /&gt;
** Introduced FuncPtrResolve transformation for replacing indirect function calls by if-then-else constructs&lt;br /&gt;
** Introduced &amp;lt;code&amp;gt;InstructionSimplifier&amp;lt;/code&amp;gt; transformation to simplify expressions by applying neutral and zero element optimizations&lt;br /&gt;
** Transformations can now track the reason the analysis failed&lt;br /&gt;
* Standard header files now available in template folder (&amp;lt;code&amp;gt;standard_includes&amp;lt;/code&amp;gt;) and can be edited by the user&lt;br /&gt;
* Introduced new file management (epsfiles.txt)&lt;br /&gt;
** Input files are now defined in the file &amp;lt;code&amp;gt;sources/epsfiles.txt&amp;lt;/code&amp;gt; which follows the syntax of [https://git-scm.com/docs/gitattributes .gitattributes] files&lt;br /&gt;
** It supports the following attributes&lt;br /&gt;
*** &amp;lt;code&amp;gt;action=[none|process|compile|copy]&amp;lt;/code&amp;gt;: Defines what ePS is doing with the file&lt;br /&gt;
**** &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt; or no attribute is ignoring the file&lt;br /&gt;
**** &amp;lt;code&amp;gt;compile&amp;lt;/code&amp;gt; is copying and compiling the file to output folder&lt;br /&gt;
**** &amp;lt;code&amp;gt;copy&amp;lt;/code&amp;gt; is only copying the file to output folder&lt;br /&gt;
**** &amp;lt;code&amp;gt;process&amp;lt;/code&amp;gt; is processing (reading and writing) the C source file by ePS&lt;br /&gt;
*** &amp;lt;code&amp;gt;template=[twig|ftl]&amp;lt;/code&amp;gt;: The file is processed by the specified template engine. A corresponding file extension is removed.&lt;br /&gt;
*** &amp;lt;code&amp;gt;c_preprocess&amp;lt;/code&amp;gt;: The source file is preprocessed through a C/C++ preprocessor&lt;br /&gt;
*** &amp;lt;code&amp;gt;codegen=[eCG|eCPP2C]&amp;lt;/code&amp;gt;: Code generation is applied to the source file&lt;br /&gt;
**** &amp;lt;code&amp;gt;eCG&amp;lt;/code&amp;gt; runs emmtrix Code Generator on the MATLAB or Scilab file&lt;br /&gt;
**** &amp;lt;code&amp;gt;eCPP2C&amp;lt;/code&amp;gt; runs emmtrix C++ to C Compiler on C++ source files&lt;br /&gt;
** Source file status is shown in Project Explorer as specified in epsfiles.txt&lt;br /&gt;
** Default epsfiles.txt file can be created via context menu in Project Explorer or in the Project Settings dialog&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;improvements-3&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
&lt;br /&gt;
* Target platforms:&lt;br /&gt;
** Added Tasking template for the Aurix TC397 platform&lt;br /&gt;
** Added hardware model of SPC58ECxx (PowerPC e200z4 dual-core)&lt;br /&gt;
* Vectorization transformation (still experimental)&lt;br /&gt;
** Improved support for array subscripts with linear memory access pattern&lt;br /&gt;
** Improved source code appearance after vectorization&lt;br /&gt;
** Supporting array subscripts with indexed memory access pattern&lt;br /&gt;
** Supporting vectorization of loops containing unvectorizable expressions&lt;br /&gt;
** Supporting vectorization of simple sub-functions&lt;br /&gt;
** Supporting &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; loops with non-constant iteration count&lt;br /&gt;
** Supporting memory accesses with indirection operator (e.g. &amp;lt;code&amp;gt;*(p+1) = ...&amp;lt;/code&amp;gt;)&lt;br /&gt;
** Supporting &amp;lt;code&amp;gt;?:&amp;lt;/code&amp;gt; operators, generic for loop initialization and non-vectorized local variables&lt;br /&gt;
* Performance estimation: Consider duration of variable initialization and ignoring constant expressions&lt;br /&gt;
* GUI: Changed format of exceptions dialog&lt;br /&gt;
* C library: Added header &amp;lt;code&amp;gt;arpa/inet.h&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;sys/socket.h&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;netinet/in.h&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;netdb.h&amp;lt;/code&amp;gt;&lt;br /&gt;
* Improved support for wide character string and char literals&lt;br /&gt;
* Supporting array size calculation of designated array initializers&lt;br /&gt;
* Performance estimation: Set default to 1 cycle per instruction when no data is available&lt;br /&gt;
* EpsProject: Include directories are relativized if they are part of the project&lt;br /&gt;
* CodeGeneration: Replicate input folder structure&lt;br /&gt;
* Added node context menu to Hierarchical Program View to export task dependencies in DOT or CSV format&lt;br /&gt;
* LLVM tools: Update to release from 27/04/2022&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;bugfixes-3&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Crash caused by &amp;lt;code&amp;gt;if (a = func() == 3)&amp;lt;/code&amp;gt;&lt;br /&gt;
* Frontend: Crash in type compatibility check when variable was redeclared after struct was redeclared&lt;br /&gt;
* Parallel code generation: Missing function prototypes of parallelized functions&lt;br /&gt;
* ParallelCodeGeneration: ‘sources’ folder is now correctly added to the includes&lt;br /&gt;
* Fixed OS-dependent path name that could cause one C file being parsed multiple times&lt;br /&gt;
* Frontend: Crash caused by two nested C99 for loops without curly brackets, e.g. &amp;lt;code&amp;gt;for (int i=0; i&amp;amp;lt;10; ++i) for (int i2; i2&amp;amp;lt;10; ++i2) ...&amp;lt;/code&amp;gt;&lt;br /&gt;
* Function duplication did not consider static variables&lt;br /&gt;
* Type deduction of function pointers&lt;br /&gt;
* Frontend: Improved error handling of false C code (e.g. case outside switch)&lt;br /&gt;
* Fixed executable flags for Linux&lt;br /&gt;
* Type deduction failed for address operator on &amp;lt;code&amp;gt;_Bool&amp;lt;/code&amp;gt; variable&lt;br /&gt;
* Performance estimation: Wrong warning: Assuming default number of iterations&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2022.01.a&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2022.01.a ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;improvements-4&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
&lt;br /&gt;
* Parallelization: Automatic scheduler avoids any schedules that causes slowdowns&lt;br /&gt;
* Parallelization: Functions with unsupported use of pointers are automatically clustered and will not be falsely parallelized&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;bugfixes-4&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Fixed errors with libraries math.h and errno.h&lt;br /&gt;
* Fixed bugs related to incompatible types&lt;br /&gt;
* Compilation error caused by conflict between user-defined macros (e.g. &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;) and winnt.h&lt;br /&gt;
* Fixed prompt for workspace selection at startup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2022.01&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2022.01 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;new-features-3&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== New Features ===&lt;br /&gt;
&lt;br /&gt;
* Added initial vectorization support for Aurix TC4xx PPU&lt;br /&gt;
** VectorizeTrafo: Added trafo for vectorizing a simple &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; loop into platform-independent vector code (alpha)&lt;br /&gt;
*** No check is performed that the vectorized code will be correct&lt;br /&gt;
*** Unsupported constructs are not detected beforehand. Instead, an exception is thrown during application&lt;br /&gt;
*** Supporting only simple array variable constructs of &amp;lt;code&amp;gt;a[i]&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; is the &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; iterator variable) or &amp;lt;code&amp;gt;a[j1]...[j2][i]&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;j1 ... j2&amp;lt;/code&amp;gt; must be loop invariant)&lt;br /&gt;
*** Supporting vectorization of reduction variables, e.g. &amp;lt;code&amp;gt;for (i=0; i&amp;amp;lt;N; ++i) i += a[i];&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Supporting predicated vector instructions&lt;br /&gt;
*** Supporting optional padding of array variables to eliminate predicated vector instructions&lt;br /&gt;
** TargetPlatform: &amp;lt;code&amp;gt;host_win32&amp;lt;/code&amp;gt; supports code generation of platform-independent vector code by using a template-based library for vector types and functions&lt;br /&gt;
** TargetPlatform: Added two “Aurix TC4xx Parallel Processing Unit” platforms with Tasking and Synopsys PPU compiler support&lt;br /&gt;
*** Supporting simulator code generation with cycle-approximate performance measurement&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;improvements-5&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
&lt;br /&gt;
* Supporting &amp;lt;code&amp;gt;long double&amp;lt;/code&amp;gt; in our libc math.h&lt;br /&gt;
* Added ConstPropagationTrafo transformation for applying constant propagation to a function&lt;br /&gt;
* Improved replacement of inc/dec (e.g. &amp;lt;code&amp;gt;++&amp;lt;/code&amp;gt;) and compound assign (e.g. &amp;lt;code&amp;gt;+=&amp;lt;/code&amp;gt;) operators&lt;br /&gt;
** Supports correct handling of volatile variables&lt;br /&gt;
** Resolution within array/struct initializers was not working (e.g. &amp;lt;code&amp;gt;int i1[] = { x++ };&amp;lt;/code&amp;gt;)&lt;br /&gt;
** Resolution within variable initialization could switch the order of statements (e.g. &amp;lt;code&amp;gt;int i1 = x++; int i2 = x;&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Target platforms: Added &amp;lt;code&amp;gt;char16_t&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;char32_t&amp;lt;/code&amp;gt; types and supporting macros&lt;br /&gt;
* Improved support for running code on target platforms&lt;br /&gt;
* Documentation: Added section about CLI&lt;br /&gt;
* Documentation: Set Cygwin 64 bit as only supported version&lt;br /&gt;
* Added support for selecting the target compiler affecting the macros and types used to parse the source code&lt;br /&gt;
** Settings: Added compiler combo box into general settings&lt;br /&gt;
** TargetPlatform: &amp;lt;code&amp;gt;microarchitecture.xml&amp;lt;/code&amp;gt;: Added &amp;lt;code&amp;gt;Compilers&amp;lt;/code&amp;gt; section&lt;br /&gt;
* Switched to Eclipse 2021-09&lt;br /&gt;
* Improved switch-to-if converter&lt;br /&gt;
* Added initial support for designated array range initializers (&amp;lt;code&amp;gt;[first ... last] = value&amp;lt;/code&amp;gt;) (see [https://gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html designated inits])&lt;br /&gt;
* Added optional function de-duplication pass (can be activated in advanced settings)&lt;br /&gt;
* Preserving all function, variable and type declarations and their original order within C file&lt;br /&gt;
* Flow: Improved monitor output (warning/error display) and added subtasks&lt;br /&gt;
* Multiple performance improvements for large projects (&#039;&#039;e.g. performance estimation works well with 1 mio lines of code&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;bugfixes-5&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Invalid function arguments after parallelization&lt;br /&gt;
* Parallelized function returned result on wrong core&lt;br /&gt;
* Duplication of &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; loops with declarations generated incorrect code&lt;br /&gt;
* Communication was not working with pointer variables&lt;br /&gt;
* Communication was placed after return statements&lt;br /&gt;
* Multiple transfers of same variable with same ID&lt;br /&gt;
* Fixed handling of large call trees&lt;br /&gt;
* Crash in SSATraversal caused by recursive functions with pointer parameters&lt;br /&gt;
* Memory leaks&lt;br /&gt;
* Avoiding “Too many arguments to function” warning for implicit functions&lt;br /&gt;
* Array size calculation of &amp;lt;code&amp;gt;array[ENUMERATOR]&amp;lt;/code&amp;gt; is now working&lt;br /&gt;
* COutput: -(-1) was output as –1&lt;br /&gt;
* Fixed analysis of for loops where the loop variable is modified before the for loop&lt;br /&gt;
* Pragmas outside of functions are preserved in the correct order&lt;br /&gt;
* Fixed output of forward-declared structs, unions and enums&lt;br /&gt;
* Merging two composite blocks could lead to two variables using the same name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2021.09.a&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2021.09.a ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;new-features-4&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== New Features ===&lt;br /&gt;
&lt;br /&gt;
* Added pass to use a preprocessor (e.g. gcc or clang) on C code before it is used in ePS&lt;br /&gt;
* Integrated AUTOSAR file parsing based on the Artop library&lt;br /&gt;
* Added calculation of confidence level for performance estimation&lt;br /&gt;
* Added support for a configuration file to add pragmas without changing the source code&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;improvements-6&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
&lt;br /&gt;
* Added basic support for:&lt;br /&gt;
** function pointers&lt;br /&gt;
** recursive functions&lt;br /&gt;
** designated array initializers&lt;br /&gt;
** designated struct/union initializers&lt;br /&gt;
** compound assignment operators&lt;br /&gt;
** C11 style anonymous enum/struct/union definitions embedded in other type definitions&lt;br /&gt;
** incomplete data types (according to C standard)&lt;br /&gt;
* Separated settings for sequential and parallel platform tests&lt;br /&gt;
* Added new functionalities to CLI:&lt;br /&gt;
** Configuration of projects&lt;br /&gt;
** Control over passes to run&lt;br /&gt;
* Improved traceability of input to output source code lines&lt;br /&gt;
* Added generation of log files for each pass that capture all output from the console&lt;br /&gt;
* Project files are now stored compressed to save space&lt;br /&gt;
* Reworked the status messages of the flow&lt;br /&gt;
* Improved profile-guided execution counts of for loops&lt;br /&gt;
* Added more information to properties view of HTG representation&lt;br /&gt;
* Switched file structure for parallelization constraints to reduce the number of required entries&lt;br /&gt;
* Added Infineon TC387 platform&lt;br /&gt;
* Made the analysis for transformations more robust&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;bugfixes-6&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Crash for arguments with pointer case (e.g. (void*) arg)&lt;br /&gt;
* Crash with function calls used in variable initialization&lt;br /&gt;
* Assertion caused by repeated function declarations in one translation unit&lt;br /&gt;
* Various conflicting types errors&lt;br /&gt;
* Wrong placement of global variables&lt;br /&gt;
* Typedef redefinition was always reported as error&lt;br /&gt;
* Function declaration and implementation of different but compatible function types caused errors&lt;br /&gt;
* Fixed several issues with files not being closed correctly in the GUI&lt;br /&gt;
* Fixed error in size calculation in recursive structs&lt;br /&gt;
* Propagation of absolute number of executions over function calls&lt;br /&gt;
* Errors in duplication of function calls&lt;br /&gt;
* Detection of recursive function calls in unused functions&lt;br /&gt;
* Type deduction was wrong in many cases (e.g. &amp;lt;code&amp;gt;enum&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;++&amp;lt;/code&amp;gt;)&lt;br /&gt;
* void-cast of function call caused incorrect code&lt;br /&gt;
* Removed automic inclusion of System32 folder in path on Windows&lt;br /&gt;
* Fixed bug with PATH variable on Windows&lt;br /&gt;
* Fixed path separation on Linux&lt;br /&gt;
* Wrong messages about assignments to constant variables&lt;br /&gt;
* Fixed layout of advanced settings page&lt;br /&gt;
* Renamed _emx_main.c to _emx_t_main.c to avoid conflicts with sources named main.c&lt;br /&gt;
* Functions called via function pointers/references were considered unused&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2021.06&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2021.06 ==&lt;br /&gt;
&lt;br /&gt;
* Added line information for warning “Variable is defined externally”&lt;br /&gt;
* Code generation: Added supported for generating inline assembler&lt;br /&gt;
* ConsistencyChecker: Introduced different levels of strictness and added corresponding project setting&lt;br /&gt;
* DepChainAnalysis: Added reason to warning if a function could not be analyzed&lt;br /&gt;
* Frontend / Model / Code generation: Supporting switch case expressions to contain generic instructions (e.g. enumerators) instead of just integers&lt;br /&gt;
* Frontend: Added support for inline assembler&lt;br /&gt;
* Frontend: Handling of null statements improved (especially if labeled or within empty body blocks) HTG: Adding task clusters for goto instructions&lt;br /&gt;
* Hardware support: Added the optimized ringbuffer communication models ringbuf_fixed_fork (the new default) and ringbuf_fixed_thread based on the existing Aurix optimized ringbuffer implementation&lt;br /&gt;
* Hardware support: Implemented new communication API:EMXAPI prefix replaced with EMX, Added functions to send and receive float and double types, Values to be sent/received by scalar communication functions are now passed by value and as the return value, Argument order changed so that the first four arguments of all functions are: src, dst, id and index, followed by value/buffer arguments when present&lt;br /&gt;
* Hardware support: Renamed communication model names ringbuf-&amp;amp;gt;ringbuf_fork and singlecopy_sharedmem-&amp;amp;gt;ringbuf_thread&lt;br /&gt;
* Product: Updated provided JRE on linux to 11.0.11&lt;br /&gt;
* Wizard: Added communication test example project&lt;br /&gt;
* Bugfix: Custom paths were not considered for executing external tools&lt;br /&gt;
* Bugfix: DepChainAnalysis: Fixed crash if a function was not duplicated&lt;br /&gt;
* Bugfix: ExtractMain transformation: Converting function to main was not working if the calling function was not main&lt;br /&gt;
* Bugfix: Fixed handling of the size of alias types&lt;br /&gt;
* Bugfix: Fixed some problems related to BasicBlock file locations&lt;br /&gt;
* Bugfix: Frontend / Code Generation: Handling of case blocks with { } was not working&lt;br /&gt;
* Bugfix: Frontend: Correct placement of pragmas in front of labels&lt;br /&gt;
* Bugfix: GUI: Re-initialize compiler defaults when project settings is changed&lt;br /&gt;
* Bugfix: SSA: Crash in SSATraversal caused by incorrect usedef detection of parameters&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2021.03a&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2021.03a ==&lt;br /&gt;
&lt;br /&gt;
* Code generation: Template processing is deleting template files directly after processing&lt;br /&gt;
* DepChainAnalysis: Added XML output (depchainanalysis.xml)&lt;br /&gt;
* DepChainAnalysis: Bugfix: Function calls with unused return value were broken&lt;br /&gt;
* Flow: Introduced source template processing of &#039;&#039;.ftl and &#039;&#039;.twig files. An option was added in general settings to enable that feature.&lt;br /&gt;
* GUI: Source template GUI option now also added for non-C inputs and defaults to disabled&lt;br /&gt;
* Performance estimation: Refactored BBDurationProvider and BBDurationEstimator&lt;br /&gt;
* Performance estimation: Refactored procedure call overhead&lt;br /&gt;
* Settings: Improved handling of false root procedures&lt;br /&gt;
* Supporting EMX_EXTRACTMAIN pragma to trigger extract main transformation. The extract main trafo uses the pragma to apply the transformation after all other transformations.&lt;br /&gt;
* Template processing: Introduced generic project-based variables&lt;br /&gt;
* Trafo: Added loop interchange transformation&lt;br /&gt;
* Bugfix: C Frontend: Pragma placement&lt;br /&gt;
* Bugfix: Crash in case of unary operator within while condition&lt;br /&gt;
* Bugfix: Exception caused by loop analyzer in case of reverse “for” loop&lt;br /&gt;
* Bugfix: Fixed several GUI and flow errors&lt;br /&gt;
* Bugfix: ParallelPostCodeGen: Fixed check for empty source folders list&lt;br /&gt;
* Bugfix: Parameters no longer removed from function without body&lt;br /&gt;
* Bugfix: Project wizard stored wrong String in .properties for InputLanguage&lt;br /&gt;
* Bugfix: TargetPlatform: GUI was broken in case a software platform was missing&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2021.03&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2021.03 ==&lt;br /&gt;
&lt;br /&gt;
* Added GUI mechanism to insert timing instructions around functions and at blocks marked with pragmas&lt;br /&gt;
* Bugfix: CDT Frontend: Variable declaration in the middle could produce wrong code&lt;br /&gt;
* Bugfix: Dangling exception with AliasType&lt;br /&gt;
* Bugfix: GUI: Project wizard was broken for empty workspaces&lt;br /&gt;
* Bugfix: GUI: the presence of a file without extension inside the ECG output folder caused an exception in C2MMapper&lt;br /&gt;
* Bugfix: HTG: Crash caused by a too deep HTG&lt;br /&gt;
* Bugfix: Indirection (dereference) as function call argument&lt;br /&gt;
* Bugfix: PaddingPragmaHandler: EMX_PADDING pragma is working across function boundaries&lt;br /&gt;
* Bugfix: Parallel Code Generation: Return assignment check failed for non-duplicated functions&lt;br /&gt;
* Bugfix: Remove unused functions setting was broken&lt;br /&gt;
* Bugfix: Scheduler: Root function forcibly clustered due to multiple returns are handled correctly&lt;br /&gt;
* Bugfix: Scheduler: exception caused by main function with multiple return statements&lt;br /&gt;
* Bugfix: Size deduction from variable initialization was broken for global variables&lt;br /&gt;
* Bugfix: The analysis failed in case a variable was available only as an external declaration. A warning is now issued in that case.&lt;br /&gt;
* Bugfix: incorrect view when switching between input languages&lt;br /&gt;
* DepChainAnalysis: Improved dependency chain analysis to take repeating function calls into account and added delay suffix for each dependency&lt;br /&gt;
* DepChainAnalysis: Supporting analysis of function calls&lt;br /&gt;
* DepChainAnalysis: Supporting control dependency calculation&lt;br /&gt;
* DepChainAnalysis: Supporting functions with return parameters&lt;br /&gt;
* Eclipse: Switched to version 2021.03&lt;br /&gt;
* Flow view: removed unnecessary methods for button state restores&lt;br /&gt;
* Flow: Introduced lambda-based CallNormalizer that reimplements the old functionality to move every call into its own basic block&lt;br /&gt;
* Flow: Output of eMCG is now stored in generated_files&lt;br /&gt;
* Frontend: Added C correctness checks&lt;br /&gt;
* GUI: Added button to generate transformed code&lt;br /&gt;
* GUI: Added indicator of execution frequency to block representation in HTG view&lt;br /&gt;
* GUI: Added tab in properties view for displaying source code&lt;br /&gt;
* GUI: Anti and output dependencies are not rendered if they are between tasks on different cores&lt;br /&gt;
* GUI: Children of blocks are scaled to make sure they fit into the parent&lt;br /&gt;
* GUI: HTG and Scheduler view: Added support for bringing up the context menu using the keyboard&lt;br /&gt;
* GUI: HTG and Scheduler view: Fixed a bug that caused invalid behavior when focus was lost during mouse drag&lt;br /&gt;
* GUI: HTG and Scheduler view: Made selection behavior more consistent with standard windows selection behavior&lt;br /&gt;
* GUI: HTG: Changing ecg_decisions.ini file only if the content changed. That prevents unnecessary eCG runs.&lt;br /&gt;
* GUI: The length of THEN/ELSE blocks is scaled according to their execution frequency&lt;br /&gt;
* GeCoS: Deleted several unused classes&lt;br /&gt;
* ParallelCodeGeneration: Leaving non-parallelized functions unchanged&lt;br /&gt;
* ParallelCodeGeneration: Removed user includes from _emx_main.h&lt;br /&gt;
* Performance estimation: Brought back execution frequency assumptions in case code cannot be analyzed&lt;br /&gt;
* Performance estimation: Changed perf test platform to aurix_tc397_kit&lt;br /&gt;
* Performance estimation: Improved LLVM profiling provider to handle nested control constructs and while loops&lt;br /&gt;
* Settings: Added setting to disable consistency checking&lt;br /&gt;
* Settings: Moved host profiling settings from advanced to general&lt;br /&gt;
* Settings: Supporting &amp;lt;Makefile&amp;gt; placeholder in compile command settings that is replaced by Makefile or Makefile.gen (whatever exists)&lt;br /&gt;
* Supporting &amp;lt;code&amp;gt;#pragma EMX_PADDING &amp;amp;lt;pad&amp;amp;gt;&amp;lt;/code&amp;gt; pragma to increase the size of the last dimension of an array to a multiple of &amp;lt;code&amp;gt;pad&amp;lt;/code&amp;gt;&lt;br /&gt;
* TargetPlatform: Supporting run command specification in software platform (e.g. &amp;lt;code&amp;gt;&amp;amp;lt;Run command=&amp;amp;quot;make sim&amp;amp;quot;/&amp;amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
* TargetPlatform: Supporting specification of compile settings in software platform&lt;br /&gt;
* TargetPlatform: Used software platform description for parallel testing&lt;br /&gt;
* Templates: Added EMXAPI_SyncCores and EMXAPI_GetCore API functions&lt;br /&gt;
* Templates: Converted timing template to use FTL instead of macros&lt;br /&gt;
* Trafo: Added ExtractMain transformation&lt;br /&gt;
* Trafo: Added ObfuscationTrafo to make identifiers obscure&lt;br /&gt;
* Trafo: Added function inline transformation&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2020.12&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2020.12 ==&lt;br /&gt;
&lt;br /&gt;
* Added Apache FreeMarker (.ftl file extension) as additional template language&lt;br /&gt;
* Flow GUI: Parsing the C source code is now a pass&lt;br /&gt;
* Switched to Eclipse-2020-09&lt;br /&gt;
* HTG and properties view: Displaying call overhead&lt;br /&gt;
* Scheduler / Performance estimation: Refactored procedure call overhead calculation/handling&lt;br /&gt;
* GUI: refactored eCG and ePS view to use same base&lt;br /&gt;
* AURIX: Implemented high-performance communication library using statically determined absolute addresses&lt;br /&gt;
* AURIX: Added new combined template for TC297 and TC397&lt;br /&gt;
* Parallel Code Generation: Implement feature to convert functions to static (Parallelization settings, activated by default)&lt;br /&gt;
* Performance estimation: Reworked calculation of call overhead&lt;br /&gt;
* Added post-placement communication optimization by moving send as early and recv as late as possible (Advanced setting, deactived by default)&lt;br /&gt;
* Most important bug fixes:&lt;br /&gt;
** Bugfix: Return type of parallelized functions&lt;br /&gt;
** Bugfix: Pragma-controlled clustering (&amp;lt;code&amp;gt;EMX_TASK_CLUSTER&amp;lt;/code&amp;gt;) of tasks was broken&lt;br /&gt;
** Bugfix: &amp;lt;code&amp;gt;EMX_TASK_ALLOC&amp;lt;/code&amp;gt; pragmas appeared in generated code&lt;br /&gt;
** Bugfix: Linux: Issue with short task names on task termination&lt;br /&gt;
** Bugfix: Preserving static keyword and name of static global variables&lt;br /&gt;
** Bugfix: Fixed support for &amp;lt;code&amp;gt;EMX_INITCODE&amp;lt;/code&amp;gt; pragma&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2020.06&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2020.06 ==&lt;br /&gt;
&lt;br /&gt;
* emmtrix project wizard now can import multiple C files&lt;br /&gt;
* Fixed handling of C projects without main function&lt;br /&gt;
* Introduced new indicators for status of passes&lt;br /&gt;
* Reworked handling of compiler settings&lt;br /&gt;
* Switched to internal pass infrastructure&lt;br /&gt;
* Switched to Eclipse version 2020-03&lt;br /&gt;
* Switched from Jasva 8 to Java 11&lt;br /&gt;
* Bugfix: CDTFrontend crashed for “for (;;) {}” loops [TS]&lt;br /&gt;
* TargetPlatform: Added support for additional function information (funcinfo.xml)&lt;br /&gt;
* Bugfix: Fixed template of MBA5728&lt;br /&gt;
* Added option to disable removal of unsused functions&lt;br /&gt;
* Added option to disable reordering of tasks&lt;br /&gt;
* Added option to parse of C files in eCG output folder&lt;br /&gt;
* Bugfix: Fixed generation of functions with simple declarations&lt;br /&gt;
* Removed enforced option “-B” for sequential tests&lt;br /&gt;
* Added handling of include directories&lt;br /&gt;
* Added button to parse C code in C projects&lt;br /&gt;
* Fixed various bugs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2019.11.07&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2019.11.07 ==&lt;br /&gt;
&lt;br /&gt;
* Fixed definition of custom paths&lt;br /&gt;
* Several bug fixes regarding global variables&lt;br /&gt;
* Several bug fixes regarding parameters of parallelized functions&lt;br /&gt;
* Improved generation of OpenCL code&lt;br /&gt;
* Improved handling of static keyword&lt;br /&gt;
* Fixed bug in analysis of data dependencies&lt;br /&gt;
* Several other minor bug fixes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2019.03.20&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2019.03.20 ==&lt;br /&gt;
&lt;br /&gt;
* Support for array of structs in emmtrix Code Generator&lt;br /&gt;
* Various improvements for data type selection in eCG&lt;br /&gt;
* Fixed bug that might cause parallel execution of passes within ePS&lt;br /&gt;
* Added option to set C macros for C workflow&lt;br /&gt;
* Improved error messages from CDTFrontend&lt;br /&gt;
* Redesigned SSH password and confirmation dialog&lt;br /&gt;
* Fixed various bugs related to C code input&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2018.08.09&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2018.08.09 ==&lt;br /&gt;
&lt;br /&gt;
* Support for Linux. We have tested it under Xubuntu 18.04. Since it is the first version for Linux, additional bugs compared to Windows cannot be excluded.&lt;br /&gt;
* Customization of the target platform: a target folder is automatically generated in the project folder, in which the various files for the target platform are located. Here e.g. timings for library functions can be stored. More details can be found in the ePS User Guide (just click on Parallel Studio Help in the tool).&lt;br /&gt;
* Support for software templates: in the generated subfolder “template” files can be stored that are to be used for building the parallel code. In addition, existing files can be customized for specific projects and templates can be filled in dynamically using Jtwig (http://jtwig.org/). Again, more details can be found in the ePS User-Guide&lt;br /&gt;
* Improved C support: processing of generic C code (e.g. with structs and switch cases) has been improved&lt;br /&gt;
* Static performance analysis has been reworked. Estimated times from previous versions may differ especially in nested structures. With the new method, it is no longer necessary that the input code is executed on the host system. Instead, all values are calculated as far as possible and otherwise populated with default values.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2017.07.04&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2017.07.04 ==&lt;br /&gt;
&lt;br /&gt;
* Restructured settings&lt;br /&gt;
* Removed option of eCG to mimic the output of MATLAB&lt;br /&gt;
* Integrated automatic consistency checker into the flow&lt;br /&gt;
** Model consistency&lt;br /&gt;
** Order consistency&lt;br /&gt;
** Schedule checker (times, containment, order)&lt;br /&gt;
* Unified video interfaces across all platforms&lt;br /&gt;
* Switched to Eclipse Oxygen&lt;br /&gt;
* Removed support for GeCoS scripts&lt;br /&gt;
* Improved sequential testing for C flow&lt;br /&gt;
* Simplified support of parallelization of functions with pointer parameters&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Fixed scheduler crash with function prototypes that omit parameter names&lt;br /&gt;
* Updated instruction performance for Cortex-A7 and Cortex-A15 on ODROID XU4&lt;br /&gt;
* Fixed a bug that could cause the tabular communication cost model to assign transfer costs for same-core transfers&lt;br /&gt;
* Fixed a bug that prevented to correctly derive a tabular communication cost models when multiple commtable files where present for the same target platform (affected heterogeneous architectures only)&lt;br /&gt;
* Analysis results are integrated into a node’s property view&lt;br /&gt;
* Fixed support for emx_task_alloc and emx_task_cluster pragmas: pragmas now take precedence over allocation made in the GUI or via the constraint settings JSON file&lt;br /&gt;
* Various fixes and improvements regarding user decisions&lt;br /&gt;
* Fixed a bug that would cause user decisions that were not changed in the current session to be removed from ecg_decisions.ini upon save of the file&lt;br /&gt;
* corrected calculation of start and finish times of for loops&lt;br /&gt;
* Fixed display of loops that are mapped to multiple cores&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2017.03.23&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2017.03.23 ==&lt;br /&gt;
&lt;br /&gt;
* Added Simulink Model Viewer, which currently supports:&lt;br /&gt;
** display of top level of model&lt;br /&gt;
** descend to sub block by double clicking on block&lt;br /&gt;
** block hover and selection&lt;br /&gt;
** history: Back/Forward/Home to model root&lt;br /&gt;
** zoom: 0,25 - 2.00 using toolbar or mouse wheel&lt;br /&gt;
* Support Simulink models&lt;br /&gt;
* HLS: Added synchronization for FPGA accelerators&lt;br /&gt;
* Fixed receive of pipe communication&lt;br /&gt;
* Enabled basic testing of C code in the C based flow&lt;br /&gt;
* Improved error handling when accessing projects/settings&lt;br /&gt;
* HLS: Added software interface generation for custom IP&lt;br /&gt;
* HLS: Added IP insertion into template Vivado project and bitstream generation&lt;br /&gt;
* HLS: Improved error handling and reporting&lt;br /&gt;
* Added video support for FriendlyARM NanoPi M3&lt;br /&gt;
* UnifyParameters now adds names to all unnamed function parameters&lt;br /&gt;
* Improved upgrade capabilities of project wizard&lt;br /&gt;
** automatic deletion of old epsproject and properties files&lt;br /&gt;
** generation of new epsproject and properties files&lt;br /&gt;
* Added Properties view to eCG and ePS perspective&lt;br /&gt;
* Added pass to place the eCG decision pragmas at parent blocks&lt;br /&gt;
* Improved error handling of update decision job&lt;br /&gt;
* Improved error handling of script execution&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2017.03.08&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2017.03.08 ==&lt;br /&gt;
&lt;br /&gt;
* Added support for Aurix FreeRTOS template and compiler script&lt;br /&gt;
* Added support for individual compiler settings for sequential, parallel and platform tests. These include:&lt;br /&gt;
** pre-/post-build bash script execution&lt;br /&gt;
** customization of CFLAG and LDFLAG&lt;br /&gt;
** customization of environment variables&lt;br /&gt;
* Improved support for handling of external files&lt;br /&gt;
* Improved support of __cplusplus define&lt;br /&gt;
* Added platform description for NanoPI M3 (S5P6818 Quad-Core Cortex-A53 1.4 GHz)&lt;br /&gt;
* Added platform description attribute “active” that determines whether a description is loaded/an available target platform&lt;br /&gt;
* HLS: improved the result checker to ensure compatability with Vivado HLS&lt;br /&gt;
* HLS: improved error checking of synthesis progress&lt;br /&gt;
* HLS: code refactoring and miscellaneous minor fixes&lt;br /&gt;
* Scheduler View: set minimal width of blocks to one pixel to improve placement of data dependencies&lt;br /&gt;
* Scheduler View: removed gaps beetween adjacent blocks to better reflect the blocks’ actual runtime&lt;br /&gt;
* Scheduler View: block selection markers are now drawn after blocks, so that they may not be overlapped by adjacent blocks anymore&lt;br /&gt;
* HTG View: moved information about from right pane to the properties view&lt;br /&gt;
* HTG View: added button to show the property view&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2016.27.01&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2016.27.01 ==&lt;br /&gt;
&lt;br /&gt;
* emmtrix Technologies GmbH was founded&lt;br /&gt;
[[Category:emmtrix Tools]]&lt;/div&gt;</summary>
		<author><name>Oliver.Wolf.EMX</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Main_Page&amp;diff=2071</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Main_Page&amp;diff=2071"/>
		<updated>2024-09-16T14:22:39Z</updated>

		<summary type="html">&lt;p&gt;Oliver.Wolf.EMX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
Welcome to the emmtrix Technologies Wiki. As a company with a deep-rooted passion for compilers, we specialize in source-to-source compilers designed to analyze, optimize and transform your code. This Wiki aims to offer detailed, technical background information that complements the tools and resources available on our official website. Here, you&#039;ll find in-depth explanations, usage guidelines, and insights into the engineering behind our specialized software solutions. Whether you&#039;re a developer or a technically-inclined enthusiast, this space is designed to deepen your understanding of what makes our tools essential for your projects.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;padding: 10px&amp;quot;&lt;br /&gt;
| style=&amp;quot;vertical-align: top; padding: 10px;&amp;quot; |&lt;br /&gt;
=== emmtrix Products ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
* [[emmtrix Studio Release Notes]]&lt;br /&gt;
* emmtrix Parallel Studio&lt;br /&gt;
* [[emmtrix Performance Estimator]]&lt;br /&gt;
** [[Mapping TargetLink generated C code back to Simulink blocks]]&lt;br /&gt;
* [[emmtrix Dependency Analyzer]]&lt;br /&gt;
* [[emmtrix C++ to C Compiler]]&lt;br /&gt;
** [https://online-ecpp2c.emmtrix.com emmtrix C++ to C Compiler Online]&lt;br /&gt;
* [[:Category:emmtrix Studio FAQ|FAQ]]&lt;br /&gt;
| style=&amp;quot;vertical-align: top; padding: 10px;&amp;quot; |&lt;br /&gt;
=== Supported Architectures ===&lt;br /&gt;
* [[Infineon AURIX TC3xx]]&lt;br /&gt;
* [[Infineon AURIX TC4x]]&lt;br /&gt;
* ... and many more&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Compiler Background ===&lt;br /&gt;
&lt;br /&gt;
* [[Loop Transformations]]&lt;br /&gt;
*[[Demystifying C++]]&lt;br /&gt;
*[[The alias Attribute|The alias attribute]]&lt;br /&gt;
*[[Clang Diagnostics Overview]]&lt;br /&gt;
*[[:Category:Clang Diagnostics]]&lt;br /&gt;
&lt;br /&gt;
=== Other Topics ===&lt;br /&gt;
* [[C to Z3 Cheat Sheet]]&lt;br /&gt;
* [[Eclipse Xcore Cheat Sheet]]&lt;/div&gt;</summary>
		<author><name>Oliver.Wolf.EMX</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=emmtrix_Studio_Release_Notes&amp;diff=2015</id>
		<title>emmtrix Studio Release Notes</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=emmtrix_Studio_Release_Notes&amp;diff=2015"/>
		<updated>2024-08-07T08:04:24Z</updated>

		<summary type="html">&lt;p&gt;Oliver.Wolf.EMX: /* emmtrix Studio Release Notes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;emmtrix-studio-release-notes&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= emmtrix Studio Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Release 2024.07 ==&lt;br /&gt;
&lt;br /&gt;
=== New Features ===&lt;br /&gt;
&lt;br /&gt;
* New/improved transformations&lt;br /&gt;
** Deroll trafo: Added new trafo to create loops for similar subsequent statements or constructs&lt;br /&gt;
** LoopFusion trafo: Added new trafo to fuse two subsequent for loops with the same iteration space&lt;br /&gt;
** PtrResolve trafo: Added new trafo to resolve pointers and replace indirect memory accesses by direct (used in eDA)&lt;br /&gt;
** MakeStatic trafo: Added new trafo to make functions static if used only locally to provide optimization potential for the compiler and ease the linking&lt;br /&gt;
** ArrayToScalar trafo: Added new trafo to convert arrays to scalars&lt;br /&gt;
** LoopUnroll trafo: &lt;br /&gt;
*** Added possibility to apply &amp;lt;code&amp;gt;LoopUnroll&amp;lt;/code&amp;gt; to all for-loops of selected functions&lt;br /&gt;
*** Automatically perform full loop unrolling when the unrolling factor exceeds the constant number of iterations&lt;br /&gt;
&lt;br /&gt;
* emmtrix Dependency Analyzer (eDA)&lt;br /&gt;
** Added result caching mechanism to speed up recurring analysis&lt;br /&gt;
** Added support for label propagation&lt;br /&gt;
** Added shortest-path and reachability report to follow how values/signals propagate&lt;br /&gt;
&lt;br /&gt;
* emmtrix Performance Estimator (ePE)&lt;br /&gt;
** Added min/max runtime calculation&lt;br /&gt;
&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
* C code handling&lt;br /&gt;
** Preserving &amp;lt;code&amp;gt;#define&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;#undef&amp;lt;/code&amp;gt; preprocessor directives&lt;br /&gt;
** Parsing C code comments for analysis and code generation&lt;br /&gt;
** Added option to set charsets for source code files&lt;br /&gt;
** Respecting the correct order of #include directives and other declarations&lt;br /&gt;
&lt;br /&gt;
* GUI Improvements&lt;br /&gt;
** Settings: Sorted and restructured settings&lt;br /&gt;
** Improved usability of emmtrix Studio project wizard&lt;br /&gt;
&lt;br /&gt;
* Analysis Time Improvements&lt;br /&gt;
** Improved performance of SSA calculation&lt;br /&gt;
** Improved analysis performance by caching result of variable usage&lt;br /&gt;
** Added internal caching for performance estimation&lt;br /&gt;
** Improvements of internal type calculations&lt;br /&gt;
** Added cache to improve performance to calculations in eDA&lt;br /&gt;
** Fixed performance bottleneck in dominator calculation in eDA&lt;br /&gt;
&lt;br /&gt;
* emmtrix Parallel Studio&lt;br /&gt;
** Added option to enable parallelization for shared memory (improves global variables synchronization)&lt;br /&gt;
&lt;br /&gt;
* General&lt;br /&gt;
** Improved support for pointers in dependency analysis in eDA&lt;br /&gt;
** Improved constant propagation by using sparse conditional constant propagation algorithm&lt;br /&gt;
** Commandline interface learned to run commands from script file&lt;br /&gt;
&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
* Fixed handling of enum declarations&lt;br /&gt;
* Improved support for nested folder structures&lt;br /&gt;
* Crash in SSA algorithm&lt;br /&gt;
* Fixed automatic insertion of forward declaration when necessary&lt;br /&gt;
* Handling of ArithmeticException e.g. caused by division by zero in const propagation&lt;br /&gt;
* Fixed stack overflow in SSA algorithm caused by deep CFGs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2023.11&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2023.11 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;new-features&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== New Features ===&lt;br /&gt;
&lt;br /&gt;
* All emmtrix tools are now gathered in the emmtrix Studio framework with their own perspectives&lt;br /&gt;
** emmtrix Parallel Studio&lt;br /&gt;
** emmtrix Performance Estimator&lt;br /&gt;
*** TargetLink Extension (coming soon)&lt;br /&gt;
*** Simulink Extension (on request)&lt;br /&gt;
** emmtrix Dependency Analyzer&lt;br /&gt;
** emmtrix Code Vectorizer (coming soon)&lt;br /&gt;
** emmtrix Model Code Generator&lt;br /&gt;
** emmtrix Code Generator&lt;br /&gt;
* Windows: A portable Cygwin installation is provided to remove the need to install any additional third-party tools&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;improvements&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
&lt;br /&gt;
* Hierarchical Program View: New indicator icon for tasks with measured timing data&lt;br /&gt;
* Code Transformations: Added setting in GUI to enable/disable code transformation analysis&lt;br /&gt;
* Frontend: Print out missing include files for all processed files for easier project setup and debugging&lt;br /&gt;
* Eclipse: Update to version 2023-06&lt;br /&gt;
* EMX-LLVM: Update to version 230901&lt;br /&gt;
* Added support for alias attribute (e.g. &amp;lt;code&amp;gt;__attribute__((alias(&amp;amp;quot;name&amp;amp;quot;)))&amp;lt;/code&amp;gt;) for functions and variables&lt;br /&gt;
* InstructionSimplifier trafo: Added the following simplifications:&lt;br /&gt;
** &amp;lt;code&amp;gt;const ? a : b&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;0 - x&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;-x&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;x [-&amp;amp;amp;^|/%] x&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;x [+-] (-y)&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;x [-+] y&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;(-x) + y&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;y - x&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;x [*/] (-1)&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;-x&amp;lt;/code&amp;gt;&lt;br /&gt;
* ExplicitCastInserter trafo: Added trafo to insert explicit type casts in expressions where implicit casts are performed&lt;br /&gt;
** &amp;lt;code&amp;gt;if (expr)&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;if ((_Bool)expr)&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;float_var = 10&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;float_var = (float)10&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;ptr_to_long_int + char&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;ptr_to__long_int + (int)char&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;bool_var * unsigned_long_var&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;(unsigned long)bool_var * unsigned_long_var&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;0 ? bool_var : vol_int_var&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;(_Bool)0 ? (volatile int)bool_var : vol_int_var&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;func_call(signed_int_var + long_double_var)&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;func_call((long double)signed_int_var + long_double_var)&amp;lt;/code&amp;gt;&lt;br /&gt;
* Simulink viewer: Improved usability&lt;br /&gt;
** Added sliders for larger models&lt;br /&gt;
** Added labels for simple blocks (e.g. sum, product)&lt;br /&gt;
** Improved contrast of background colors&lt;br /&gt;
** Improved positioning of labels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;bugfixes&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Parallelization: Fixed generation of inconsistent ids from send/recv calls&lt;br /&gt;
* Parallelization: Detect variable length arrays as unsupported and clustered&lt;br /&gt;
* Fixed wrong reordering of declarations for automatic merging of blocks&lt;br /&gt;
* Fixed access analysis of function call arguments including &amp;lt;code&amp;gt;&amp;amp;amp;&amp;lt;/code&amp;gt; and structs&lt;br /&gt;
* Fixed crash caused by struct field passed as pointer to function&lt;br /&gt;
* Project Wizard got stuck during project creation&lt;br /&gt;
* Performance Estimation: Fixed bug with LLVM IR based estimation and multiple source files&lt;br /&gt;
* Bugfix for handling custom paths replacing the system paths&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;emmtrix-parallel-studio-release-notes&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= emmtrix Parallel Studio Release Notes =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2022.10&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2022.10 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;improvements-1&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
&lt;br /&gt;
* Added support for GCC extension [https://gcc.gnu.org/onlinedocs/gcc/Statement-Exprs.html statement expressions]&lt;br /&gt;
* Update EMX-LLVM tools to release 2022.11.18&lt;br /&gt;
* Added separate template files for “Parallel Tests” (independent from sequential test template)&lt;br /&gt;
* Eclipse: Updated to version 2022.06&lt;br /&gt;
* Added setting to specify the path for EMX-LLVM tools&lt;br /&gt;
* Added new transformation to convert &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; loops to &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; loops&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;bugfixes-1&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Avoid false duplication of functions&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2022.07&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2022.07 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;new-features-1&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== New Features ===&lt;br /&gt;
&lt;br /&gt;
* Added support for assembly-based performance estimation&lt;br /&gt;
** Added option to enable assembly-based performance estimation in advanced settings&lt;br /&gt;
** Supporting Tricore using HighTec GCC compiler (tricore-gcc)&lt;br /&gt;
** Supporting ARM Cortex-A7 using [https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads ARM GNU Toolchain]&lt;br /&gt;
** Updated target defintions with assembler performance estimation&lt;br /&gt;
* Added new disassembly view with traceability between HTG and C source code&lt;br /&gt;
** Generating &amp;lt;code&amp;gt;assembly.asmmodel&amp;lt;/code&amp;gt; file storing disassembly and mapping information&lt;br /&gt;
** Disassembly view: Added disassembly view (AsmEditor) for &amp;lt;code&amp;gt;assembly.asmmodel&amp;lt;/code&amp;gt; files that displays disassembly information&lt;br /&gt;
** Disassembly view: Option to display timing information from assembly-based performance information&lt;br /&gt;
** Disassembly view: Option to reorder basic blocks to better match the order within the source file&lt;br /&gt;
** Disassembly view: Automatically highlighting the C source line in a corresponding editor if the caret is changed to an assembly instruction&lt;br /&gt;
** Disassembly view: Automatically highlighting the assembly instruction in a corresponding disassembly view if the caret is changed to a C expression&lt;br /&gt;
** HTG view: Added new &amp;lt;code&amp;gt;ASM&amp;lt;/code&amp;gt; button to open disassembly view&lt;br /&gt;
** HTG view: Automatically highlighting the assembly instructions within disassembly view if a HTG node is selected&lt;br /&gt;
** Currently supports Infineon AURIX and ARM Cortex-A7&lt;br /&gt;
* Performance estimation workflow&lt;br /&gt;
** Added new GUI elements to handle performance estimation to workflow&lt;br /&gt;
** Generation of HTML report with information on function level&lt;br /&gt;
** Added support for loading timing data from simulation and hardware&lt;br /&gt;
* Added support for LLVM-IR-based performance estimation&lt;br /&gt;
** Independent from target compiler&lt;br /&gt;
** Example target specification available for Infineon AURIX TC3xx&lt;br /&gt;
* Added new code sinking transformation&lt;br /&gt;
** The transformation moves assign statements to positions where it is executed less frequently&lt;br /&gt;
** A threshold value is given that specifies the minimum reduction factor for the execution count (threshold)&lt;br /&gt;
* Added new loop-invariant code motion transformation&lt;br /&gt;
** The transformation moves only statements by default&lt;br /&gt;
** It optionally moves sub-expressions by creating temporary variables (sub_exprs=1)&lt;br /&gt;
** It optionally reorders invariant expressions by applying the commutative and associative laws (reorder=1)&lt;br /&gt;
** It includes an built-in test about the number of moved expressions (expected_moved_exprs)&lt;br /&gt;
* Added checksum based upgrade mechanism for &amp;lt;code&amp;gt;target&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;template&amp;lt;/code&amp;gt; folders&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;improvements-2&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
&lt;br /&gt;
* Template processing: Added variables &amp;lt;code&amp;gt;C_FILES_PROCESSED&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;C_FILES_ADDITIONAL&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;C_FILES_TOCOMPILE&amp;lt;/code&amp;gt;&lt;br /&gt;
* CPP2C: Supporting projects with multiple *.cpp files&lt;br /&gt;
* Active project management&lt;br /&gt;
** GUI: Project list in workflow view now has an empty entry to deselect any project&lt;br /&gt;
** Bugfix: The active project is now stored explicitly in the workspace to avoid any ambiguity&lt;br /&gt;
** Bugfix: Fixed detection of changes to projects (rename, import, copy, etc.)&lt;br /&gt;
* Improved WhileToFor transformation with better detection of step and init code&lt;br /&gt;
* Improved loop unrolling transformation by adding support for declarations, unknown number of exections, returns and breaks&lt;br /&gt;
* C library: Supporting &amp;lt;code&amp;gt;va_start&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;va_end&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;va_arg&amp;lt;/code&amp;gt; of stdarg.h&lt;br /&gt;
* Improved trip count calculation of for loops by using local constant propagation&lt;br /&gt;
* Improved check for unsupported C constructs that will be automatically clustered&lt;br /&gt;
** Switch case constructs (that are not converted to if)&lt;br /&gt;
** Double pointers: e.g. &amp;lt;code&amp;gt;int **a&amp;lt;/code&amp;gt;&lt;br /&gt;
** Do while loops&lt;br /&gt;
** Goto statements&lt;br /&gt;
** Functions with multiple return paths (no return or one return at the end is allowed)&lt;br /&gt;
** Loops (for, while, do while) with continue&lt;br /&gt;
** Loops (for, while, do while) with break&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;bugfixes-2&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Parallel code generation: Header file &amp;lt;code&amp;gt;_emx_main.h&amp;lt;/code&amp;gt; was included multiple times&lt;br /&gt;
* Control-To-Goto: Fixed conversion of short-circuit operations within variable initialization&lt;br /&gt;
* Bugfix: Constant propagation with pointers&lt;br /&gt;
* Fixed issues with generation of temporary variables&lt;br /&gt;
* Fixed some GUI related bugs (avoid unnecessary exceptions)&lt;br /&gt;
* Fixed some bugs in the parallel performance estimation (wrong calculation of loops)&lt;br /&gt;
* Fixed Linux related bugs (paths, executable flags)&lt;br /&gt;
* Fixed Run on MATLAB and compare&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;other&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Other ===&lt;br /&gt;
&lt;br /&gt;
* Removed TWIG template support&lt;br /&gt;
* ePS is now using Java 17, required files for Windows and Linux are integrated&lt;br /&gt;
* Release is based on Eclipse 2022.03&lt;br /&gt;
* Update eCG to release from 29/04/22&lt;br /&gt;
* Update CPP2C to release from 29/07/22&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2022.04&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2022.04 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;new-features-2&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== New Features ===&lt;br /&gt;
&lt;br /&gt;
* Transformations:&lt;br /&gt;
** Introduced VarSplit transformation for splitting an array variable into multiple variables&lt;br /&gt;
** Introduced FuncPtrResolve transformation for replacing indirect function calls by if-then-else constructs&lt;br /&gt;
** Introduced &amp;lt;code&amp;gt;InstructionSimplifier&amp;lt;/code&amp;gt; transformation to simplify expressions by applying neutral and zero element optimizations&lt;br /&gt;
** Transformations can now track the reason the analysis failed&lt;br /&gt;
* Standard header files now available in template folder (&amp;lt;code&amp;gt;standard_includes&amp;lt;/code&amp;gt;) and can be edited by the user&lt;br /&gt;
* Introduced new file management (epsfiles.txt)&lt;br /&gt;
** Input files are now defined in the file &amp;lt;code&amp;gt;sources/epsfiles.txt&amp;lt;/code&amp;gt; which follows the syntax of [https://git-scm.com/docs/gitattributes .gitattributes] files&lt;br /&gt;
** It supports the following attributes&lt;br /&gt;
*** &amp;lt;code&amp;gt;action=[none|process|compile|copy]&amp;lt;/code&amp;gt;: Defines what ePS is doing with the file&lt;br /&gt;
**** &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt; or no attribute is ignoring the file&lt;br /&gt;
**** &amp;lt;code&amp;gt;compile&amp;lt;/code&amp;gt; is copying and compiling the file to output folder&lt;br /&gt;
**** &amp;lt;code&amp;gt;copy&amp;lt;/code&amp;gt; is only copying the file to output folder&lt;br /&gt;
**** &amp;lt;code&amp;gt;process&amp;lt;/code&amp;gt; is processing (reading and writing) the C source file by ePS&lt;br /&gt;
*** &amp;lt;code&amp;gt;template=[twig|ftl]&amp;lt;/code&amp;gt;: The file is processed by the specified template engine. A corresponding file extension is removed.&lt;br /&gt;
*** &amp;lt;code&amp;gt;c_preprocess&amp;lt;/code&amp;gt;: The source file is preprocessed through a C/C++ preprocessor&lt;br /&gt;
*** &amp;lt;code&amp;gt;codegen=[eCG|eCPP2C]&amp;lt;/code&amp;gt;: Code generation is applied to the source file&lt;br /&gt;
**** &amp;lt;code&amp;gt;eCG&amp;lt;/code&amp;gt; runs emmtrix Code Generator on the MATLAB or Scilab file&lt;br /&gt;
**** &amp;lt;code&amp;gt;eCPP2C&amp;lt;/code&amp;gt; runs emmtrix C++ to C Compiler on C++ source files&lt;br /&gt;
** Source file status is shown in Project Explorer as specified in epsfiles.txt&lt;br /&gt;
** Default epsfiles.txt file can be created via context menu in Project Explorer or in the Project Settings dialog&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;improvements-3&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
&lt;br /&gt;
* Target platforms:&lt;br /&gt;
** Added Tasking template for the Aurix TC397 platform&lt;br /&gt;
** Added hardware model of SPC58ECxx (PowerPC e200z4 dual-core)&lt;br /&gt;
* Vectorization transformation (still experimental)&lt;br /&gt;
** Improved support for array subscripts with linear memory access pattern&lt;br /&gt;
** Improved source code appearance after vectorization&lt;br /&gt;
** Supporting array subscripts with indexed memory access pattern&lt;br /&gt;
** Supporting vectorization of loops containing unvectorizable expressions&lt;br /&gt;
** Supporting vectorization of simple sub-functions&lt;br /&gt;
** Supporting &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; loops with non-constant iteration count&lt;br /&gt;
** Supporting memory accesses with indirection operator (e.g. &amp;lt;code&amp;gt;*(p+1) = ...&amp;lt;/code&amp;gt;)&lt;br /&gt;
** Supporting &amp;lt;code&amp;gt;?:&amp;lt;/code&amp;gt; operators, generic for loop initialization and non-vectorized local variables&lt;br /&gt;
* Performance estimation: Consider duration of variable initialization and ignoring constant expressions&lt;br /&gt;
* GUI: Changed format of exceptions dialog&lt;br /&gt;
* C library: Added header &amp;lt;code&amp;gt;arpa/inet.h&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;sys/socket.h&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;netinet/in.h&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;netdb.h&amp;lt;/code&amp;gt;&lt;br /&gt;
* Improved support for wide character string and char literals&lt;br /&gt;
* Supporting array size calculation of designated array initializers&lt;br /&gt;
* Performance estimation: Set default to 1 cycle per instruction when no data is available&lt;br /&gt;
* EpsProject: Include directories are relativized if they are part of the project&lt;br /&gt;
* CodeGeneration: Replicate input folder structure&lt;br /&gt;
* Added node context menu to Hierarchical Program View to export task dependencies in DOT or CSV format&lt;br /&gt;
* LLVM tools: Update to release from 27/04/2022&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;bugfixes-3&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Crash caused by &amp;lt;code&amp;gt;if (a = func() == 3)&amp;lt;/code&amp;gt;&lt;br /&gt;
* Frontend: Crash in type compatibility check when variable was redeclared after struct was redeclared&lt;br /&gt;
* Parallel code generation: Missing function prototypes of parallelized functions&lt;br /&gt;
* ParallelCodeGeneration: ‘sources’ folder is now correctly added to the includes&lt;br /&gt;
* Fixed OS-dependent path name that could cause one C file being parsed multiple times&lt;br /&gt;
* Frontend: Crash caused by two nested C99 for loops without curly brackets, e.g. &amp;lt;code&amp;gt;for (int i=0; i&amp;amp;lt;10; ++i) for (int i2; i2&amp;amp;lt;10; ++i2) ...&amp;lt;/code&amp;gt;&lt;br /&gt;
* Function duplication did not consider static variables&lt;br /&gt;
* Type deduction of function pointers&lt;br /&gt;
* Frontend: Improved error handling of false C code (e.g. case outside switch)&lt;br /&gt;
* Fixed executable flags for Linux&lt;br /&gt;
* Type deduction failed for address operator on &amp;lt;code&amp;gt;_Bool&amp;lt;/code&amp;gt; variable&lt;br /&gt;
* Performance estimation: Wrong warning: Assuming default number of iterations&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2022.01.a&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2022.01.a ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;improvements-4&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
&lt;br /&gt;
* Parallelization: Automatic scheduler avoids any schedules that causes slowdowns&lt;br /&gt;
* Parallelization: Functions with unsupported use of pointers are automatically clustered and will not be falsely parallelized&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;bugfixes-4&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Fixed errors with libraries math.h and errno.h&lt;br /&gt;
* Fixed bugs related to incompatible types&lt;br /&gt;
* Compilation error caused by conflict between user-defined macros (e.g. &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;) and winnt.h&lt;br /&gt;
* Fixed prompt for workspace selection at startup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2022.01&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2022.01 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;new-features-3&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== New Features ===&lt;br /&gt;
&lt;br /&gt;
* Added initial vectorization support for Aurix TC4xx PPU&lt;br /&gt;
** VectorizeTrafo: Added trafo for vectorizing a simple &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; loop into platform-independent vector code (alpha)&lt;br /&gt;
*** No check is performed that the vectorized code will be correct&lt;br /&gt;
*** Unsupported constructs are not detected beforehand. Instead, an exception is thrown during application&lt;br /&gt;
*** Supporting only simple array variable constructs of &amp;lt;code&amp;gt;a[i]&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; is the &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; iterator variable) or &amp;lt;code&amp;gt;a[j1]...[j2][i]&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;j1 ... j2&amp;lt;/code&amp;gt; must be loop invariant)&lt;br /&gt;
*** Supporting vectorization of reduction variables, e.g. &amp;lt;code&amp;gt;for (i=0; i&amp;amp;lt;N; ++i) i += a[i];&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Supporting predicated vector instructions&lt;br /&gt;
*** Supporting optional padding of array variables to eliminate predicated vector instructions&lt;br /&gt;
** TargetPlatform: &amp;lt;code&amp;gt;host_win32&amp;lt;/code&amp;gt; supports code generation of platform-independent vector code by using a template-based library for vector types and functions&lt;br /&gt;
** TargetPlatform: Added two “Aurix TC4xx Parallel Processing Unit” platforms with Tasking and Synopsys PPU compiler support&lt;br /&gt;
*** Supporting simulator code generation with cycle-approximate performance measurement&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;improvements-5&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
&lt;br /&gt;
* Supporting &amp;lt;code&amp;gt;long double&amp;lt;/code&amp;gt; in our libc math.h&lt;br /&gt;
* Added ConstPropagationTrafo transformation for applying constant propagation to a function&lt;br /&gt;
* Improved replacement of inc/dec (e.g. &amp;lt;code&amp;gt;++&amp;lt;/code&amp;gt;) and compound assign (e.g. &amp;lt;code&amp;gt;+=&amp;lt;/code&amp;gt;) operators&lt;br /&gt;
** Supports correct handling of volatile variables&lt;br /&gt;
** Resolution within array/struct initializers was not working (e.g. &amp;lt;code&amp;gt;int i1[] = { x++ };&amp;lt;/code&amp;gt;)&lt;br /&gt;
** Resolution within variable initialization could switch the order of statements (e.g. &amp;lt;code&amp;gt;int i1 = x++; int i2 = x;&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Target platforms: Added &amp;lt;code&amp;gt;char16_t&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;char32_t&amp;lt;/code&amp;gt; types and supporting macros&lt;br /&gt;
* Improved support for running code on target platforms&lt;br /&gt;
* Documentation: Added section about CLI&lt;br /&gt;
* Documentation: Set Cygwin 64 bit as only supported version&lt;br /&gt;
* Added support for selecting the target compiler affecting the macros and types used to parse the source code&lt;br /&gt;
** Settings: Added compiler combo box into general settings&lt;br /&gt;
** TargetPlatform: &amp;lt;code&amp;gt;microarchitecture.xml&amp;lt;/code&amp;gt;: Added &amp;lt;code&amp;gt;Compilers&amp;lt;/code&amp;gt; section&lt;br /&gt;
* Switched to Eclipse 2021-09&lt;br /&gt;
* Improved switch-to-if converter&lt;br /&gt;
* Added initial support for designated array range initializers (&amp;lt;code&amp;gt;[first ... last] = value&amp;lt;/code&amp;gt;) (see [https://gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html designated inits])&lt;br /&gt;
* Added optional function de-duplication pass (can be activated in advanced settings)&lt;br /&gt;
* Preserving all function, variable and type declarations and their original order within C file&lt;br /&gt;
* Flow: Improved monitor output (warning/error display) and added subtasks&lt;br /&gt;
* Multiple performance improvements for large projects (&#039;&#039;e.g. performance estimation works well with 1 mio lines of code&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;bugfixes-5&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Invalid function arguments after parallelization&lt;br /&gt;
* Parallelized function returned result on wrong core&lt;br /&gt;
* Duplication of &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; loops with declarations generated incorrect code&lt;br /&gt;
* Communication was not working with pointer variables&lt;br /&gt;
* Communication was placed after return statements&lt;br /&gt;
* Multiple transfers of same variable with same ID&lt;br /&gt;
* Fixed handling of large call trees&lt;br /&gt;
* Crash in SSATraversal caused by recursive functions with pointer parameters&lt;br /&gt;
* Memory leaks&lt;br /&gt;
* Avoiding “Too many arguments to function” warning for implicit functions&lt;br /&gt;
* Array size calculation of &amp;lt;code&amp;gt;array[ENUMERATOR]&amp;lt;/code&amp;gt; is now working&lt;br /&gt;
* COutput: -(-1) was output as –1&lt;br /&gt;
* Fixed analysis of for loops where the loop variable is modified before the for loop&lt;br /&gt;
* Pragmas outside of functions are preserved in the correct order&lt;br /&gt;
* Fixed output of forward-declared structs, unions and enums&lt;br /&gt;
* Merging two composite blocks could lead to two variables using the same name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2021.09.a&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2021.09.a ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;new-features-4&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== New Features ===&lt;br /&gt;
&lt;br /&gt;
* Added pass to use a preprocessor (e.g. gcc or clang) on C code before it is used in ePS&lt;br /&gt;
* Integrated AUTOSAR file parsing based on the Artop library&lt;br /&gt;
* Added calculation of confidence level for performance estimation&lt;br /&gt;
* Added support for a configuration file to add pragmas without changing the source code&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;improvements-6&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
&lt;br /&gt;
* Added basic support for:&lt;br /&gt;
** function pointers&lt;br /&gt;
** recursive functions&lt;br /&gt;
** designated array initializers&lt;br /&gt;
** designated struct/union initializers&lt;br /&gt;
** compound assignment operators&lt;br /&gt;
** C11 style anonymous enum/struct/union definitions embedded in other type definitions&lt;br /&gt;
** incomplete data types (according to C standard)&lt;br /&gt;
* Separated settings for sequential and parallel platform tests&lt;br /&gt;
* Added new functionalities to CLI:&lt;br /&gt;
** Configuration of projects&lt;br /&gt;
** Control over passes to run&lt;br /&gt;
* Improved traceability of input to output source code lines&lt;br /&gt;
* Added generation of log files for each pass that capture all output from the console&lt;br /&gt;
* Project files are now stored compressed to save space&lt;br /&gt;
* Reworked the status messages of the flow&lt;br /&gt;
* Improved profile-guided execution counts of for loops&lt;br /&gt;
* Added more information to properties view of HTG representation&lt;br /&gt;
* Switched file structure for parallelization constraints to reduce the number of required entries&lt;br /&gt;
* Added Infineon TC387 platform&lt;br /&gt;
* Made the analysis for transformations more robust&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;bugfixes-6&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Crash for arguments with pointer case (e.g. (void*) arg)&lt;br /&gt;
* Crash with function calls used in variable initialization&lt;br /&gt;
* Assertion caused by repeated function declarations in one translation unit&lt;br /&gt;
* Various conflicting types errors&lt;br /&gt;
* Wrong placement of global variables&lt;br /&gt;
* Typedef redefinition was always reported as error&lt;br /&gt;
* Function declaration and implementation of different but compatible function types caused errors&lt;br /&gt;
* Fixed several issues with files not being closed correctly in the GUI&lt;br /&gt;
* Fixed error in size calculation in recursive structs&lt;br /&gt;
* Propagation of absolute number of executions over function calls&lt;br /&gt;
* Errors in duplication of function calls&lt;br /&gt;
* Detection of recursive function calls in unused functions&lt;br /&gt;
* Type deduction was wrong in many cases (e.g. &amp;lt;code&amp;gt;enum&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;++&amp;lt;/code&amp;gt;)&lt;br /&gt;
* void-cast of function call caused incorrect code&lt;br /&gt;
* Removed automic inclusion of System32 folder in path on Windows&lt;br /&gt;
* Fixed bug with PATH variable on Windows&lt;br /&gt;
* Fixed path separation on Linux&lt;br /&gt;
* Wrong messages about assignments to constant variables&lt;br /&gt;
* Fixed layout of advanced settings page&lt;br /&gt;
* Renamed _emx_main.c to _emx_t_main.c to avoid conflicts with sources named main.c&lt;br /&gt;
* Functions called via function pointers/references were considered unused&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2021.06&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2021.06 ==&lt;br /&gt;
&lt;br /&gt;
* Added line information for warning “Variable is defined externally”&lt;br /&gt;
* Code generation: Added supported for generating inline assembler&lt;br /&gt;
* ConsistencyChecker: Introduced different levels of strictness and added corresponding project setting&lt;br /&gt;
* DepChainAnalysis: Added reason to warning if a function could not be analyzed&lt;br /&gt;
* Frontend / Model / Code generation: Supporting switch case expressions to contain generic instructions (e.g. enumerators) instead of just integers&lt;br /&gt;
* Frontend: Added support for inline assembler&lt;br /&gt;
* Frontend: Handling of null statements improved (especially if labeled or within empty body blocks) HTG: Adding task clusters for goto instructions&lt;br /&gt;
* Hardware support: Added the optimized ringbuffer communication models ringbuf_fixed_fork (the new default) and ringbuf_fixed_thread based on the existing Aurix optimized ringbuffer implementation&lt;br /&gt;
* Hardware support: Implemented new communication API:EMXAPI prefix replaced with EMX, Added functions to send and receive float and double types, Values to be sent/received by scalar communication functions are now passed by value and as the return value, Argument order changed so that the first four arguments of all functions are: src, dst, id and index, followed by value/buffer arguments when present&lt;br /&gt;
* Hardware support: Renamed communication model names ringbuf-&amp;amp;gt;ringbuf_fork and singlecopy_sharedmem-&amp;amp;gt;ringbuf_thread&lt;br /&gt;
* Product: Updated provided JRE on linux to 11.0.11&lt;br /&gt;
* Wizard: Added communication test example project&lt;br /&gt;
* Bugfix: Custom paths were not considered for executing external tools&lt;br /&gt;
* Bugfix: DepChainAnalysis: Fixed crash if a function was not duplicated&lt;br /&gt;
* Bugfix: ExtractMain transformation: Converting function to main was not working if the calling function was not main&lt;br /&gt;
* Bugfix: Fixed handling of the size of alias types&lt;br /&gt;
* Bugfix: Fixed some problems related to BasicBlock file locations&lt;br /&gt;
* Bugfix: Frontend / Code Generation: Handling of case blocks with { } was not working&lt;br /&gt;
* Bugfix: Frontend: Correct placement of pragmas in front of labels&lt;br /&gt;
* Bugfix: GUI: Re-initialize compiler defaults when project settings is changed&lt;br /&gt;
* Bugfix: SSA: Crash in SSATraversal caused by incorrect usedef detection of parameters&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2021.03a&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2021.03a ==&lt;br /&gt;
&lt;br /&gt;
* Code generation: Template processing is deleting template files directly after processing&lt;br /&gt;
* DepChainAnalysis: Added XML output (depchainanalysis.xml)&lt;br /&gt;
* DepChainAnalysis: Bugfix: Function calls with unused return value were broken&lt;br /&gt;
* Flow: Introduced source template processing of &#039;&#039;.ftl and &#039;&#039;.twig files. An option was added in general settings to enable that feature.&lt;br /&gt;
* GUI: Source template GUI option now also added for non-C inputs and defaults to disabled&lt;br /&gt;
* Performance estimation: Refactored BBDurationProvider and BBDurationEstimator&lt;br /&gt;
* Performance estimation: Refactored procedure call overhead&lt;br /&gt;
* Settings: Improved handling of false root procedures&lt;br /&gt;
* Supporting EMX_EXTRACTMAIN pragma to trigger extract main transformation. The extract main trafo uses the pragma to apply the transformation after all other transformations.&lt;br /&gt;
* Template processing: Introduced generic project-based variables&lt;br /&gt;
* Trafo: Added loop interchange transformation&lt;br /&gt;
* Bugfix: C Frontend: Pragma placement&lt;br /&gt;
* Bugfix: Crash in case of unary operator within while condition&lt;br /&gt;
* Bugfix: Exception caused by loop analyzer in case of reverse “for” loop&lt;br /&gt;
* Bugfix: Fixed several GUI and flow errors&lt;br /&gt;
* Bugfix: ParallelPostCodeGen: Fixed check for empty source folders list&lt;br /&gt;
* Bugfix: Parameters no longer removed from function without body&lt;br /&gt;
* Bugfix: Project wizard stored wrong String in .properties for InputLanguage&lt;br /&gt;
* Bugfix: TargetPlatform: GUI was broken in case a software platform was missing&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2021.03&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2021.03 ==&lt;br /&gt;
&lt;br /&gt;
* Added GUI mechanism to insert timing instructions around functions and at blocks marked with pragmas&lt;br /&gt;
* Bugfix: CDT Frontend: Variable declaration in the middle could produce wrong code&lt;br /&gt;
* Bugfix: Dangling exception with AliasType&lt;br /&gt;
* Bugfix: GUI: Project wizard was broken for empty workspaces&lt;br /&gt;
* Bugfix: GUI: the presence of a file without extension inside the ECG output folder caused an exception in C2MMapper&lt;br /&gt;
* Bugfix: HTG: Crash caused by a too deep HTG&lt;br /&gt;
* Bugfix: Indirection (dereference) as function call argument&lt;br /&gt;
* Bugfix: PaddingPragmaHandler: EMX_PADDING pragma is working across function boundaries&lt;br /&gt;
* Bugfix: Parallel Code Generation: Return assignment check failed for non-duplicated functions&lt;br /&gt;
* Bugfix: Remove unused functions setting was broken&lt;br /&gt;
* Bugfix: Scheduler: Root function forcibly clustered due to multiple returns are handled correctly&lt;br /&gt;
* Bugfix: Scheduler: exception caused by main function with multiple return statements&lt;br /&gt;
* Bugfix: Size deduction from variable initialization was broken for global variables&lt;br /&gt;
* Bugfix: The analysis failed in case a variable was available only as an external declaration. A warning is now issued in that case.&lt;br /&gt;
* Bugfix: incorrect view when switching between input languages&lt;br /&gt;
* DepChainAnalysis: Improved dependency chain analysis to take repeating function calls into account and added delay suffix for each dependency&lt;br /&gt;
* DepChainAnalysis: Supporting analysis of function calls&lt;br /&gt;
* DepChainAnalysis: Supporting control dependency calculation&lt;br /&gt;
* DepChainAnalysis: Supporting functions with return parameters&lt;br /&gt;
* Eclipse: Switched to version 2021.03&lt;br /&gt;
* Flow view: removed unnecessary methods for button state restores&lt;br /&gt;
* Flow: Introduced lambda-based CallNormalizer that reimplements the old functionality to move every call into its own basic block&lt;br /&gt;
* Flow: Output of eMCG is now stored in generated_files&lt;br /&gt;
* Frontend: Added C correctness checks&lt;br /&gt;
* GUI: Added button to generate transformed code&lt;br /&gt;
* GUI: Added indicator of execution frequency to block representation in HTG view&lt;br /&gt;
* GUI: Added tab in properties view for displaying source code&lt;br /&gt;
* GUI: Anti and output dependencies are not rendered if they are between tasks on different cores&lt;br /&gt;
* GUI: Children of blocks are scaled to make sure they fit into the parent&lt;br /&gt;
* GUI: HTG and Scheduler view: Added support for bringing up the context menu using the keyboard&lt;br /&gt;
* GUI: HTG and Scheduler view: Fixed a bug that caused invalid behavior when focus was lost during mouse drag&lt;br /&gt;
* GUI: HTG and Scheduler view: Made selection behavior more consistent with standard windows selection behavior&lt;br /&gt;
* GUI: HTG: Changing ecg_decisions.ini file only if the content changed. That prevents unnecessary eCG runs.&lt;br /&gt;
* GUI: The length of THEN/ELSE blocks is scaled according to their execution frequency&lt;br /&gt;
* GeCoS: Deleted several unused classes&lt;br /&gt;
* ParallelCodeGeneration: Leaving non-parallelized functions unchanged&lt;br /&gt;
* ParallelCodeGeneration: Removed user includes from _emx_main.h&lt;br /&gt;
* Performance estimation: Brought back execution frequency assumptions in case code cannot be analyzed&lt;br /&gt;
* Performance estimation: Changed perf test platform to aurix_tc397_kit&lt;br /&gt;
* Performance estimation: Improved LLVM profiling provider to handle nested control constructs and while loops&lt;br /&gt;
* Settings: Added setting to disable consistency checking&lt;br /&gt;
* Settings: Moved host profiling settings from advanced to general&lt;br /&gt;
* Settings: Supporting &amp;lt;Makefile&amp;gt; placeholder in compile command settings that is replaced by Makefile or Makefile.gen (whatever exists)&lt;br /&gt;
* Supporting &amp;lt;code&amp;gt;#pragma EMX_PADDING &amp;amp;lt;pad&amp;amp;gt;&amp;lt;/code&amp;gt; pragma to increase the size of the last dimension of an array to a multiple of &amp;lt;code&amp;gt;pad&amp;lt;/code&amp;gt;&lt;br /&gt;
* TargetPlatform: Supporting run command specification in software platform (e.g. &amp;lt;code&amp;gt;&amp;amp;lt;Run command=&amp;amp;quot;make sim&amp;amp;quot;/&amp;amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
* TargetPlatform: Supporting specification of compile settings in software platform&lt;br /&gt;
* TargetPlatform: Used software platform description for parallel testing&lt;br /&gt;
* Templates: Added EMXAPI_SyncCores and EMXAPI_GetCore API functions&lt;br /&gt;
* Templates: Converted timing template to use FTL instead of macros&lt;br /&gt;
* Trafo: Added ExtractMain transformation&lt;br /&gt;
* Trafo: Added ObfuscationTrafo to make identifiers obscure&lt;br /&gt;
* Trafo: Added function inline transformation&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2020.12&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2020.12 ==&lt;br /&gt;
&lt;br /&gt;
* Added Apache FreeMarker (.ftl file extension) as additional template language&lt;br /&gt;
* Flow GUI: Parsing the C source code is now a pass&lt;br /&gt;
* Switched to Eclipse-2020-09&lt;br /&gt;
* HTG and properties view: Displaying call overhead&lt;br /&gt;
* Scheduler / Performance estimation: Refactored procedure call overhead calculation/handling&lt;br /&gt;
* GUI: refactored eCG and ePS view to use same base&lt;br /&gt;
* AURIX: Implemented high-performance communication library using statically determined absolute addresses&lt;br /&gt;
* AURIX: Added new combined template for TC297 and TC397&lt;br /&gt;
* Parallel Code Generation: Implement feature to convert functions to static (Parallelization settings, activated by default)&lt;br /&gt;
* Performance estimation: Reworked calculation of call overhead&lt;br /&gt;
* Added post-placement communication optimization by moving send as early and recv as late as possible (Advanced setting, deactived by default)&lt;br /&gt;
* Most important bug fixes:&lt;br /&gt;
** Bugfix: Return type of parallelized functions&lt;br /&gt;
** Bugfix: Pragma-controlled clustering (&amp;lt;code&amp;gt;EMX_TASK_CLUSTER&amp;lt;/code&amp;gt;) of tasks was broken&lt;br /&gt;
** Bugfix: &amp;lt;code&amp;gt;EMX_TASK_ALLOC&amp;lt;/code&amp;gt; pragmas appeared in generated code&lt;br /&gt;
** Bugfix: Linux: Issue with short task names on task termination&lt;br /&gt;
** Bugfix: Preserving static keyword and name of static global variables&lt;br /&gt;
** Bugfix: Fixed support for &amp;lt;code&amp;gt;EMX_INITCODE&amp;lt;/code&amp;gt; pragma&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2020.06&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2020.06 ==&lt;br /&gt;
&lt;br /&gt;
* emmtrix project wizard now can import multiple C files&lt;br /&gt;
* Fixed handling of C projects without main function&lt;br /&gt;
* Introduced new indicators for status of passes&lt;br /&gt;
* Reworked handling of compiler settings&lt;br /&gt;
* Switched to internal pass infrastructure&lt;br /&gt;
* Switched to Eclipse version 2020-03&lt;br /&gt;
* Switched from Jasva 8 to Java 11&lt;br /&gt;
* Bugfix: CDTFrontend crashed for “for (;;) {}” loops [TS]&lt;br /&gt;
* TargetPlatform: Added support for additional function information (funcinfo.xml)&lt;br /&gt;
* Bugfix: Fixed template of MBA5728&lt;br /&gt;
* Added option to disable removal of unsused functions&lt;br /&gt;
* Added option to disable reordering of tasks&lt;br /&gt;
* Added option to parse of C files in eCG output folder&lt;br /&gt;
* Bugfix: Fixed generation of functions with simple declarations&lt;br /&gt;
* Removed enforced option “-B” for sequential tests&lt;br /&gt;
* Added handling of include directories&lt;br /&gt;
* Added button to parse C code in C projects&lt;br /&gt;
* Fixed various bugs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2019.11.07&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2019.11.07 ==&lt;br /&gt;
&lt;br /&gt;
* Fixed definition of custom paths&lt;br /&gt;
* Several bug fixes regarding global variables&lt;br /&gt;
* Several bug fixes regarding parameters of parallelized functions&lt;br /&gt;
* Improved generation of OpenCL code&lt;br /&gt;
* Improved handling of static keyword&lt;br /&gt;
* Fixed bug in analysis of data dependencies&lt;br /&gt;
* Several other minor bug fixes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2019.03.20&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2019.03.20 ==&lt;br /&gt;
&lt;br /&gt;
* Support for array of structs in emmtrix Code Generator&lt;br /&gt;
* Various improvements for data type selection in eCG&lt;br /&gt;
* Fixed bug that might cause parallel execution of passes within ePS&lt;br /&gt;
* Added option to set C macros for C workflow&lt;br /&gt;
* Improved error messages from CDTFrontend&lt;br /&gt;
* Redesigned SSH password and confirmation dialog&lt;br /&gt;
* Fixed various bugs related to C code input&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2018.08.09&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2018.08.09 ==&lt;br /&gt;
&lt;br /&gt;
* Support for Linux. We have tested it under Xubuntu 18.04. Since it is the first version for Linux, additional bugs compared to Windows cannot be excluded.&lt;br /&gt;
* Customization of the target platform: a target folder is automatically generated in the project folder, in which the various files for the target platform are located. Here e.g. timings for library functions can be stored. More details can be found in the ePS User Guide (just click on Parallel Studio Help in the tool).&lt;br /&gt;
* Support for software templates: in the generated subfolder “template” files can be stored that are to be used for building the parallel code. In addition, existing files can be customized for specific projects and templates can be filled in dynamically using Jtwig (http://jtwig.org/). Again, more details can be found in the ePS User-Guide&lt;br /&gt;
* Improved C support: processing of generic C code (e.g. with structs and switch cases) has been improved&lt;br /&gt;
* Static performance analysis has been reworked. Estimated times from previous versions may differ especially in nested structures. With the new method, it is no longer necessary that the input code is executed on the host system. Instead, all values are calculated as far as possible and otherwise populated with default values.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2017.07.04&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2017.07.04 ==&lt;br /&gt;
&lt;br /&gt;
* Restructured settings&lt;br /&gt;
* Removed option of eCG to mimic the output of MATLAB&lt;br /&gt;
* Integrated automatic consistency checker into the flow&lt;br /&gt;
** Model consistency&lt;br /&gt;
** Order consistency&lt;br /&gt;
** Schedule checker (times, containment, order)&lt;br /&gt;
* Unified video interfaces across all platforms&lt;br /&gt;
* Switched to Eclipse Oxygen&lt;br /&gt;
* Removed support for GeCoS scripts&lt;br /&gt;
* Improved sequential testing for C flow&lt;br /&gt;
* Simplified support of parallelization of functions with pointer parameters&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Fixed scheduler crash with function prototypes that omit parameter names&lt;br /&gt;
* Updated instruction performance for Cortex-A7 and Cortex-A15 on ODROID XU4&lt;br /&gt;
* Fixed a bug that could cause the tabular communication cost model to assign transfer costs for same-core transfers&lt;br /&gt;
* Fixed a bug that prevented to correctly derive a tabular communication cost models when multiple commtable files where present for the same target platform (affected heterogeneous architectures only)&lt;br /&gt;
* Analysis results are integrated into a node’s property view&lt;br /&gt;
* Fixed support for emx_task_alloc and emx_task_cluster pragmas: pragmas now take precedence over allocation made in the GUI or via the constraint settings JSON file&lt;br /&gt;
* Various fixes and improvements regarding user decisions&lt;br /&gt;
* Fixed a bug that would cause user decisions that were not changed in the current session to be removed from ecg_decisions.ini upon save of the file&lt;br /&gt;
* corrected calculation of start and finish times of for loops&lt;br /&gt;
* Fixed display of loops that are mapped to multiple cores&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2017.03.23&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2017.03.23 ==&lt;br /&gt;
&lt;br /&gt;
* Added Simulink Model Viewer, which currently supports:&lt;br /&gt;
** display of top level of model&lt;br /&gt;
** descend to sub block by double clicking on block&lt;br /&gt;
** block hover and selection&lt;br /&gt;
** history: Back/Forward/Home to model root&lt;br /&gt;
** zoom: 0,25 - 2.00 using toolbar or mouse wheel&lt;br /&gt;
* Support Simulink models&lt;br /&gt;
* HLS: Added synchronization for FPGA accelerators&lt;br /&gt;
* Fixed receive of pipe communication&lt;br /&gt;
* Enabled basic testing of C code in the C based flow&lt;br /&gt;
* Improved error handling when accessing projects/settings&lt;br /&gt;
* HLS: Added software interface generation for custom IP&lt;br /&gt;
* HLS: Added IP insertion into template Vivado project and bitstream generation&lt;br /&gt;
* HLS: Improved error handling and reporting&lt;br /&gt;
* Added video support for FriendlyARM NanoPi M3&lt;br /&gt;
* UnifyParameters now adds names to all unnamed function parameters&lt;br /&gt;
* Improved upgrade capabilities of project wizard&lt;br /&gt;
** automatic deletion of old epsproject and properties files&lt;br /&gt;
** generation of new epsproject and properties files&lt;br /&gt;
* Added Properties view to eCG and ePS perspective&lt;br /&gt;
* Added pass to place the eCG decision pragmas at parent blocks&lt;br /&gt;
* Improved error handling of update decision job&lt;br /&gt;
* Improved error handling of script execution&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2017.03.08&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2017.03.08 ==&lt;br /&gt;
&lt;br /&gt;
* Added support for Aurix FreeRTOS template and compiler script&lt;br /&gt;
* Added support for individual compiler settings for sequential, parallel and platform tests. These include:&lt;br /&gt;
** pre-/post-build bash script execution&lt;br /&gt;
** customization of CFLAG and LDFLAG&lt;br /&gt;
** customization of environment variables&lt;br /&gt;
* Improved support for handling of external files&lt;br /&gt;
* Improved support of __cplusplus define&lt;br /&gt;
* Added platform description for NanoPI M3 (S5P6818 Quad-Core Cortex-A53 1.4 GHz)&lt;br /&gt;
* Added platform description attribute “active” that determines whether a description is loaded/an available target platform&lt;br /&gt;
* HLS: improved the result checker to ensure compatability with Vivado HLS&lt;br /&gt;
* HLS: improved error checking of synthesis progress&lt;br /&gt;
* HLS: code refactoring and miscellaneous minor fixes&lt;br /&gt;
* Scheduler View: set minimal width of blocks to one pixel to improve placement of data dependencies&lt;br /&gt;
* Scheduler View: removed gaps beetween adjacent blocks to better reflect the blocks’ actual runtime&lt;br /&gt;
* Scheduler View: block selection markers are now drawn after blocks, so that they may not be overlapped by adjacent blocks anymore&lt;br /&gt;
* HTG View: moved information about from right pane to the properties view&lt;br /&gt;
* HTG View: added button to show the property view&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2016.27.01&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2016.27.01 ==&lt;br /&gt;
&lt;br /&gt;
* emmtrix Technologies GmbH was founded&lt;br /&gt;
[[Category:emmtrix Tools]]&lt;/div&gt;</summary>
		<author><name>Oliver.Wolf.EMX</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=emmtrix_Studio_Release_Notes&amp;diff=2014</id>
		<title>emmtrix Studio Release Notes</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=emmtrix_Studio_Release_Notes&amp;diff=2014"/>
		<updated>2024-08-07T08:02:38Z</updated>

		<summary type="html">&lt;p&gt;Oliver.Wolf.EMX: /* emmtrix Studio Release Notes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;emmtrix-studio-release-notes&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= emmtrix Studio Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Release 2024.07 ==&lt;br /&gt;
&lt;br /&gt;
=== New Features ===&lt;br /&gt;
&lt;br /&gt;
* New/improved transformations&lt;br /&gt;
** Deroll trafo: Added new trafo to create loops for similar subsequent statements or constructs&lt;br /&gt;
** LoopFusion trafo: Added new trafo to fuse two subsequent for loops with the same iteration space&lt;br /&gt;
** PtrResolve trafo: Added new trafo to resolve pointers and replace indirect memory accesses by direct (used in eDA)&lt;br /&gt;
** MakeStatic trafo: Added new trafo to make functions static if used only locally to provide optimization potential for the compiler and ease the linking&lt;br /&gt;
** ArrayToScalar trafo: Added new trafo to convert arrays to scalars&lt;br /&gt;
** LoopUnroll trafo: &lt;br /&gt;
*** Added possibility to apply `LoopUnroll` to all for-loops of selected functions&lt;br /&gt;
*** Automatically perform full loop unrolling when the unrolling factor exceeds the constant number of iterations&lt;br /&gt;
&lt;br /&gt;
* emmtrix Dependency Analyzer (eDA)&lt;br /&gt;
** Added result caching mechanism to speed up recurring analysis&lt;br /&gt;
** Added support for label propagation&lt;br /&gt;
** Added shortest-path and reachability report to follow how values/signals propagate&lt;br /&gt;
&lt;br /&gt;
* emmtrix Performance Estimator (ePE)&lt;br /&gt;
** Added min/max runtime calculation&lt;br /&gt;
&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
* C code handling&lt;br /&gt;
** Preserving `#define` and `#undef` preprocessor directives&lt;br /&gt;
** Parsing C code comments for analysis and code generation&lt;br /&gt;
** Added option to set charsets for source code files&lt;br /&gt;
** Respecting the correct order of #include directives and other declarations&lt;br /&gt;
&lt;br /&gt;
* GUI Improvements&lt;br /&gt;
** Settings: Sorted and restructured settings&lt;br /&gt;
** Improved usability of emmtrix Studio project wizard&lt;br /&gt;
&lt;br /&gt;
* Analysis Time Improvements&lt;br /&gt;
** Improved performance of SSA calculation&lt;br /&gt;
** Improved analysis performance by caching result of variable usage&lt;br /&gt;
** Added internal caching for performance estimation&lt;br /&gt;
** Improvements of internal type calculations&lt;br /&gt;
** Added cache to improve performance to calculations in eDA&lt;br /&gt;
** Fixed performance bottleneck in dominator calculation in eDA&lt;br /&gt;
&lt;br /&gt;
* emmtrix Parallel Studio&lt;br /&gt;
** Added option to enable parallelization for shared memory (improves global variables synchronization)&lt;br /&gt;
&lt;br /&gt;
* General&lt;br /&gt;
** Improved support for pointers in dependency analysis in eDA&lt;br /&gt;
** Improved constant propagation by using sparse conditional constant propagation algorithm&lt;br /&gt;
** Commandline interface learned to run commands from script file&lt;br /&gt;
&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
* Fixed handling of enum declarations&lt;br /&gt;
* Improved support for nested folder structures&lt;br /&gt;
* Crash in SSA algorithm&lt;br /&gt;
* Fixed automatic insertion of forward declaration when necessary&lt;br /&gt;
* Handling of ArithmeticException e.g. caused by division by zero in const propagation&lt;br /&gt;
* Fixed stack overflow in SSA algorithm caused by deep CFGs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2023.11&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2023.11 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;new-features&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== New Features ===&lt;br /&gt;
&lt;br /&gt;
* All emmtrix tools are now gathered in the emmtrix Studio framework with their own perspectives&lt;br /&gt;
** emmtrix Parallel Studio&lt;br /&gt;
** emmtrix Performance Estimator&lt;br /&gt;
*** TargetLink Extension (coming soon)&lt;br /&gt;
*** Simulink Extension (on request)&lt;br /&gt;
** emmtrix Dependency Analyzer&lt;br /&gt;
** emmtrix Code Vectorizer (coming soon)&lt;br /&gt;
** emmtrix Model Code Generator&lt;br /&gt;
** emmtrix Code Generator&lt;br /&gt;
* Windows: A portable Cygwin installation is provided to remove the need to install any additional third-party tools&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;improvements&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
&lt;br /&gt;
* Hierarchical Program View: New indicator icon for tasks with measured timing data&lt;br /&gt;
* Code Transformations: Added setting in GUI to enable/disable code transformation analysis&lt;br /&gt;
* Frontend: Print out missing include files for all processed files for easier project setup and debugging&lt;br /&gt;
* Eclipse: Update to version 2023-06&lt;br /&gt;
* EMX-LLVM: Update to version 230901&lt;br /&gt;
* Added support for alias attribute (e.g. &amp;lt;code&amp;gt;__attribute__((alias(&amp;amp;quot;name&amp;amp;quot;)))&amp;lt;/code&amp;gt;) for functions and variables&lt;br /&gt;
* InstructionSimplifier trafo: Added the following simplifications:&lt;br /&gt;
** &amp;lt;code&amp;gt;const ? a : b&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;0 - x&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;-x&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;x [-&amp;amp;amp;^|/%] x&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;x [+-] (-y)&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;x [-+] y&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;(-x) + y&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;y - x&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;x [*/] (-1)&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;-x&amp;lt;/code&amp;gt;&lt;br /&gt;
* ExplicitCastInserter trafo: Added trafo to insert explicit type casts in expressions where implicit casts are performed&lt;br /&gt;
** &amp;lt;code&amp;gt;if (expr)&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;if ((_Bool)expr)&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;float_var = 10&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;float_var = (float)10&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;ptr_to_long_int + char&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;ptr_to__long_int + (int)char&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;bool_var * unsigned_long_var&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;(unsigned long)bool_var * unsigned_long_var&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;0 ? bool_var : vol_int_var&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;(_Bool)0 ? (volatile int)bool_var : vol_int_var&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;func_call(signed_int_var + long_double_var)&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;func_call((long double)signed_int_var + long_double_var)&amp;lt;/code&amp;gt;&lt;br /&gt;
* Simulink viewer: Improved usability&lt;br /&gt;
** Added sliders for larger models&lt;br /&gt;
** Added labels for simple blocks (e.g. sum, product)&lt;br /&gt;
** Improved contrast of background colors&lt;br /&gt;
** Improved positioning of labels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;bugfixes&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Parallelization: Fixed generation of inconsistent ids from send/recv calls&lt;br /&gt;
* Parallelization: Detect variable length arrays as unsupported and clustered&lt;br /&gt;
* Fixed wrong reordering of declarations for automatic merging of blocks&lt;br /&gt;
* Fixed access analysis of function call arguments including &amp;lt;code&amp;gt;&amp;amp;amp;&amp;lt;/code&amp;gt; and structs&lt;br /&gt;
* Fixed crash caused by struct field passed as pointer to function&lt;br /&gt;
* Project Wizard got stuck during project creation&lt;br /&gt;
* Performance Estimation: Fixed bug with LLVM IR based estimation and multiple source files&lt;br /&gt;
* Bugfix for handling custom paths replacing the system paths&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;emmtrix-parallel-studio-release-notes&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= emmtrix Parallel Studio Release Notes =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2022.10&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2022.10 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;improvements-1&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
&lt;br /&gt;
* Added support for GCC extension [https://gcc.gnu.org/onlinedocs/gcc/Statement-Exprs.html statement expressions]&lt;br /&gt;
* Update EMX-LLVM tools to release 2022.11.18&lt;br /&gt;
* Added separate template files for “Parallel Tests” (independent from sequential test template)&lt;br /&gt;
* Eclipse: Updated to version 2022.06&lt;br /&gt;
* Added setting to specify the path for EMX-LLVM tools&lt;br /&gt;
* Added new transformation to convert &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; loops to &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; loops&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;bugfixes-1&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Avoid false duplication of functions&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2022.07&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2022.07 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;new-features-1&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== New Features ===&lt;br /&gt;
&lt;br /&gt;
* Added support for assembly-based performance estimation&lt;br /&gt;
** Added option to enable assembly-based performance estimation in advanced settings&lt;br /&gt;
** Supporting Tricore using HighTec GCC compiler (tricore-gcc)&lt;br /&gt;
** Supporting ARM Cortex-A7 using [https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads ARM GNU Toolchain]&lt;br /&gt;
** Updated target defintions with assembler performance estimation&lt;br /&gt;
* Added new disassembly view with traceability between HTG and C source code&lt;br /&gt;
** Generating &amp;lt;code&amp;gt;assembly.asmmodel&amp;lt;/code&amp;gt; file storing disassembly and mapping information&lt;br /&gt;
** Disassembly view: Added disassembly view (AsmEditor) for &amp;lt;code&amp;gt;assembly.asmmodel&amp;lt;/code&amp;gt; files that displays disassembly information&lt;br /&gt;
** Disassembly view: Option to display timing information from assembly-based performance information&lt;br /&gt;
** Disassembly view: Option to reorder basic blocks to better match the order within the source file&lt;br /&gt;
** Disassembly view: Automatically highlighting the C source line in a corresponding editor if the caret is changed to an assembly instruction&lt;br /&gt;
** Disassembly view: Automatically highlighting the assembly instruction in a corresponding disassembly view if the caret is changed to a C expression&lt;br /&gt;
** HTG view: Added new &amp;lt;code&amp;gt;ASM&amp;lt;/code&amp;gt; button to open disassembly view&lt;br /&gt;
** HTG view: Automatically highlighting the assembly instructions within disassembly view if a HTG node is selected&lt;br /&gt;
** Currently supports Infineon AURIX and ARM Cortex-A7&lt;br /&gt;
* Performance estimation workflow&lt;br /&gt;
** Added new GUI elements to handle performance estimation to workflow&lt;br /&gt;
** Generation of HTML report with information on function level&lt;br /&gt;
** Added support for loading timing data from simulation and hardware&lt;br /&gt;
* Added support for LLVM-IR-based performance estimation&lt;br /&gt;
** Independent from target compiler&lt;br /&gt;
** Example target specification available for Infineon AURIX TC3xx&lt;br /&gt;
* Added new code sinking transformation&lt;br /&gt;
** The transformation moves assign statements to positions where it is executed less frequently&lt;br /&gt;
** A threshold value is given that specifies the minimum reduction factor for the execution count (threshold)&lt;br /&gt;
* Added new loop-invariant code motion transformation&lt;br /&gt;
** The transformation moves only statements by default&lt;br /&gt;
** It optionally moves sub-expressions by creating temporary variables (sub_exprs=1)&lt;br /&gt;
** It optionally reorders invariant expressions by applying the commutative and associative laws (reorder=1)&lt;br /&gt;
** It includes an built-in test about the number of moved expressions (expected_moved_exprs)&lt;br /&gt;
* Added checksum based upgrade mechanism for &amp;lt;code&amp;gt;target&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;template&amp;lt;/code&amp;gt; folders&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;improvements-2&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
&lt;br /&gt;
* Template processing: Added variables &amp;lt;code&amp;gt;C_FILES_PROCESSED&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;C_FILES_ADDITIONAL&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;C_FILES_TOCOMPILE&amp;lt;/code&amp;gt;&lt;br /&gt;
* CPP2C: Supporting projects with multiple *.cpp files&lt;br /&gt;
* Active project management&lt;br /&gt;
** GUI: Project list in workflow view now has an empty entry to deselect any project&lt;br /&gt;
** Bugfix: The active project is now stored explicitly in the workspace to avoid any ambiguity&lt;br /&gt;
** Bugfix: Fixed detection of changes to projects (rename, import, copy, etc.)&lt;br /&gt;
* Improved WhileToFor transformation with better detection of step and init code&lt;br /&gt;
* Improved loop unrolling transformation by adding support for declarations, unknown number of exections, returns and breaks&lt;br /&gt;
* C library: Supporting &amp;lt;code&amp;gt;va_start&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;va_end&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;va_arg&amp;lt;/code&amp;gt; of stdarg.h&lt;br /&gt;
* Improved trip count calculation of for loops by using local constant propagation&lt;br /&gt;
* Improved check for unsupported C constructs that will be automatically clustered&lt;br /&gt;
** Switch case constructs (that are not converted to if)&lt;br /&gt;
** Double pointers: e.g. &amp;lt;code&amp;gt;int **a&amp;lt;/code&amp;gt;&lt;br /&gt;
** Do while loops&lt;br /&gt;
** Goto statements&lt;br /&gt;
** Functions with multiple return paths (no return or one return at the end is allowed)&lt;br /&gt;
** Loops (for, while, do while) with continue&lt;br /&gt;
** Loops (for, while, do while) with break&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;bugfixes-2&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Parallel code generation: Header file &amp;lt;code&amp;gt;_emx_main.h&amp;lt;/code&amp;gt; was included multiple times&lt;br /&gt;
* Control-To-Goto: Fixed conversion of short-circuit operations within variable initialization&lt;br /&gt;
* Bugfix: Constant propagation with pointers&lt;br /&gt;
* Fixed issues with generation of temporary variables&lt;br /&gt;
* Fixed some GUI related bugs (avoid unnecessary exceptions)&lt;br /&gt;
* Fixed some bugs in the parallel performance estimation (wrong calculation of loops)&lt;br /&gt;
* Fixed Linux related bugs (paths, executable flags)&lt;br /&gt;
* Fixed Run on MATLAB and compare&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;other&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Other ===&lt;br /&gt;
&lt;br /&gt;
* Removed TWIG template support&lt;br /&gt;
* ePS is now using Java 17, required files for Windows and Linux are integrated&lt;br /&gt;
* Release is based on Eclipse 2022.03&lt;br /&gt;
* Update eCG to release from 29/04/22&lt;br /&gt;
* Update CPP2C to release from 29/07/22&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2022.04&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2022.04 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;new-features-2&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== New Features ===&lt;br /&gt;
&lt;br /&gt;
* Transformations:&lt;br /&gt;
** Introduced VarSplit transformation for splitting an array variable into multiple variables&lt;br /&gt;
** Introduced FuncPtrResolve transformation for replacing indirect function calls by if-then-else constructs&lt;br /&gt;
** Introduced &amp;lt;code&amp;gt;InstructionSimplifier&amp;lt;/code&amp;gt; transformation to simplify expressions by applying neutral and zero element optimizations&lt;br /&gt;
** Transformations can now track the reason the analysis failed&lt;br /&gt;
* Standard header files now available in template folder (&amp;lt;code&amp;gt;standard_includes&amp;lt;/code&amp;gt;) and can be edited by the user&lt;br /&gt;
* Introduced new file management (epsfiles.txt)&lt;br /&gt;
** Input files are now defined in the file &amp;lt;code&amp;gt;sources/epsfiles.txt&amp;lt;/code&amp;gt; which follows the syntax of [https://git-scm.com/docs/gitattributes .gitattributes] files&lt;br /&gt;
** It supports the following attributes&lt;br /&gt;
*** &amp;lt;code&amp;gt;action=[none|process|compile|copy]&amp;lt;/code&amp;gt;: Defines what ePS is doing with the file&lt;br /&gt;
**** &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt; or no attribute is ignoring the file&lt;br /&gt;
**** &amp;lt;code&amp;gt;compile&amp;lt;/code&amp;gt; is copying and compiling the file to output folder&lt;br /&gt;
**** &amp;lt;code&amp;gt;copy&amp;lt;/code&amp;gt; is only copying the file to output folder&lt;br /&gt;
**** &amp;lt;code&amp;gt;process&amp;lt;/code&amp;gt; is processing (reading and writing) the C source file by ePS&lt;br /&gt;
*** &amp;lt;code&amp;gt;template=[twig|ftl]&amp;lt;/code&amp;gt;: The file is processed by the specified template engine. A corresponding file extension is removed.&lt;br /&gt;
*** &amp;lt;code&amp;gt;c_preprocess&amp;lt;/code&amp;gt;: The source file is preprocessed through a C/C++ preprocessor&lt;br /&gt;
*** &amp;lt;code&amp;gt;codegen=[eCG|eCPP2C]&amp;lt;/code&amp;gt;: Code generation is applied to the source file&lt;br /&gt;
**** &amp;lt;code&amp;gt;eCG&amp;lt;/code&amp;gt; runs emmtrix Code Generator on the MATLAB or Scilab file&lt;br /&gt;
**** &amp;lt;code&amp;gt;eCPP2C&amp;lt;/code&amp;gt; runs emmtrix C++ to C Compiler on C++ source files&lt;br /&gt;
** Source file status is shown in Project Explorer as specified in epsfiles.txt&lt;br /&gt;
** Default epsfiles.txt file can be created via context menu in Project Explorer or in the Project Settings dialog&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;improvements-3&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
&lt;br /&gt;
* Target platforms:&lt;br /&gt;
** Added Tasking template for the Aurix TC397 platform&lt;br /&gt;
** Added hardware model of SPC58ECxx (PowerPC e200z4 dual-core)&lt;br /&gt;
* Vectorization transformation (still experimental)&lt;br /&gt;
** Improved support for array subscripts with linear memory access pattern&lt;br /&gt;
** Improved source code appearance after vectorization&lt;br /&gt;
** Supporting array subscripts with indexed memory access pattern&lt;br /&gt;
** Supporting vectorization of loops containing unvectorizable expressions&lt;br /&gt;
** Supporting vectorization of simple sub-functions&lt;br /&gt;
** Supporting &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; loops with non-constant iteration count&lt;br /&gt;
** Supporting memory accesses with indirection operator (e.g. &amp;lt;code&amp;gt;*(p+1) = ...&amp;lt;/code&amp;gt;)&lt;br /&gt;
** Supporting &amp;lt;code&amp;gt;?:&amp;lt;/code&amp;gt; operators, generic for loop initialization and non-vectorized local variables&lt;br /&gt;
* Performance estimation: Consider duration of variable initialization and ignoring constant expressions&lt;br /&gt;
* GUI: Changed format of exceptions dialog&lt;br /&gt;
* C library: Added header &amp;lt;code&amp;gt;arpa/inet.h&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;sys/socket.h&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;netinet/in.h&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;netdb.h&amp;lt;/code&amp;gt;&lt;br /&gt;
* Improved support for wide character string and char literals&lt;br /&gt;
* Supporting array size calculation of designated array initializers&lt;br /&gt;
* Performance estimation: Set default to 1 cycle per instruction when no data is available&lt;br /&gt;
* EpsProject: Include directories are relativized if they are part of the project&lt;br /&gt;
* CodeGeneration: Replicate input folder structure&lt;br /&gt;
* Added node context menu to Hierarchical Program View to export task dependencies in DOT or CSV format&lt;br /&gt;
* LLVM tools: Update to release from 27/04/2022&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;bugfixes-3&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Crash caused by &amp;lt;code&amp;gt;if (a = func() == 3)&amp;lt;/code&amp;gt;&lt;br /&gt;
* Frontend: Crash in type compatibility check when variable was redeclared after struct was redeclared&lt;br /&gt;
* Parallel code generation: Missing function prototypes of parallelized functions&lt;br /&gt;
* ParallelCodeGeneration: ‘sources’ folder is now correctly added to the includes&lt;br /&gt;
* Fixed OS-dependent path name that could cause one C file being parsed multiple times&lt;br /&gt;
* Frontend: Crash caused by two nested C99 for loops without curly brackets, e.g. &amp;lt;code&amp;gt;for (int i=0; i&amp;amp;lt;10; ++i) for (int i2; i2&amp;amp;lt;10; ++i2) ...&amp;lt;/code&amp;gt;&lt;br /&gt;
* Function duplication did not consider static variables&lt;br /&gt;
* Type deduction of function pointers&lt;br /&gt;
* Frontend: Improved error handling of false C code (e.g. case outside switch)&lt;br /&gt;
* Fixed executable flags for Linux&lt;br /&gt;
* Type deduction failed for address operator on &amp;lt;code&amp;gt;_Bool&amp;lt;/code&amp;gt; variable&lt;br /&gt;
* Performance estimation: Wrong warning: Assuming default number of iterations&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2022.01.a&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2022.01.a ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;improvements-4&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
&lt;br /&gt;
* Parallelization: Automatic scheduler avoids any schedules that causes slowdowns&lt;br /&gt;
* Parallelization: Functions with unsupported use of pointers are automatically clustered and will not be falsely parallelized&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;bugfixes-4&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Fixed errors with libraries math.h and errno.h&lt;br /&gt;
* Fixed bugs related to incompatible types&lt;br /&gt;
* Compilation error caused by conflict between user-defined macros (e.g. &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;) and winnt.h&lt;br /&gt;
* Fixed prompt for workspace selection at startup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2022.01&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2022.01 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;new-features-3&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== New Features ===&lt;br /&gt;
&lt;br /&gt;
* Added initial vectorization support for Aurix TC4xx PPU&lt;br /&gt;
** VectorizeTrafo: Added trafo for vectorizing a simple &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; loop into platform-independent vector code (alpha)&lt;br /&gt;
*** No check is performed that the vectorized code will be correct&lt;br /&gt;
*** Unsupported constructs are not detected beforehand. Instead, an exception is thrown during application&lt;br /&gt;
*** Supporting only simple array variable constructs of &amp;lt;code&amp;gt;a[i]&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; is the &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; iterator variable) or &amp;lt;code&amp;gt;a[j1]...[j2][i]&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;j1 ... j2&amp;lt;/code&amp;gt; must be loop invariant)&lt;br /&gt;
*** Supporting vectorization of reduction variables, e.g. &amp;lt;code&amp;gt;for (i=0; i&amp;amp;lt;N; ++i) i += a[i];&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Supporting predicated vector instructions&lt;br /&gt;
*** Supporting optional padding of array variables to eliminate predicated vector instructions&lt;br /&gt;
** TargetPlatform: &amp;lt;code&amp;gt;host_win32&amp;lt;/code&amp;gt; supports code generation of platform-independent vector code by using a template-based library for vector types and functions&lt;br /&gt;
** TargetPlatform: Added two “Aurix TC4xx Parallel Processing Unit” platforms with Tasking and Synopsys PPU compiler support&lt;br /&gt;
*** Supporting simulator code generation with cycle-approximate performance measurement&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;improvements-5&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
&lt;br /&gt;
* Supporting &amp;lt;code&amp;gt;long double&amp;lt;/code&amp;gt; in our libc math.h&lt;br /&gt;
* Added ConstPropagationTrafo transformation for applying constant propagation to a function&lt;br /&gt;
* Improved replacement of inc/dec (e.g. &amp;lt;code&amp;gt;++&amp;lt;/code&amp;gt;) and compound assign (e.g. &amp;lt;code&amp;gt;+=&amp;lt;/code&amp;gt;) operators&lt;br /&gt;
** Supports correct handling of volatile variables&lt;br /&gt;
** Resolution within array/struct initializers was not working (e.g. &amp;lt;code&amp;gt;int i1[] = { x++ };&amp;lt;/code&amp;gt;)&lt;br /&gt;
** Resolution within variable initialization could switch the order of statements (e.g. &amp;lt;code&amp;gt;int i1 = x++; int i2 = x;&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Target platforms: Added &amp;lt;code&amp;gt;char16_t&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;char32_t&amp;lt;/code&amp;gt; types and supporting macros&lt;br /&gt;
* Improved support for running code on target platforms&lt;br /&gt;
* Documentation: Added section about CLI&lt;br /&gt;
* Documentation: Set Cygwin 64 bit as only supported version&lt;br /&gt;
* Added support for selecting the target compiler affecting the macros and types used to parse the source code&lt;br /&gt;
** Settings: Added compiler combo box into general settings&lt;br /&gt;
** TargetPlatform: &amp;lt;code&amp;gt;microarchitecture.xml&amp;lt;/code&amp;gt;: Added &amp;lt;code&amp;gt;Compilers&amp;lt;/code&amp;gt; section&lt;br /&gt;
* Switched to Eclipse 2021-09&lt;br /&gt;
* Improved switch-to-if converter&lt;br /&gt;
* Added initial support for designated array range initializers (&amp;lt;code&amp;gt;[first ... last] = value&amp;lt;/code&amp;gt;) (see [https://gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html designated inits])&lt;br /&gt;
* Added optional function de-duplication pass (can be activated in advanced settings)&lt;br /&gt;
* Preserving all function, variable and type declarations and their original order within C file&lt;br /&gt;
* Flow: Improved monitor output (warning/error display) and added subtasks&lt;br /&gt;
* Multiple performance improvements for large projects (&#039;&#039;e.g. performance estimation works well with 1 mio lines of code&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;bugfixes-5&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Invalid function arguments after parallelization&lt;br /&gt;
* Parallelized function returned result on wrong core&lt;br /&gt;
* Duplication of &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; loops with declarations generated incorrect code&lt;br /&gt;
* Communication was not working with pointer variables&lt;br /&gt;
* Communication was placed after return statements&lt;br /&gt;
* Multiple transfers of same variable with same ID&lt;br /&gt;
* Fixed handling of large call trees&lt;br /&gt;
* Crash in SSATraversal caused by recursive functions with pointer parameters&lt;br /&gt;
* Memory leaks&lt;br /&gt;
* Avoiding “Too many arguments to function” warning for implicit functions&lt;br /&gt;
* Array size calculation of &amp;lt;code&amp;gt;array[ENUMERATOR]&amp;lt;/code&amp;gt; is now working&lt;br /&gt;
* COutput: -(-1) was output as –1&lt;br /&gt;
* Fixed analysis of for loops where the loop variable is modified before the for loop&lt;br /&gt;
* Pragmas outside of functions are preserved in the correct order&lt;br /&gt;
* Fixed output of forward-declared structs, unions and enums&lt;br /&gt;
* Merging two composite blocks could lead to two variables using the same name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2021.09.a&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2021.09.a ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;new-features-4&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== New Features ===&lt;br /&gt;
&lt;br /&gt;
* Added pass to use a preprocessor (e.g. gcc or clang) on C code before it is used in ePS&lt;br /&gt;
* Integrated AUTOSAR file parsing based on the Artop library&lt;br /&gt;
* Added calculation of confidence level for performance estimation&lt;br /&gt;
* Added support for a configuration file to add pragmas without changing the source code&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;improvements-6&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
&lt;br /&gt;
* Added basic support for:&lt;br /&gt;
** function pointers&lt;br /&gt;
** recursive functions&lt;br /&gt;
** designated array initializers&lt;br /&gt;
** designated struct/union initializers&lt;br /&gt;
** compound assignment operators&lt;br /&gt;
** C11 style anonymous enum/struct/union definitions embedded in other type definitions&lt;br /&gt;
** incomplete data types (according to C standard)&lt;br /&gt;
* Separated settings for sequential and parallel platform tests&lt;br /&gt;
* Added new functionalities to CLI:&lt;br /&gt;
** Configuration of projects&lt;br /&gt;
** Control over passes to run&lt;br /&gt;
* Improved traceability of input to output source code lines&lt;br /&gt;
* Added generation of log files for each pass that capture all output from the console&lt;br /&gt;
* Project files are now stored compressed to save space&lt;br /&gt;
* Reworked the status messages of the flow&lt;br /&gt;
* Improved profile-guided execution counts of for loops&lt;br /&gt;
* Added more information to properties view of HTG representation&lt;br /&gt;
* Switched file structure for parallelization constraints to reduce the number of required entries&lt;br /&gt;
* Added Infineon TC387 platform&lt;br /&gt;
* Made the analysis for transformations more robust&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;bugfixes-6&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Crash for arguments with pointer case (e.g. (void*) arg)&lt;br /&gt;
* Crash with function calls used in variable initialization&lt;br /&gt;
* Assertion caused by repeated function declarations in one translation unit&lt;br /&gt;
* Various conflicting types errors&lt;br /&gt;
* Wrong placement of global variables&lt;br /&gt;
* Typedef redefinition was always reported as error&lt;br /&gt;
* Function declaration and implementation of different but compatible function types caused errors&lt;br /&gt;
* Fixed several issues with files not being closed correctly in the GUI&lt;br /&gt;
* Fixed error in size calculation in recursive structs&lt;br /&gt;
* Propagation of absolute number of executions over function calls&lt;br /&gt;
* Errors in duplication of function calls&lt;br /&gt;
* Detection of recursive function calls in unused functions&lt;br /&gt;
* Type deduction was wrong in many cases (e.g. &amp;lt;code&amp;gt;enum&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;++&amp;lt;/code&amp;gt;)&lt;br /&gt;
* void-cast of function call caused incorrect code&lt;br /&gt;
* Removed automic inclusion of System32 folder in path on Windows&lt;br /&gt;
* Fixed bug with PATH variable on Windows&lt;br /&gt;
* Fixed path separation on Linux&lt;br /&gt;
* Wrong messages about assignments to constant variables&lt;br /&gt;
* Fixed layout of advanced settings page&lt;br /&gt;
* Renamed _emx_main.c to _emx_t_main.c to avoid conflicts with sources named main.c&lt;br /&gt;
* Functions called via function pointers/references were considered unused&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2021.06&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2021.06 ==&lt;br /&gt;
&lt;br /&gt;
* Added line information for warning “Variable is defined externally”&lt;br /&gt;
* Code generation: Added supported for generating inline assembler&lt;br /&gt;
* ConsistencyChecker: Introduced different levels of strictness and added corresponding project setting&lt;br /&gt;
* DepChainAnalysis: Added reason to warning if a function could not be analyzed&lt;br /&gt;
* Frontend / Model / Code generation: Supporting switch case expressions to contain generic instructions (e.g. enumerators) instead of just integers&lt;br /&gt;
* Frontend: Added support for inline assembler&lt;br /&gt;
* Frontend: Handling of null statements improved (especially if labeled or within empty body blocks) HTG: Adding task clusters for goto instructions&lt;br /&gt;
* Hardware support: Added the optimized ringbuffer communication models ringbuf_fixed_fork (the new default) and ringbuf_fixed_thread based on the existing Aurix optimized ringbuffer implementation&lt;br /&gt;
* Hardware support: Implemented new communication API:EMXAPI prefix replaced with EMX, Added functions to send and receive float and double types, Values to be sent/received by scalar communication functions are now passed by value and as the return value, Argument order changed so that the first four arguments of all functions are: src, dst, id and index, followed by value/buffer arguments when present&lt;br /&gt;
* Hardware support: Renamed communication model names ringbuf-&amp;amp;gt;ringbuf_fork and singlecopy_sharedmem-&amp;amp;gt;ringbuf_thread&lt;br /&gt;
* Product: Updated provided JRE on linux to 11.0.11&lt;br /&gt;
* Wizard: Added communication test example project&lt;br /&gt;
* Bugfix: Custom paths were not considered for executing external tools&lt;br /&gt;
* Bugfix: DepChainAnalysis: Fixed crash if a function was not duplicated&lt;br /&gt;
* Bugfix: ExtractMain transformation: Converting function to main was not working if the calling function was not main&lt;br /&gt;
* Bugfix: Fixed handling of the size of alias types&lt;br /&gt;
* Bugfix: Fixed some problems related to BasicBlock file locations&lt;br /&gt;
* Bugfix: Frontend / Code Generation: Handling of case blocks with { } was not working&lt;br /&gt;
* Bugfix: Frontend: Correct placement of pragmas in front of labels&lt;br /&gt;
* Bugfix: GUI: Re-initialize compiler defaults when project settings is changed&lt;br /&gt;
* Bugfix: SSA: Crash in SSATraversal caused by incorrect usedef detection of parameters&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2021.03a&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2021.03a ==&lt;br /&gt;
&lt;br /&gt;
* Code generation: Template processing is deleting template files directly after processing&lt;br /&gt;
* DepChainAnalysis: Added XML output (depchainanalysis.xml)&lt;br /&gt;
* DepChainAnalysis: Bugfix: Function calls with unused return value were broken&lt;br /&gt;
* Flow: Introduced source template processing of &#039;&#039;.ftl and &#039;&#039;.twig files. An option was added in general settings to enable that feature.&lt;br /&gt;
* GUI: Source template GUI option now also added for non-C inputs and defaults to disabled&lt;br /&gt;
* Performance estimation: Refactored BBDurationProvider and BBDurationEstimator&lt;br /&gt;
* Performance estimation: Refactored procedure call overhead&lt;br /&gt;
* Settings: Improved handling of false root procedures&lt;br /&gt;
* Supporting EMX_EXTRACTMAIN pragma to trigger extract main transformation. The extract main trafo uses the pragma to apply the transformation after all other transformations.&lt;br /&gt;
* Template processing: Introduced generic project-based variables&lt;br /&gt;
* Trafo: Added loop interchange transformation&lt;br /&gt;
* Bugfix: C Frontend: Pragma placement&lt;br /&gt;
* Bugfix: Crash in case of unary operator within while condition&lt;br /&gt;
* Bugfix: Exception caused by loop analyzer in case of reverse “for” loop&lt;br /&gt;
* Bugfix: Fixed several GUI and flow errors&lt;br /&gt;
* Bugfix: ParallelPostCodeGen: Fixed check for empty source folders list&lt;br /&gt;
* Bugfix: Parameters no longer removed from function without body&lt;br /&gt;
* Bugfix: Project wizard stored wrong String in .properties for InputLanguage&lt;br /&gt;
* Bugfix: TargetPlatform: GUI was broken in case a software platform was missing&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2021.03&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2021.03 ==&lt;br /&gt;
&lt;br /&gt;
* Added GUI mechanism to insert timing instructions around functions and at blocks marked with pragmas&lt;br /&gt;
* Bugfix: CDT Frontend: Variable declaration in the middle could produce wrong code&lt;br /&gt;
* Bugfix: Dangling exception with AliasType&lt;br /&gt;
* Bugfix: GUI: Project wizard was broken for empty workspaces&lt;br /&gt;
* Bugfix: GUI: the presence of a file without extension inside the ECG output folder caused an exception in C2MMapper&lt;br /&gt;
* Bugfix: HTG: Crash caused by a too deep HTG&lt;br /&gt;
* Bugfix: Indirection (dereference) as function call argument&lt;br /&gt;
* Bugfix: PaddingPragmaHandler: EMX_PADDING pragma is working across function boundaries&lt;br /&gt;
* Bugfix: Parallel Code Generation: Return assignment check failed for non-duplicated functions&lt;br /&gt;
* Bugfix: Remove unused functions setting was broken&lt;br /&gt;
* Bugfix: Scheduler: Root function forcibly clustered due to multiple returns are handled correctly&lt;br /&gt;
* Bugfix: Scheduler: exception caused by main function with multiple return statements&lt;br /&gt;
* Bugfix: Size deduction from variable initialization was broken for global variables&lt;br /&gt;
* Bugfix: The analysis failed in case a variable was available only as an external declaration. A warning is now issued in that case.&lt;br /&gt;
* Bugfix: incorrect view when switching between input languages&lt;br /&gt;
* DepChainAnalysis: Improved dependency chain analysis to take repeating function calls into account and added delay suffix for each dependency&lt;br /&gt;
* DepChainAnalysis: Supporting analysis of function calls&lt;br /&gt;
* DepChainAnalysis: Supporting control dependency calculation&lt;br /&gt;
* DepChainAnalysis: Supporting functions with return parameters&lt;br /&gt;
* Eclipse: Switched to version 2021.03&lt;br /&gt;
* Flow view: removed unnecessary methods for button state restores&lt;br /&gt;
* Flow: Introduced lambda-based CallNormalizer that reimplements the old functionality to move every call into its own basic block&lt;br /&gt;
* Flow: Output of eMCG is now stored in generated_files&lt;br /&gt;
* Frontend: Added C correctness checks&lt;br /&gt;
* GUI: Added button to generate transformed code&lt;br /&gt;
* GUI: Added indicator of execution frequency to block representation in HTG view&lt;br /&gt;
* GUI: Added tab in properties view for displaying source code&lt;br /&gt;
* GUI: Anti and output dependencies are not rendered if they are between tasks on different cores&lt;br /&gt;
* GUI: Children of blocks are scaled to make sure they fit into the parent&lt;br /&gt;
* GUI: HTG and Scheduler view: Added support for bringing up the context menu using the keyboard&lt;br /&gt;
* GUI: HTG and Scheduler view: Fixed a bug that caused invalid behavior when focus was lost during mouse drag&lt;br /&gt;
* GUI: HTG and Scheduler view: Made selection behavior more consistent with standard windows selection behavior&lt;br /&gt;
* GUI: HTG: Changing ecg_decisions.ini file only if the content changed. That prevents unnecessary eCG runs.&lt;br /&gt;
* GUI: The length of THEN/ELSE blocks is scaled according to their execution frequency&lt;br /&gt;
* GeCoS: Deleted several unused classes&lt;br /&gt;
* ParallelCodeGeneration: Leaving non-parallelized functions unchanged&lt;br /&gt;
* ParallelCodeGeneration: Removed user includes from _emx_main.h&lt;br /&gt;
* Performance estimation: Brought back execution frequency assumptions in case code cannot be analyzed&lt;br /&gt;
* Performance estimation: Changed perf test platform to aurix_tc397_kit&lt;br /&gt;
* Performance estimation: Improved LLVM profiling provider to handle nested control constructs and while loops&lt;br /&gt;
* Settings: Added setting to disable consistency checking&lt;br /&gt;
* Settings: Moved host profiling settings from advanced to general&lt;br /&gt;
* Settings: Supporting &amp;lt;Makefile&amp;gt; placeholder in compile command settings that is replaced by Makefile or Makefile.gen (whatever exists)&lt;br /&gt;
* Supporting &amp;lt;code&amp;gt;#pragma EMX_PADDING &amp;amp;lt;pad&amp;amp;gt;&amp;lt;/code&amp;gt; pragma to increase the size of the last dimension of an array to a multiple of &amp;lt;code&amp;gt;pad&amp;lt;/code&amp;gt;&lt;br /&gt;
* TargetPlatform: Supporting run command specification in software platform (e.g. &amp;lt;code&amp;gt;&amp;amp;lt;Run command=&amp;amp;quot;make sim&amp;amp;quot;/&amp;amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
* TargetPlatform: Supporting specification of compile settings in software platform&lt;br /&gt;
* TargetPlatform: Used software platform description for parallel testing&lt;br /&gt;
* Templates: Added EMXAPI_SyncCores and EMXAPI_GetCore API functions&lt;br /&gt;
* Templates: Converted timing template to use FTL instead of macros&lt;br /&gt;
* Trafo: Added ExtractMain transformation&lt;br /&gt;
* Trafo: Added ObfuscationTrafo to make identifiers obscure&lt;br /&gt;
* Trafo: Added function inline transformation&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2020.12&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2020.12 ==&lt;br /&gt;
&lt;br /&gt;
* Added Apache FreeMarker (.ftl file extension) as additional template language&lt;br /&gt;
* Flow GUI: Parsing the C source code is now a pass&lt;br /&gt;
* Switched to Eclipse-2020-09&lt;br /&gt;
* HTG and properties view: Displaying call overhead&lt;br /&gt;
* Scheduler / Performance estimation: Refactored procedure call overhead calculation/handling&lt;br /&gt;
* GUI: refactored eCG and ePS view to use same base&lt;br /&gt;
* AURIX: Implemented high-performance communication library using statically determined absolute addresses&lt;br /&gt;
* AURIX: Added new combined template for TC297 and TC397&lt;br /&gt;
* Parallel Code Generation: Implement feature to convert functions to static (Parallelization settings, activated by default)&lt;br /&gt;
* Performance estimation: Reworked calculation of call overhead&lt;br /&gt;
* Added post-placement communication optimization by moving send as early and recv as late as possible (Advanced setting, deactived by default)&lt;br /&gt;
* Most important bug fixes:&lt;br /&gt;
** Bugfix: Return type of parallelized functions&lt;br /&gt;
** Bugfix: Pragma-controlled clustering (&amp;lt;code&amp;gt;EMX_TASK_CLUSTER&amp;lt;/code&amp;gt;) of tasks was broken&lt;br /&gt;
** Bugfix: &amp;lt;code&amp;gt;EMX_TASK_ALLOC&amp;lt;/code&amp;gt; pragmas appeared in generated code&lt;br /&gt;
** Bugfix: Linux: Issue with short task names on task termination&lt;br /&gt;
** Bugfix: Preserving static keyword and name of static global variables&lt;br /&gt;
** Bugfix: Fixed support for &amp;lt;code&amp;gt;EMX_INITCODE&amp;lt;/code&amp;gt; pragma&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2020.06&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2020.06 ==&lt;br /&gt;
&lt;br /&gt;
* emmtrix project wizard now can import multiple C files&lt;br /&gt;
* Fixed handling of C projects without main function&lt;br /&gt;
* Introduced new indicators for status of passes&lt;br /&gt;
* Reworked handling of compiler settings&lt;br /&gt;
* Switched to internal pass infrastructure&lt;br /&gt;
* Switched to Eclipse version 2020-03&lt;br /&gt;
* Switched from Jasva 8 to Java 11&lt;br /&gt;
* Bugfix: CDTFrontend crashed for “for (;;) {}” loops [TS]&lt;br /&gt;
* TargetPlatform: Added support for additional function information (funcinfo.xml)&lt;br /&gt;
* Bugfix: Fixed template of MBA5728&lt;br /&gt;
* Added option to disable removal of unsused functions&lt;br /&gt;
* Added option to disable reordering of tasks&lt;br /&gt;
* Added option to parse of C files in eCG output folder&lt;br /&gt;
* Bugfix: Fixed generation of functions with simple declarations&lt;br /&gt;
* Removed enforced option “-B” for sequential tests&lt;br /&gt;
* Added handling of include directories&lt;br /&gt;
* Added button to parse C code in C projects&lt;br /&gt;
* Fixed various bugs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2019.11.07&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2019.11.07 ==&lt;br /&gt;
&lt;br /&gt;
* Fixed definition of custom paths&lt;br /&gt;
* Several bug fixes regarding global variables&lt;br /&gt;
* Several bug fixes regarding parameters of parallelized functions&lt;br /&gt;
* Improved generation of OpenCL code&lt;br /&gt;
* Improved handling of static keyword&lt;br /&gt;
* Fixed bug in analysis of data dependencies&lt;br /&gt;
* Several other minor bug fixes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2019.03.20&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2019.03.20 ==&lt;br /&gt;
&lt;br /&gt;
* Support for array of structs in emmtrix Code Generator&lt;br /&gt;
* Various improvements for data type selection in eCG&lt;br /&gt;
* Fixed bug that might cause parallel execution of passes within ePS&lt;br /&gt;
* Added option to set C macros for C workflow&lt;br /&gt;
* Improved error messages from CDTFrontend&lt;br /&gt;
* Redesigned SSH password and confirmation dialog&lt;br /&gt;
* Fixed various bugs related to C code input&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2018.08.09&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2018.08.09 ==&lt;br /&gt;
&lt;br /&gt;
* Support for Linux. We have tested it under Xubuntu 18.04. Since it is the first version for Linux, additional bugs compared to Windows cannot be excluded.&lt;br /&gt;
* Customization of the target platform: a target folder is automatically generated in the project folder, in which the various files for the target platform are located. Here e.g. timings for library functions can be stored. More details can be found in the ePS User Guide (just click on Parallel Studio Help in the tool).&lt;br /&gt;
* Support for software templates: in the generated subfolder “template” files can be stored that are to be used for building the parallel code. In addition, existing files can be customized for specific projects and templates can be filled in dynamically using Jtwig (http://jtwig.org/). Again, more details can be found in the ePS User-Guide&lt;br /&gt;
* Improved C support: processing of generic C code (e.g. with structs and switch cases) has been improved&lt;br /&gt;
* Static performance analysis has been reworked. Estimated times from previous versions may differ especially in nested structures. With the new method, it is no longer necessary that the input code is executed on the host system. Instead, all values are calculated as far as possible and otherwise populated with default values.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2017.07.04&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2017.07.04 ==&lt;br /&gt;
&lt;br /&gt;
* Restructured settings&lt;br /&gt;
* Removed option of eCG to mimic the output of MATLAB&lt;br /&gt;
* Integrated automatic consistency checker into the flow&lt;br /&gt;
** Model consistency&lt;br /&gt;
** Order consistency&lt;br /&gt;
** Schedule checker (times, containment, order)&lt;br /&gt;
* Unified video interfaces across all platforms&lt;br /&gt;
* Switched to Eclipse Oxygen&lt;br /&gt;
* Removed support for GeCoS scripts&lt;br /&gt;
* Improved sequential testing for C flow&lt;br /&gt;
* Simplified support of parallelization of functions with pointer parameters&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Fixed scheduler crash with function prototypes that omit parameter names&lt;br /&gt;
* Updated instruction performance for Cortex-A7 and Cortex-A15 on ODROID XU4&lt;br /&gt;
* Fixed a bug that could cause the tabular communication cost model to assign transfer costs for same-core transfers&lt;br /&gt;
* Fixed a bug that prevented to correctly derive a tabular communication cost models when multiple commtable files where present for the same target platform (affected heterogeneous architectures only)&lt;br /&gt;
* Analysis results are integrated into a node’s property view&lt;br /&gt;
* Fixed support for emx_task_alloc and emx_task_cluster pragmas: pragmas now take precedence over allocation made in the GUI or via the constraint settings JSON file&lt;br /&gt;
* Various fixes and improvements regarding user decisions&lt;br /&gt;
* Fixed a bug that would cause user decisions that were not changed in the current session to be removed from ecg_decisions.ini upon save of the file&lt;br /&gt;
* corrected calculation of start and finish times of for loops&lt;br /&gt;
* Fixed display of loops that are mapped to multiple cores&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2017.03.23&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2017.03.23 ==&lt;br /&gt;
&lt;br /&gt;
* Added Simulink Model Viewer, which currently supports:&lt;br /&gt;
** display of top level of model&lt;br /&gt;
** descend to sub block by double clicking on block&lt;br /&gt;
** block hover and selection&lt;br /&gt;
** history: Back/Forward/Home to model root&lt;br /&gt;
** zoom: 0,25 - 2.00 using toolbar or mouse wheel&lt;br /&gt;
* Support Simulink models&lt;br /&gt;
* HLS: Added synchronization for FPGA accelerators&lt;br /&gt;
* Fixed receive of pipe communication&lt;br /&gt;
* Enabled basic testing of C code in the C based flow&lt;br /&gt;
* Improved error handling when accessing projects/settings&lt;br /&gt;
* HLS: Added software interface generation for custom IP&lt;br /&gt;
* HLS: Added IP insertion into template Vivado project and bitstream generation&lt;br /&gt;
* HLS: Improved error handling and reporting&lt;br /&gt;
* Added video support for FriendlyARM NanoPi M3&lt;br /&gt;
* UnifyParameters now adds names to all unnamed function parameters&lt;br /&gt;
* Improved upgrade capabilities of project wizard&lt;br /&gt;
** automatic deletion of old epsproject and properties files&lt;br /&gt;
** generation of new epsproject and properties files&lt;br /&gt;
* Added Properties view to eCG and ePS perspective&lt;br /&gt;
* Added pass to place the eCG decision pragmas at parent blocks&lt;br /&gt;
* Improved error handling of update decision job&lt;br /&gt;
* Improved error handling of script execution&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2017.03.08&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2017.03.08 ==&lt;br /&gt;
&lt;br /&gt;
* Added support for Aurix FreeRTOS template and compiler script&lt;br /&gt;
* Added support for individual compiler settings for sequential, parallel and platform tests. These include:&lt;br /&gt;
** pre-/post-build bash script execution&lt;br /&gt;
** customization of CFLAG and LDFLAG&lt;br /&gt;
** customization of environment variables&lt;br /&gt;
* Improved support for handling of external files&lt;br /&gt;
* Improved support of __cplusplus define&lt;br /&gt;
* Added platform description for NanoPI M3 (S5P6818 Quad-Core Cortex-A53 1.4 GHz)&lt;br /&gt;
* Added platform description attribute “active” that determines whether a description is loaded/an available target platform&lt;br /&gt;
* HLS: improved the result checker to ensure compatability with Vivado HLS&lt;br /&gt;
* HLS: improved error checking of synthesis progress&lt;br /&gt;
* HLS: code refactoring and miscellaneous minor fixes&lt;br /&gt;
* Scheduler View: set minimal width of blocks to one pixel to improve placement of data dependencies&lt;br /&gt;
* Scheduler View: removed gaps beetween adjacent blocks to better reflect the blocks’ actual runtime&lt;br /&gt;
* Scheduler View: block selection markers are now drawn after blocks, so that they may not be overlapped by adjacent blocks anymore&lt;br /&gt;
* HTG View: moved information about from right pane to the properties view&lt;br /&gt;
* HTG View: added button to show the property view&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2016.27.01&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2016.27.01 ==&lt;br /&gt;
&lt;br /&gt;
* emmtrix Technologies GmbH was founded&lt;br /&gt;
[[Category:emmtrix Tools]]&lt;/div&gt;</summary>
		<author><name>Oliver.Wolf.EMX</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Mapping_TargetLink_generated_C_code_back_to_Simulink_blocks&amp;diff=1878</id>
		<title>Mapping TargetLink generated C code back to Simulink blocks</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Mapping_TargetLink_generated_C_code_back_to_Simulink_blocks&amp;diff=1878"/>
		<updated>2024-05-15T07:23:50Z</updated>

		<summary type="html">&lt;p&gt;Oliver.Wolf.EMX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;When using TargetLink to generate C code out of Simulink models, the C code contains comments that indicate from which block the C code was generated from.&lt;br /&gt;
&lt;br /&gt;
In the simplest case it looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  /* Sum: MyModel/SubSystem/Sum */&lt;br /&gt;
   res = var1 + var2;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The statement `res = var1 + var2;` is generated from a block `Sum` inside the `SubSystem` of `MyModel`.&lt;br /&gt;
&lt;br /&gt;
TargetLink tries to optimize the code by combining different statements:&lt;br /&gt;
&amp;lt;pre&amp;gt;  /* Sum: MyModel/SubSystem/Sum&lt;br /&gt;
      ## combined ## Sum: MyModel/SubSystem/Sum2 */&lt;br /&gt;
   res = (var1 + var2) - var3;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here, the code of the blocks `Sum` and `Sum1` are combined into a single statement and assigned to the variable `res`. The statement can therefore be mapped partially to each of the Sum blocks.&lt;br /&gt;
&lt;br /&gt;
This can become more complicated with control structures like if blocks:&lt;br /&gt;
&amp;lt;pre&amp;gt;  /* Switch: MyModel/SubSystem/Switch&lt;br /&gt;
     ## combined ## Product: MyModel/SubSystem/product &lt;br /&gt;
     ## combined ## Product: MyModel/SubSystem/product2  */&lt;br /&gt;
  if (enable) {&lt;br /&gt;
    res = var1 * var 2;&lt;br /&gt;
  } else {&lt;br /&gt;
    res = var3 * var4;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here, both product blocks were combined with the if block.&lt;br /&gt;
&lt;br /&gt;
Some parts of the code will be generated to handle array accesses like in this example:&lt;br /&gt;
&amp;lt;pre&amp;gt;  for (Aux_S32 = 0; Aux_S32 &amp;lt; 75; Aux_S32++) {&lt;br /&gt;
    /* Assignment: MyModel/SubSystem/Assignment - output initialization */&lt;br /&gt;
	data[Aux_S32] = 0;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
While the for loop doesn&#039;t have a comment on it&#039;s own, the code belongs to the Assignment block as can be extracted from the comment inside the loop. These kind of loops use an iterator variable with a name containing `aux`, usually have a fixed length and are used to perform operations over indices of an array.&lt;br /&gt;
&lt;br /&gt;
Other loops use iterator variables with names based on existing sub systems:&lt;br /&gt;
&amp;lt;pre&amp;gt;   for (SBS25_For_Iterator_it = 1; SBS25_For_Iterator_it &amp;lt;= 2; SBS25_For_Iterator_it++) {&lt;br /&gt;
     /* Sum: MyModel/SubSystem/for_loop/Sum */&lt;br /&gt;
     res = var1 + var2;&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
`SBS25_For` is the name of a subsystem that is defined like this at the top of the file:&lt;br /&gt;
&amp;lt;pre&amp;gt;*** SBS25     MyModel/SubSystem/for_loop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
It is typically a for loop used in the model that can contain several internal blocks.&lt;/div&gt;</summary>
		<author><name>Oliver.Wolf.EMX</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Mapping_TargetLink_generated_C_code_back_to_Simulink_blocks&amp;diff=1877</id>
		<title>Mapping TargetLink generated C code back to Simulink blocks</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Mapping_TargetLink_generated_C_code_back_to_Simulink_blocks&amp;diff=1877"/>
		<updated>2024-05-08T12:04:45Z</updated>

		<summary type="html">&lt;p&gt;Oliver.Wolf.EMX: Created page with &amp;quot;When using TargetLink to generate C code out of Simulink models, the C code contains comments that indicate from which block the C code was generated from.  In the simplest case it looks like this:  &amp;lt;pre&amp;gt;  /* Sum: MyModel/SubSystem/Sum */    res = var1 + var2; &amp;lt;/pre&amp;gt; The statement `res = var1 + var2;` is generated from a block `Sum` inside the `SubSystem` of `MyModel`.  TargetLink tries to optimize the code by combining different statements: &amp;lt;pre&amp;gt;  /* Sum: MyModel/SubSys...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;When using TargetLink to generate C code out of Simulink models, the C code contains comments that indicate from which block the C code was generated from.&lt;br /&gt;
&lt;br /&gt;
In the simplest case it looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  /* Sum: MyModel/SubSystem/Sum */&lt;br /&gt;
   res = var1 + var2;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The statement `res = var1 + var2;` is generated from a block `Sum` inside the `SubSystem` of `MyModel`.&lt;br /&gt;
&lt;br /&gt;
TargetLink tries to optimize the code by combining different statements:&lt;br /&gt;
&amp;lt;pre&amp;gt;  /* Sum: MyModel/SubSystem/Sum&lt;br /&gt;
      == combined == Sum: MyModel/SubSystem/Sum2 */&lt;br /&gt;
   res = (var1 + var2) - var3;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here, the code of the blocks `Sum` and `Sum1` are combined into a single statement and assigned to the variable `res`. The statement can therefore be mapped partially to each of the Sum blocks.&lt;br /&gt;
&lt;br /&gt;
This can become more complicated with control structures like if blocks:&lt;br /&gt;
&amp;lt;pre&amp;gt;  /* Switch: MyModel/SubSystem/Switch&lt;br /&gt;
     == combined == Product: MyModel/SubSystem/product &lt;br /&gt;
     == combined == Product: MyModel/SubSystem/product2  */&lt;br /&gt;
  if (enable) {&lt;br /&gt;
    res = var1 * var 2;&lt;br /&gt;
  } else {&lt;br /&gt;
    res = var3 * var4;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here, both product blocks were combined with the if block.&lt;br /&gt;
&lt;br /&gt;
Some parts of the code will be generated to handle array accesses like in this example:&lt;br /&gt;
&amp;lt;pre&amp;gt;  for (Aux_S32 = 0; Aux_S32 &amp;lt; 75; Aux_S32++) {&lt;br /&gt;
    /* Assignment: MyModel/SubSystem/Assignment - output initialization */&lt;br /&gt;
	data[Aux_S32] = 0;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
While the for loop doesn&#039;t have a comment on it&#039;s own, the code belongs to the Assignment block as can be extracted from the comment inside the loop. These kind of loops use an iterator variable with a name containing `aux`, usually have a fixed length and are used to perform operations over indices of an array.&lt;br /&gt;
&lt;br /&gt;
Other loops use iterator variables with names based on existing sub systems:&lt;br /&gt;
&amp;lt;pre&amp;gt;   for (SBS25_For_Iterator_it = 1; SBS25_For_Iterator_it &amp;lt;= 2; SBS25_For_Iterator_it++) {&lt;br /&gt;
     /* Sum: MyModel/SubSystem/for_loop/Sum */&lt;br /&gt;
     res = var1 + var2;&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
`SBS25_For` is the name of a subsystem that is defined like this at the top of the file:&lt;br /&gt;
&amp;lt;pre&amp;gt;*** SBS25     MyModel/SubSystem/for_loop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
It is typically a for loop used in the model that can contain several internal blocks.&lt;/div&gt;</summary>
		<author><name>Oliver.Wolf.EMX</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Main_Page&amp;diff=1876</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Main_Page&amp;diff=1876"/>
		<updated>2024-05-08T12:00:57Z</updated>

		<summary type="html">&lt;p&gt;Oliver.Wolf.EMX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
Welcome to the emmtrix Technologies Wiki. As a company with a deep-rooted passion for compilers, we specialize in source-to-source compilers designed to analyze, optimize and transform your code. This Wiki aims to offer detailed, technical background information that complements the tools and resources available on our official website. Here, you&#039;ll find in-depth explanations, usage guidelines, and insights into the engineering behind our specialized software solutions. Whether you&#039;re a developer or a technically-inclined enthusiast, this space is designed to deepen your understanding of what makes our tools essential for your projects.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
=== emmtrix Products ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
* [[emmtrix Studio Release Notes]]&lt;br /&gt;
* emmtrix Parallel Studio&lt;br /&gt;
* [[emmtrix Performance Estimator]]&lt;br /&gt;
* emmtrix Dependency Analyzer&lt;br /&gt;
* [[emmtrix C++ to C Compiler]]&lt;br /&gt;
** [https://online-ecpp2c.emmtrix.com emmtrix C++ to C Compiler Online]&lt;br /&gt;
* [[:Category:emmtrix Studio FAQ|FAQ]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Compiler Background ===&lt;br /&gt;
&lt;br /&gt;
* [[Loop Transformations]]&lt;br /&gt;
*[[Demystifying C++]]&lt;br /&gt;
*[[The alias Attribute|The alias attribute]]&lt;br /&gt;
*[[Clang Diagnostics Overview]]&lt;br /&gt;
*[[:Category:Clang Diagnostics]]&lt;br /&gt;
&lt;br /&gt;
=== Other Topics ===&lt;br /&gt;
* [[Mapping TargetLink generated C code back to Simulink blocks]]&lt;br /&gt;
&lt;br /&gt;
=== FAQ ===&lt;br /&gt;
&lt;br /&gt;
* [[Error Handling]]&lt;/div&gt;</summary>
		<author><name>Oliver.Wolf.EMX</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Main_Page&amp;diff=1871</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Main_Page&amp;diff=1871"/>
		<updated>2024-04-30T06:52:36Z</updated>

		<summary type="html">&lt;p&gt;Oliver.Wolf.EMX: /* emmtrix Products */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
Welcome to the emmtrix Technologies Wiki. As a company with a deep-rooted passion for compilers, we specialize in source-to-source compilers designed to analyze, optimize and transform your code. This Wiki aims to offer detailed, technical background information that complements the tools and resources available on our official website. Here, you&#039;ll find in-depth explanations, usage guidelines, and insights into the engineering behind our specialized software solutions. Whether you&#039;re a developer or a technically-inclined enthusiast, this space is designed to deepen your understanding of what makes our tools essential for your projects.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
=== emmtrix Products ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
* [[emmtrix Studio Release Notes]]&lt;br /&gt;
* emmtrix Parallel Studio&lt;br /&gt;
* [[emmtrix Performance Estimator]]&lt;br /&gt;
* emmtrix Dependency Analyzer&lt;br /&gt;
* [[emmtrix C++ to C Compiler]]&lt;br /&gt;
** [https://online-ecpp2c.emmtrix.com Live C++ to C compiler demo]&lt;br /&gt;
* [[:Category:emmtrix Studio FAQ|FAQ]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Compiler Background ===&lt;br /&gt;
&lt;br /&gt;
* [[Loop Transformations]]&lt;br /&gt;
*[[Demystifying C++]]&lt;br /&gt;
*[[The alias Attribute|The alias attribute]]&lt;br /&gt;
*[[Clang Diagnostics Overview]]&lt;br /&gt;
*[[:Category:Clang Diagnostics]]&lt;br /&gt;
&lt;br /&gt;
=== FAQ ===&lt;br /&gt;
&lt;br /&gt;
* [[Error Handling]]&lt;/div&gt;</summary>
		<author><name>Oliver.Wolf.EMX</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Why_can_the_source_code_not_be_parallelized/optimized%3F&amp;diff=1537</id>
		<title>Why can the source code not be parallelized/optimized?</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Why_can_the_source_code_not_be_parallelized/optimized%3F&amp;diff=1537"/>
		<updated>2024-04-09T08:40:24Z</updated>

		<summary type="html">&lt;p&gt;Oliver.Wolf.EMX: Created page with &amp;quot;Since ePS2022.04, as part of the CodeTransformation functionality, a function has been added to display the reasons why code transformations cannot be applied. This indicates reasons why code cannot be parallelized or optimized.  # Right-click on the block to be analyzed in the [Hierarchical Program View], and if &amp;quot;Not applicable transformations&amp;quot; is displayed, the reason for non-parallelizability can be confirmed. # Select the item of non-parallelization you want to check...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since ePS2022.04, as part of the CodeTransformation functionality, a function has been added to display the reasons why code transformations cannot be applied. This indicates reasons why code cannot be parallelized or optimized.&lt;br /&gt;
&lt;br /&gt;
# Right-click on the block to be analyzed in the [Hierarchical Program View], and if &amp;quot;Not applicable transformations&amp;quot; is displayed, the reason for non-parallelizability can be confirmed.&lt;br /&gt;
# Select the item of non-parallelization you want to check, and the reason of non-parallelization will be displayed as follows.&lt;br /&gt;
&lt;br /&gt;
[[File:Not applicable transformations.png|thumb|List of transformations that cannot be applied to the selected block.]]&lt;br /&gt;
The following trivial reasons are not displayed.&lt;br /&gt;
&lt;br /&gt;
* If the block is not a loop, the loop transformation cannot be applied&lt;br /&gt;
* [[File:Reason for being not applicable.png|thumb|Example for a reason of why a transformation cannot be applied.]]If-loop split is not shown if there is no if in the loop&lt;/div&gt;</summary>
		<author><name>Oliver.Wolf.EMX</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=File:Reason_for_being_not_applicable.png&amp;diff=1536</id>
		<title>File:Reason for being not applicable.png</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=File:Reason_for_being_not_applicable.png&amp;diff=1536"/>
		<updated>2024-04-09T08:39:51Z</updated>

		<summary type="html">&lt;p&gt;Oliver.Wolf.EMX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Example for a reason of why a transformation cannot be applied.&lt;/div&gt;</summary>
		<author><name>Oliver.Wolf.EMX</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=File:Not_applicable_transformations.png&amp;diff=1535</id>
		<title>File:Not applicable transformations.png</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=File:Not_applicable_transformations.png&amp;diff=1535"/>
		<updated>2024-04-09T08:38:28Z</updated>

		<summary type="html">&lt;p&gt;Oliver.Wolf.EMX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Shows transformations that are not applicable for the selected block&lt;/div&gt;</summary>
		<author><name>Oliver.Wolf.EMX</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Notes_on_using_Japanese_character_code_(Shift-JIS)&amp;diff=1533</id>
		<title>Notes on using Japanese character code (Shift-JIS)</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Notes_on_using_Japanese_character_code_(Shift-JIS)&amp;diff=1533"/>
		<updated>2024-04-09T08:30:50Z</updated>

		<summary type="html">&lt;p&gt;Oliver.Wolf.EMX: Created page with &amp;quot;If the source code to be analyzed uses Japanese character code (Shift-JIS) on Windows, the following JAVA exception message may be output when analyzing with ePS.  Error: Exception &amp;#039;&amp;#039;java.lang.StringIndexOutOfBoundsException&amp;#039;&amp;#039;  To avoid this, it is recommended to use UTF-8 character code for the source code to be parsed.  To convert the character encoding of multiple source codes at once, you can use a script such as the one linked below.  Batch conversion of multiple fi...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If the source code to be analyzed uses Japanese character code (Shift-JIS) on Windows, the following JAVA exception message may be output when analyzing with ePS.&lt;br /&gt;
&lt;br /&gt;
Error: Exception &#039;&#039;java.lang.StringIndexOutOfBoundsException&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To avoid this, it is recommended to use UTF-8 character code for the source code to be parsed.&lt;br /&gt;
&lt;br /&gt;
To convert the character encoding of multiple source codes at once, you can use a script such as the one linked below.&lt;br /&gt;
&lt;br /&gt;
Batch conversion of multiple files&#039; character codes with Windows PowerShell: https://atmarkit.itmedia.co.jp/ait/articles/0804/18/news155.html&lt;/div&gt;</summary>
		<author><name>Oliver.Wolf.EMX</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Parallelizing_code_containing_pre-processing_instructions&amp;diff=1531</id>
		<title>Parallelizing code containing pre-processing instructions</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Parallelizing_code_containing_pre-processing_instructions&amp;diff=1531"/>
		<updated>2024-04-09T08:22:14Z</updated>

		<summary type="html">&lt;p&gt;Oliver.Wolf.EMX: Created page with &amp;quot;In the actual code, there are symbol definitions and conditional compilations that are tailored to the target environment and debugging situation. ePS parallelizes the code after preprocessing, so these definitions are removed. Therefore, if necessary, users need to reflect them in the parallelized code. In addition, for practical use, it is possible to define the parallelization of these pre-processing instructions under specific conditions as an ePS project in advance,...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In the actual code, there are symbol definitions and conditional compilations that are tailored to the target environment and debugging situation. ePS parallelizes the code after preprocessing, so these definitions are removed. Therefore, if necessary, users need to reflect them in the parallelized code.&lt;br /&gt;
In addition, for practical use, it is possible to define the parallelization of these pre-processing instructions under specific conditions as an ePS project in advance, and to manage the parallelized code by not including the pre-processing instructions. In this case, add a custom macro in [Preferences]-&amp;gt;[General]-&amp;gt;[Advanced Options] as follows.&lt;br /&gt;
&lt;br /&gt;
[[File:eS custom macro.png|thumb|Settting a custom macro in the ePS settings]]&lt;/div&gt;</summary>
		<author><name>Oliver.Wolf.EMX</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=File:eS_custom_macro.png&amp;diff=1530</id>
		<title>File:eS custom macro.png</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=File:eS_custom_macro.png&amp;diff=1530"/>
		<updated>2024-04-09T08:21:39Z</updated>

		<summary type="html">&lt;p&gt;Oliver.Wolf.EMX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Setting a custom macro in ePS settings&lt;/div&gt;</summary>
		<author><name>Oliver.Wolf.EMX</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=String_Index_Out_of_Bounds_Exception&amp;diff=1528</id>
		<title>String Index Out of Bounds Exception</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=String_Index_Out_of_Bounds_Exception&amp;diff=1528"/>
		<updated>2024-04-09T08:17:54Z</updated>

		<summary type="html">&lt;p&gt;Oliver.Wolf.EMX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;When &amp;quot;Run Mapping &amp;amp; Scheduling&amp;quot; is executed, &#039;&#039;java.lang.SteeringIndexOutOfBoundsException&#039;&#039; may occur.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|java.lang.StringIndexOutOfBoundsException: index 16015,length 15925&lt;br /&gt;
at java.base/java.lang.String.checkIndex(String.java:3278)&lt;br /&gt;
&lt;br /&gt;
at java.base/java.lang.StringUTF16.checkIndex(StringUTF16.java:1470)&lt;br /&gt;
&lt;br /&gt;
at java.base/java.lang.StringUTF16.charAt(StringUTF16.java:1267)&lt;br /&gt;
&lt;br /&gt;
at java.base/java.lang.String.charAt(String.java:695)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Possible Reasons ===&lt;br /&gt;
The source code to be analyzed is treated as Shift-JIS.&lt;br /&gt;
&lt;br /&gt;
=== Solution ===&lt;br /&gt;
Convert from Shift-JIS to UTF-8.&lt;br /&gt;
&lt;br /&gt;
=== Reference ===&lt;br /&gt;
https://atmarkit.itmedia.co.jp/ait/articles/0804/18/news155.html (Japanese)&lt;/div&gt;</summary>
		<author><name>Oliver.Wolf.EMX</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=String_Index_Out_of_Bounds_Exception&amp;diff=1527</id>
		<title>String Index Out of Bounds Exception</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=String_Index_Out_of_Bounds_Exception&amp;diff=1527"/>
		<updated>2024-04-09T08:12:54Z</updated>

		<summary type="html">&lt;p&gt;Oliver.Wolf.EMX: Created page with &amp;quot;When &amp;quot;Run Mapping &amp;amp; Scheduling&amp;quot; is executed, &amp;#039;&amp;#039;java.lang.SteeringIndexOutOfBoundsException&amp;#039;&amp;#039; may occur. {| class=&amp;quot;wikitable&amp;quot; |java.lang.StringIndexOutOfBoundsException: index 16015,length 15925 at java.base/java.lang.String.checkIndex(String.java:3278) at java.base/java.lang.StringUTF16.checkIndex(StringUTF16.java:1470) at java.base/java.lang.StringUTF16.charAt(StringUTF16.java:1267) at java.base/java.lang.String.charAt(String.java:695) |}  === Possible Reasons === The s...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;When &amp;quot;Run Mapping &amp;amp; Scheduling&amp;quot; is executed, &#039;&#039;java.lang.SteeringIndexOutOfBoundsException&#039;&#039; may occur.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|java.lang.StringIndexOutOfBoundsException: index 16015,length 15925&lt;br /&gt;
at java.base/java.lang.String.checkIndex(String.java:3278)&lt;br /&gt;
at java.base/java.lang.StringUTF16.checkIndex(StringUTF16.java:1470)&lt;br /&gt;
at java.base/java.lang.StringUTF16.charAt(StringUTF16.java:1267)&lt;br /&gt;
at java.base/java.lang.String.charAt(String.java:695)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Possible Reasons ===&lt;br /&gt;
The source code to be analyzed is treated as Shift-JIS.&lt;br /&gt;
&lt;br /&gt;
=== Solution ===&lt;br /&gt;
Convert from Shift-JIS to UTF-8.&lt;br /&gt;
&lt;br /&gt;
=== Reference ===&lt;br /&gt;
https://atmarkit.itmedia.co.jp/ait/articles/0804/18/news155.html (Japanese)&lt;/div&gt;</summary>
		<author><name>Oliver.Wolf.EMX</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Main_Page&amp;diff=1525</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Main_Page&amp;diff=1525"/>
		<updated>2024-04-09T08:08:33Z</updated>

		<summary type="html">&lt;p&gt;Oliver.Wolf.EMX: /* FAQ */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
Welcome to the emmtrix Technologies Wiki. As a company with a deep-rooted passion for compilers, we specialize in source-to-source compilers designed to analyze, optimize and transform your code. This Wiki aims to offer detailed, technical background information that complements the tools and resources available on our official website. Here, you&#039;ll find in-depth explanations, usage guidelines, and insights into the engineering behind our specialized software solutions. Whether you&#039;re a developer or a technically-inclined enthusiast, this space is designed to deepen your understanding of what makes our tools essential for your projects.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
=== emmtrix Products ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
* [[emmtrix Studio Release Notes]]&lt;br /&gt;
* emmtrix Parallel Studio&lt;br /&gt;
* [[emmtrix C++ to C Compiler]]&lt;br /&gt;
** [https://online-ecpp2c.emmtrix.com Live C++ to C compiler demo]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Compiler Background ===&lt;br /&gt;
&lt;br /&gt;
* [[Loop Transformations]]&lt;br /&gt;
*[[Demystifying C++]]&lt;br /&gt;
*[[The alias Attribute|The alias attribute]]&lt;br /&gt;
*[[Clang Diagnostics Overview]]&lt;br /&gt;
*[[:Category:Clang Diagnostics]]&lt;br /&gt;
&lt;br /&gt;
=== FAQ ===&lt;br /&gt;
&lt;br /&gt;
* [[Error Handling]]&lt;/div&gt;</summary>
		<author><name>Oliver.Wolf.EMX</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Main_Page&amp;diff=1524</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Main_Page&amp;diff=1524"/>
		<updated>2024-04-09T08:08:24Z</updated>

		<summary type="html">&lt;p&gt;Oliver.Wolf.EMX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
Welcome to the emmtrix Technologies Wiki. As a company with a deep-rooted passion for compilers, we specialize in source-to-source compilers designed to analyze, optimize and transform your code. This Wiki aims to offer detailed, technical background information that complements the tools and resources available on our official website. Here, you&#039;ll find in-depth explanations, usage guidelines, and insights into the engineering behind our specialized software solutions. Whether you&#039;re a developer or a technically-inclined enthusiast, this space is designed to deepen your understanding of what makes our tools essential for your projects.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
=== emmtrix Products ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
* [[emmtrix Studio Release Notes]]&lt;br /&gt;
* emmtrix Parallel Studio&lt;br /&gt;
* [[emmtrix C++ to C Compiler]]&lt;br /&gt;
** [https://online-ecpp2c.emmtrix.com Live C++ to C compiler demo]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Compiler Background ===&lt;br /&gt;
&lt;br /&gt;
* [[Loop Transformations]]&lt;br /&gt;
*[[Demystifying C++]]&lt;br /&gt;
*[[The alias Attribute|The alias attribute]]&lt;br /&gt;
*[[Clang Diagnostics Overview]]&lt;br /&gt;
*[[:Category:Clang Diagnostics]]&lt;br /&gt;
&lt;br /&gt;
=== FAQ ===&lt;br /&gt;
&lt;br /&gt;
* [[Error_Handling]]&lt;/div&gt;</summary>
		<author><name>Oliver.Wolf.EMX</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=emmtrix_Studio_Release_Notes&amp;diff=292</id>
		<title>emmtrix Studio Release Notes</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=emmtrix_Studio_Release_Notes&amp;diff=292"/>
		<updated>2023-11-29T12:28:20Z</updated>

		<summary type="html">&lt;p&gt;Oliver.Wolf.EMX: Created page with &amp;quot;&amp;lt;span id=&amp;quot;emmtrix-studio-release-notes&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; = emmtrix Studio Release Notes =  &amp;lt;span id=&amp;quot;release-2023.11&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; == Release 2023.11 ==  &amp;lt;span id=&amp;quot;new-features&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; ===...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;emmtrix-studio-release-notes&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= emmtrix Studio Release Notes =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2023.11&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2023.11 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;new-features&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== New Features ===&lt;br /&gt;
&lt;br /&gt;
* All emmtrix tools are now gathered in the emmtrix Studio framework with their own perspectives&lt;br /&gt;
** emmtrix Parallel Studio&lt;br /&gt;
** emmtrix Performance Estimator&lt;br /&gt;
*** TargetLink Extension (coming soon)&lt;br /&gt;
*** Simulink Extension (on request)&lt;br /&gt;
** emmtrix Dependency Analyzer&lt;br /&gt;
** emmtrix Code Vectorizer (coming soon)&lt;br /&gt;
** emmtrix Model Code Generator&lt;br /&gt;
** emmtrix Code Generator&lt;br /&gt;
* Windows: A portable Cygwin installation is provided to remove the need to install any additional third-party tools&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;improvements&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
&lt;br /&gt;
* Hierarchical Program View: New indicator icon for tasks with measured timing data&lt;br /&gt;
* Code Transformations: Added setting in GUI to enable/disable code transformation analysis&lt;br /&gt;
* Frontend: Print out missing include files for all processed files for easier project setup and debugging&lt;br /&gt;
* Eclipse: Update to version 2023-06&lt;br /&gt;
* EMX-LLVM: Update to version 230901&lt;br /&gt;
* Added support for alias attribute (e.g. &amp;lt;code&amp;gt;__attribute__((alias(&amp;amp;quot;name&amp;amp;quot;)))&amp;lt;/code&amp;gt;) for functions and variables&lt;br /&gt;
* InstructionSimplifier trafo: Added the following simplifications:&lt;br /&gt;
** &amp;lt;code&amp;gt;const ? a : b&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;0 - x&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;-x&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;x [-&amp;amp;amp;^|/%] x&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;x [+-] (-y)&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;x [-+] y&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;(-x) + y&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;y - x&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;x [*/] (-1)&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;-x&amp;lt;/code&amp;gt;&lt;br /&gt;
* ExplicitCastInserter trafo: Added trafo to insert explicit type casts in expressions where implicit casts are performed&lt;br /&gt;
** &amp;lt;code&amp;gt;if (expr)&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;if ((_Bool)expr)&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;float_var = 10&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;float_var = (float)10&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;ptr_to_long_int + char&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;ptr_to__long_int + (int)char&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;bool_var * unsigned_long_var&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;(unsigned long)bool_var * unsigned_long_var&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;0 ? bool_var : vol_int_var&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;(_Bool)0 ? (volatile int)bool_var : vol_int_var&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;func_call(signed_int_var + long_double_var)&amp;lt;/code&amp;gt; =&amp;amp;gt; &amp;lt;code&amp;gt;func_call((long double)signed_int_var + long_double_var)&amp;lt;/code&amp;gt;&lt;br /&gt;
* Simulink viewer: Improved usability&lt;br /&gt;
** Added sliders for larger models&lt;br /&gt;
** Added labels for simple blocks (e.g. sum, product)&lt;br /&gt;
** Improved contrast of background colors&lt;br /&gt;
** Improved positioning of labels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;bugfixes&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Parallelization: Fixed generation of inconsistent ids from send/recv calls&lt;br /&gt;
* Parallelization: Detect variable length arrays as unsupported and clustered&lt;br /&gt;
* Fixed wrong reordering of declarations for automatic merging of blocks&lt;br /&gt;
* Fixed access analysis of function call arguments including &amp;lt;code&amp;gt;&amp;amp;amp;&amp;lt;/code&amp;gt; and structs&lt;br /&gt;
* Fixed crash caused by struct field passed as pointer to function&lt;br /&gt;
* Project Wizard got stuck during project creation&lt;br /&gt;
* Performance Estimation: Fixed bug with LLVM IR based estimation and multiple source files&lt;br /&gt;
* Bugfix for handling custom paths replacing the system paths&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;emmtrix-parallel-studio-release-notes&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= emmtrix Parallel Studio Release Notes =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2022.10&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2022.10 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;improvements-1&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
&lt;br /&gt;
* Added support for GCC extension [https://gcc.gnu.org/onlinedocs/gcc/Statement-Exprs.html statement expressions]&lt;br /&gt;
* Update EMX-LLVM tools to release 2022.11.18&lt;br /&gt;
* Added separate template files for “Parallel Tests” (independent from sequential test template)&lt;br /&gt;
* Eclipse: Updated to version 2022.06&lt;br /&gt;
* Added setting to specify the path for EMX-LLVM tools&lt;br /&gt;
* Added new transformation to convert &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; loops to &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; loops&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;bugfixes-1&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Avoid false duplication of functions&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2022.07&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2022.07 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;new-features-1&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== New Features ===&lt;br /&gt;
&lt;br /&gt;
* Added support for assembly-based performance estimation&lt;br /&gt;
** Added option to enable assembly-based performance estimation in advanced settings&lt;br /&gt;
** Supporting Tricore using HighTec GCC compiler (tricore-gcc)&lt;br /&gt;
** Supporting ARM Cortex-A7 using [https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads ARM GNU Toolchain]&lt;br /&gt;
** Updated target defintions with assembler performance estimation&lt;br /&gt;
* Added new disassembly view with traceability between HTG and C source code&lt;br /&gt;
** Generating &amp;lt;code&amp;gt;assembly.asmmodel&amp;lt;/code&amp;gt; file storing disassembly and mapping information&lt;br /&gt;
** Disassembly view: Added disassembly view (AsmEditor) for &amp;lt;code&amp;gt;assembly.asmmodel&amp;lt;/code&amp;gt; files that displays disassembly information&lt;br /&gt;
** Disassembly view: Option to display timing information from assembly-based performance information&lt;br /&gt;
** Disassembly view: Option to reorder basic blocks to better match the order within the source file&lt;br /&gt;
** Disassembly view: Automatically highlighting the C source line in a corresponding editor if the caret is changed to an assembly instruction&lt;br /&gt;
** Disassembly view: Automatically highlighting the assembly instruction in a corresponding disassembly view if the caret is changed to a C expression&lt;br /&gt;
** HTG view: Added new &amp;lt;code&amp;gt;ASM&amp;lt;/code&amp;gt; button to open disassembly view&lt;br /&gt;
** HTG view: Automatically highlighting the assembly instructions within disassembly view if a HTG node is selected&lt;br /&gt;
** Currently supports Infineon AURIX and ARM Cortex-A7&lt;br /&gt;
* Performance estimation workflow&lt;br /&gt;
** Added new GUI elements to handle performance estimation to workflow&lt;br /&gt;
** Generation of HTML report with information on function level&lt;br /&gt;
** Added support for loading timing data from simulation and hardware&lt;br /&gt;
* Added support for LLVM-IR-based performance estimation&lt;br /&gt;
** Independent from target compiler&lt;br /&gt;
** Example target specification available for Infineon AURIX TC3xx&lt;br /&gt;
* Added new code sinking transformation&lt;br /&gt;
** The transformation moves assign statements to positions where it is executed less frequently&lt;br /&gt;
** A threshold value is given that specifies the minimum reduction factor for the execution count (threshold)&lt;br /&gt;
* Added new loop-invariant code motion transformation&lt;br /&gt;
** The transformation moves only statements by default&lt;br /&gt;
** It optionally moves sub-expressions by creating temporary variables (sub_exprs=1)&lt;br /&gt;
** It optionally reorders invariant expressions by applying the commutative and associative laws (reorder=1)&lt;br /&gt;
** It includes an built-in test about the number of moved expressions (expected_moved_exprs)&lt;br /&gt;
* Added checksum based upgrade mechanism for &amp;lt;code&amp;gt;target&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;template&amp;lt;/code&amp;gt; folders&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;improvements-2&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
&lt;br /&gt;
* Template processing: Added variables &amp;lt;code&amp;gt;C_FILES_PROCESSED&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;C_FILES_ADDITIONAL&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;C_FILES_TOCOMPILE&amp;lt;/code&amp;gt;&lt;br /&gt;
* CPP2C: Supporting projects with multiple *.cpp files&lt;br /&gt;
* Active project management&lt;br /&gt;
** GUI: Project list in workflow view now has an empty entry to deselect any project&lt;br /&gt;
** Bugfix: The active project is now stored explicitly in the workspace to avoid any ambiguity&lt;br /&gt;
** Bugfix: Fixed detection of changes to projects (rename, import, copy, etc.)&lt;br /&gt;
* Improved WhileToFor transformation with better detection of step and init code&lt;br /&gt;
* Improved loop unrolling transformation by adding support for declarations, unknown number of exections, returns and breaks&lt;br /&gt;
* C library: Supporting &amp;lt;code&amp;gt;va_start&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;va_end&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;va_arg&amp;lt;/code&amp;gt; of stdarg.h&lt;br /&gt;
* Improved trip count calculation of for loops by using local constant propagation&lt;br /&gt;
* Improved check for unsupported C constructs that will be automatically clustered&lt;br /&gt;
** Switch case constructs (that are not converted to if)&lt;br /&gt;
** Double pointers: e.g. &amp;lt;code&amp;gt;int **a&amp;lt;/code&amp;gt;&lt;br /&gt;
** Do while loops&lt;br /&gt;
** Goto statements&lt;br /&gt;
** Functions with multiple return paths (no return or one return at the end is allowed)&lt;br /&gt;
** Loops (for, while, do while) with continue&lt;br /&gt;
** Loops (for, while, do while) with break&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;bugfixes-2&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Parallel code generation: Header file &amp;lt;code&amp;gt;_emx_main.h&amp;lt;/code&amp;gt; was included multiple times&lt;br /&gt;
* Control-To-Goto: Fixed conversion of short-circuit operations within variable initialization&lt;br /&gt;
* Bugfix: Constant propagation with pointers&lt;br /&gt;
* Fixed issues with generation of temporary variables&lt;br /&gt;
* Fixed some GUI related bugs (avoid unnecessary exceptions)&lt;br /&gt;
* Fixed some bugs in the parallel performance estimation (wrong calculation of loops)&lt;br /&gt;
* Fixed Linux related bugs (paths, executable flags)&lt;br /&gt;
* Fixed Run on MATLAB and compare&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;other&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Other ===&lt;br /&gt;
&lt;br /&gt;
* Removed TWIG template support&lt;br /&gt;
* ePS is now using Java 17, required files for Windows and Linux are integrated&lt;br /&gt;
* Release is based on Eclipse 2022.03&lt;br /&gt;
* Update eCG to release from 29/04/22&lt;br /&gt;
* Update CPP2C to release from 29/07/22&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2022.04&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2022.04 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;new-features-2&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== New Features ===&lt;br /&gt;
&lt;br /&gt;
* Transformations:&lt;br /&gt;
** Introduced VarSplit transformation for splitting an array variable into multiple variables&lt;br /&gt;
** Introduced FuncPtrResolve transformation for replacing indirect function calls by if-then-else constructs&lt;br /&gt;
** Introduced &amp;lt;code&amp;gt;InstructionSimplifier&amp;lt;/code&amp;gt; transformation to simplify expressions by applying neutral and zero element optimizations&lt;br /&gt;
** Transformations can now track the reason the analysis failed&lt;br /&gt;
* Standard header files now available in template folder (&amp;lt;code&amp;gt;standard_includes&amp;lt;/code&amp;gt;) and can be edited by the user&lt;br /&gt;
* Introduced new file management (epsfiles.txt)&lt;br /&gt;
** Input files are now defined in the file &amp;lt;code&amp;gt;sources/epsfiles.txt&amp;lt;/code&amp;gt; which follows the syntax of [https://git-scm.com/docs/gitattributes .gitattributes] files&lt;br /&gt;
** It supports the following attributes&lt;br /&gt;
*** &amp;lt;code&amp;gt;action=[none|process|compile|copy]&amp;lt;/code&amp;gt;: Defines what ePS is doing with the file&lt;br /&gt;
**** &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt; or no attribute is ignoring the file&lt;br /&gt;
**** &amp;lt;code&amp;gt;compile&amp;lt;/code&amp;gt; is copying and compiling the file to output folder&lt;br /&gt;
**** &amp;lt;code&amp;gt;copy&amp;lt;/code&amp;gt; is only copying the file to output folder&lt;br /&gt;
**** &amp;lt;code&amp;gt;process&amp;lt;/code&amp;gt; is processing (reading and writing) the C source file by ePS&lt;br /&gt;
*** &amp;lt;code&amp;gt;template=[twig|ftl]&amp;lt;/code&amp;gt;: The file is processed by the specified template engine. A corresponding file extension is removed.&lt;br /&gt;
*** &amp;lt;code&amp;gt;c_preprocess&amp;lt;/code&amp;gt;: The source file is preprocessed through a C/C++ preprocessor&lt;br /&gt;
*** &amp;lt;code&amp;gt;codegen=[eCG|eCPP2C]&amp;lt;/code&amp;gt;: Code generation is applied to the source file&lt;br /&gt;
**** &amp;lt;code&amp;gt;eCG&amp;lt;/code&amp;gt; runs emmtrix Code Generator on the MATLAB or Scilab file&lt;br /&gt;
**** &amp;lt;code&amp;gt;eCPP2C&amp;lt;/code&amp;gt; runs emmtrix C++ to C Compiler on C++ source files&lt;br /&gt;
** Source file status is shown in Project Explorer as specified in epsfiles.txt&lt;br /&gt;
** Default epsfiles.txt file can be created via context menu in Project Explorer or in the Project Settings dialog&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;improvements-3&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
&lt;br /&gt;
* Target platforms:&lt;br /&gt;
** Added Tasking template for the Aurix TC397 platform&lt;br /&gt;
** Added hardware model of SPC58ECxx (PowerPC e200z4 dual-core)&lt;br /&gt;
* Vectorization transformation (still experimental)&lt;br /&gt;
** Improved support for array subscripts with linear memory access pattern&lt;br /&gt;
** Improved source code appearance after vectorization&lt;br /&gt;
** Supporting array subscripts with indexed memory access pattern&lt;br /&gt;
** Supporting vectorization of loops containing unvectorizable expressions&lt;br /&gt;
** Supporting vectorization of simple sub-functions&lt;br /&gt;
** Supporting &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; loops with non-constant iteration count&lt;br /&gt;
** Supporting memory accesses with indirection operator (e.g. &amp;lt;code&amp;gt;*(p+1) = ...&amp;lt;/code&amp;gt;)&lt;br /&gt;
** Supporting &amp;lt;code&amp;gt;?:&amp;lt;/code&amp;gt; operators, generic for loop initialization and non-vectorized local variables&lt;br /&gt;
* Performance estimation: Consider duration of variable initialization and ignoring constant expressions&lt;br /&gt;
* GUI: Changed format of exceptions dialog&lt;br /&gt;
* C library: Added header &amp;lt;code&amp;gt;arpa/inet.h&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;sys/socket.h&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;netinet/in.h&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;netdb.h&amp;lt;/code&amp;gt;&lt;br /&gt;
* Improved support for wide character string and char literals&lt;br /&gt;
* Supporting array size calculation of designated array initializers&lt;br /&gt;
* Performance estimation: Set default to 1 cycle per instruction when no data is available&lt;br /&gt;
* EpsProject: Include directories are relativized if they are part of the project&lt;br /&gt;
* CodeGeneration: Replicate input folder structure&lt;br /&gt;
* Added node context menu to Hierarchical Program View to export task dependencies in DOT or CSV format&lt;br /&gt;
* LLVM tools: Update to release from 27/04/2022&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;bugfixes-3&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Crash caused by &amp;lt;code&amp;gt;if (a = func() == 3)&amp;lt;/code&amp;gt;&lt;br /&gt;
* Frontend: Crash in type compatibility check when variable was redeclared after struct was redeclared&lt;br /&gt;
* Parallel code generation: Missing function prototypes of parallelized functions&lt;br /&gt;
* ParallelCodeGeneration: ‘sources’ folder is now correctly added to the includes&lt;br /&gt;
* Fixed OS-dependent path name that could cause one C file being parsed multiple times&lt;br /&gt;
* Frontend: Crash caused by two nested C99 for loops without curly brackets, e.g. &amp;lt;code&amp;gt;for (int i=0; i&amp;amp;lt;10; ++i) for (int i2; i2&amp;amp;lt;10; ++i2) ...&amp;lt;/code&amp;gt;&lt;br /&gt;
* Function duplication did not consider static variables&lt;br /&gt;
* Type deduction of function pointers&lt;br /&gt;
* Frontend: Improved error handling of false C code (e.g. case outside switch)&lt;br /&gt;
* Fixed executable flags for Linux&lt;br /&gt;
* Type deduction failed for address operator on &amp;lt;code&amp;gt;_Bool&amp;lt;/code&amp;gt; variable&lt;br /&gt;
* Performance estimation: Wrong warning: Assuming default number of iterations&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2022.01.a&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2022.01.a ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;improvements-4&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
&lt;br /&gt;
* Parallelization: Automatic scheduler avoids any schedules that causes slowdowns&lt;br /&gt;
* Parallelization: Functions with unsupported use of pointers are automatically clustered and will not be falsely parallelized&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;bugfixes-4&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Fixed errors with libraries math.h and errno.h&lt;br /&gt;
* Fixed bugs related to incompatible types&lt;br /&gt;
* Compilation error caused by conflict between user-defined macros (e.g. &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;) and winnt.h&lt;br /&gt;
* Fixed prompt for workspace selection at startup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2022.01&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2022.01 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;new-features-3&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== New Features ===&lt;br /&gt;
&lt;br /&gt;
* Added initial vectorization support for Aurix TC4xx PPU&lt;br /&gt;
** VectorizeTrafo: Added trafo for vectorizing a simple &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; loop into platform-independent vector code (alpha)&lt;br /&gt;
*** No check is performed that the vectorized code will be correct&lt;br /&gt;
*** Unsupported constructs are not detected beforehand. Instead, an exception is thrown during application&lt;br /&gt;
*** Supporting only simple array variable constructs of &amp;lt;code&amp;gt;a[i]&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; is the &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; iterator variable) or &amp;lt;code&amp;gt;a[j1]...[j2][i]&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;j1 ... j2&amp;lt;/code&amp;gt; must be loop invariant)&lt;br /&gt;
*** Supporting vectorization of reduction variables, e.g. &amp;lt;code&amp;gt;for (i=0; i&amp;amp;lt;N; ++i) i += a[i];&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Supporting predicated vector instructions&lt;br /&gt;
*** Supporting optional padding of array variables to eliminate predicated vector instructions&lt;br /&gt;
** TargetPlatform: &amp;lt;code&amp;gt;host_win32&amp;lt;/code&amp;gt; supports code generation of platform-independent vector code by using a template-based library for vector types and functions&lt;br /&gt;
** TargetPlatform: Added two “Aurix TC4xx Parallel Processing Unit” platforms with Tasking and Synopsys PPU compiler support&lt;br /&gt;
*** Supporting simulator code generation with cycle-approximate performance measurement&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;improvements-5&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
&lt;br /&gt;
* Supporting &amp;lt;code&amp;gt;long double&amp;lt;/code&amp;gt; in our libc math.h&lt;br /&gt;
* Added ConstPropagationTrafo transformation for applying constant propagation to a function&lt;br /&gt;
* Improved replacement of inc/dec (e.g. &amp;lt;code&amp;gt;++&amp;lt;/code&amp;gt;) and compound assign (e.g. &amp;lt;code&amp;gt;+=&amp;lt;/code&amp;gt;) operators&lt;br /&gt;
** Supports correct handling of volatile variables&lt;br /&gt;
** Resolution within array/struct initializers was not working (e.g. &amp;lt;code&amp;gt;int i1[] = { x++ };&amp;lt;/code&amp;gt;)&lt;br /&gt;
** Resolution within variable initialization could switch the order of statements (e.g. &amp;lt;code&amp;gt;int i1 = x++; int i2 = x;&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Target platforms: Added &amp;lt;code&amp;gt;char16_t&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;char32_t&amp;lt;/code&amp;gt; types and supporting macros&lt;br /&gt;
* Improved support for running code on target platforms&lt;br /&gt;
* Documentation: Added section about CLI&lt;br /&gt;
* Documentation: Set Cygwin 64 bit as only supported version&lt;br /&gt;
* Added support for selecting the target compiler affecting the macros and types used to parse the source code&lt;br /&gt;
** Settings: Added compiler combo box into general settings&lt;br /&gt;
** TargetPlatform: &amp;lt;code&amp;gt;microarchitecture.xml&amp;lt;/code&amp;gt;: Added &amp;lt;code&amp;gt;Compilers&amp;lt;/code&amp;gt; section&lt;br /&gt;
* Switched to Eclipse 2021-09&lt;br /&gt;
* Improved switch-to-if converter&lt;br /&gt;
* Added initial support for designated array range initializers (&amp;lt;code&amp;gt;[first ... last] = value&amp;lt;/code&amp;gt;) (see [https://gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html designated inits])&lt;br /&gt;
* Added optional function de-duplication pass (can be activated in advanced settings)&lt;br /&gt;
* Preserving all function, variable and type declarations and their original order within C file&lt;br /&gt;
* Flow: Improved monitor output (warning/error display) and added subtasks&lt;br /&gt;
* Multiple performance improvements for large projects (&#039;&#039;e.g. performance estimation works well with 1 mio lines of code&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;bugfixes-5&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Invalid function arguments after parallelization&lt;br /&gt;
* Parallelized function returned result on wrong core&lt;br /&gt;
* Duplication of &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; loops with declarations generated incorrect code&lt;br /&gt;
* Communication was not working with pointer variables&lt;br /&gt;
* Communication was placed after return statements&lt;br /&gt;
* Multiple transfers of same variable with same ID&lt;br /&gt;
* Fixed handling of large call trees&lt;br /&gt;
* Crash in SSATraversal caused by recursive functions with pointer parameters&lt;br /&gt;
* Memory leaks&lt;br /&gt;
* Avoiding “Too many arguments to function” warning for implicit functions&lt;br /&gt;
* Array size calculation of &amp;lt;code&amp;gt;array[ENUMERATOR]&amp;lt;/code&amp;gt; is now working&lt;br /&gt;
* COutput: -(-1) was output as –1&lt;br /&gt;
* Fixed analysis of for loops where the loop variable is modified before the for loop&lt;br /&gt;
* Pragmas outside of functions are preserved in the correct order&lt;br /&gt;
* Fixed output of forward-declared structs, unions and enums&lt;br /&gt;
* Merging two composite blocks could lead to two variables using the same name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2021.09.a&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2021.09.a ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;new-features-4&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== New Features ===&lt;br /&gt;
&lt;br /&gt;
* Added pass to use a preprocessor (e.g. gcc or clang) on C code before it is used in ePS&lt;br /&gt;
* Integrated AUTOSAR file parsing based on the Artop library&lt;br /&gt;
* Added calculation of confidence level for performance estimation&lt;br /&gt;
* Added support for a configuration file to add pragmas without changing the source code&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;improvements-6&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
&lt;br /&gt;
* Added basic support for:&lt;br /&gt;
** function pointers&lt;br /&gt;
** recursive functions&lt;br /&gt;
** designated array initializers&lt;br /&gt;
** designated struct/union initializers&lt;br /&gt;
** compound assignment operators&lt;br /&gt;
** C11 style anonymous enum/struct/union definitions embedded in other type definitions&lt;br /&gt;
** incomplete data types (according to C standard)&lt;br /&gt;
* Separated settings for sequential and parallel platform tests&lt;br /&gt;
* Added new functionalities to CLI:&lt;br /&gt;
** Configuration of projects&lt;br /&gt;
** Control over passes to run&lt;br /&gt;
* Improved traceability of input to output source code lines&lt;br /&gt;
* Added generation of log files for each pass that capture all output from the console&lt;br /&gt;
* Project files are now stored compressed to save space&lt;br /&gt;
* Reworked the status messages of the flow&lt;br /&gt;
* Improved profile-guided execution counts of for loops&lt;br /&gt;
* Added more information to properties view of HTG representation&lt;br /&gt;
* Switched file structure for parallelization constraints to reduce the number of required entries&lt;br /&gt;
* Added Infineon TC387 platform&lt;br /&gt;
* Made the analysis for transformations more robust&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;bugfixes-6&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
&lt;br /&gt;
* Crash for arguments with pointer case (e.g. (void*) arg)&lt;br /&gt;
* Crash with function calls used in variable initialization&lt;br /&gt;
* Assertion caused by repeated function declarations in one translation unit&lt;br /&gt;
* Various conflicting types errors&lt;br /&gt;
* Wrong placement of global variables&lt;br /&gt;
* Typedef redefinition was always reported as error&lt;br /&gt;
* Function declaration and implementation of different but compatible function types caused errors&lt;br /&gt;
* Fixed several issues with files not being closed correctly in the GUI&lt;br /&gt;
* Fixed error in size calculation in recursive structs&lt;br /&gt;
* Propagation of absolute number of executions over function calls&lt;br /&gt;
* Errors in duplication of function calls&lt;br /&gt;
* Detection of recursive function calls in unused functions&lt;br /&gt;
* Type deduction was wrong in many cases (e.g. &amp;lt;code&amp;gt;enum&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;++&amp;lt;/code&amp;gt;)&lt;br /&gt;
* void-cast of function call caused incorrect code&lt;br /&gt;
* Removed automic inclusion of System32 folder in path on Windows&lt;br /&gt;
* Fixed bug with PATH variable on Windows&lt;br /&gt;
* Fixed path separation on Linux&lt;br /&gt;
* Wrong messages about assignments to constant variables&lt;br /&gt;
* Fixed layout of advanced settings page&lt;br /&gt;
* Renamed _emx_main.c to _emx_t_main.c to avoid conflicts with sources named main.c&lt;br /&gt;
* Functions called via function pointers/references were considered unused&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2021.06&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2021.06 ==&lt;br /&gt;
&lt;br /&gt;
* Added line information for warning “Variable is defined externally”&lt;br /&gt;
* Code generation: Added supported for generating inline assembler&lt;br /&gt;
* ConsistencyChecker: Introduced different levels of strictness and added corresponding project setting&lt;br /&gt;
* DepChainAnalysis: Added reason to warning if a function could not be analyzed&lt;br /&gt;
* Frontend / Model / Code generation: Supporting switch case expressions to contain generic instructions (e.g. enumerators) instead of just integers&lt;br /&gt;
* Frontend: Added support for inline assembler&lt;br /&gt;
* Frontend: Handling of null statements improved (especially if labeled or within empty body blocks) HTG: Adding task clusters for goto instructions&lt;br /&gt;
* Hardware support: Added the optimized ringbuffer communication models ringbuf_fixed_fork (the new default) and ringbuf_fixed_thread based on the existing Aurix optimized ringbuffer implementation&lt;br /&gt;
* Hardware support: Implemented new communication API:EMXAPI prefix replaced with EMX, Added functions to send and receive float and double types, Values to be sent/received by scalar communication functions are now passed by value and as the return value, Argument order changed so that the first four arguments of all functions are: src, dst, id and index, followed by value/buffer arguments when present&lt;br /&gt;
* Hardware support: Renamed communication model names ringbuf-&amp;amp;gt;ringbuf_fork and singlecopy_sharedmem-&amp;amp;gt;ringbuf_thread&lt;br /&gt;
* Product: Updated provided JRE on linux to 11.0.11&lt;br /&gt;
* Wizard: Added communication test example project&lt;br /&gt;
* Bugfix: Custom paths were not considered for executing external tools&lt;br /&gt;
* Bugfix: DepChainAnalysis: Fixed crash if a function was not duplicated&lt;br /&gt;
* Bugfix: ExtractMain transformation: Converting function to main was not working if the calling function was not main&lt;br /&gt;
* Bugfix: Fixed handling of the size of alias types&lt;br /&gt;
* Bugfix: Fixed some problems related to BasicBlock file locations&lt;br /&gt;
* Bugfix: Frontend / Code Generation: Handling of case blocks with { } was not working&lt;br /&gt;
* Bugfix: Frontend: Correct placement of pragmas in front of labels&lt;br /&gt;
* Bugfix: GUI: Re-initialize compiler defaults when project settings is changed&lt;br /&gt;
* Bugfix: SSA: Crash in SSATraversal caused by incorrect usedef detection of parameters&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2021.03a&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2021.03a ==&lt;br /&gt;
&lt;br /&gt;
* Code generation: Template processing is deleting template files directly after processing&lt;br /&gt;
* DepChainAnalysis: Added XML output (depchainanalysis.xml)&lt;br /&gt;
* DepChainAnalysis: Bugfix: Function calls with unused return value were broken&lt;br /&gt;
* Flow: Introduced source template processing of &#039;&#039;.ftl and &#039;&#039;.twig files. An option was added in general settings to enable that feature.&lt;br /&gt;
* GUI: Source template GUI option now also added for non-C inputs and defaults to disabled&lt;br /&gt;
* Performance estimation: Refactored BBDurationProvider and BBDurationEstimator&lt;br /&gt;
* Performance estimation: Refactored procedure call overhead&lt;br /&gt;
* Settings: Improved handling of false root procedures&lt;br /&gt;
* Supporting EMX_EXTRACTMAIN pragma to trigger extract main transformation. The extract main trafo uses the pragma to apply the transformation after all other transformations.&lt;br /&gt;
* Template processing: Introduced generic project-based variables&lt;br /&gt;
* Trafo: Added loop interchange transformation&lt;br /&gt;
* Bugfix: C Frontend: Pragma placement&lt;br /&gt;
* Bugfix: Crash in case of unary operator within while condition&lt;br /&gt;
* Bugfix: Exception caused by loop analyzer in case of reverse “for” loop&lt;br /&gt;
* Bugfix: Fixed several GUI and flow errors&lt;br /&gt;
* Bugfix: ParallelPostCodeGen: Fixed check for empty source folders list&lt;br /&gt;
* Bugfix: Parameters no longer removed from function without body&lt;br /&gt;
* Bugfix: Project wizard stored wrong String in .properties for InputLanguage&lt;br /&gt;
* Bugfix: TargetPlatform: GUI was broken in case a software platform was missing&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2021.03&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2021.03 ==&lt;br /&gt;
&lt;br /&gt;
* Added GUI mechanism to insert timing instructions around functions and at blocks marked with pragmas&lt;br /&gt;
* Bugfix: CDT Frontend: Variable declaration in the middle could produce wrong code&lt;br /&gt;
* Bugfix: Dangling exception with AliasType&lt;br /&gt;
* Bugfix: GUI: Project wizard was broken for empty workspaces&lt;br /&gt;
* Bugfix: GUI: the presence of a file without extension inside the ECG output folder caused an exception in C2MMapper&lt;br /&gt;
* Bugfix: HTG: Crash caused by a too deep HTG&lt;br /&gt;
* Bugfix: Indirection (dereference) as function call argument&lt;br /&gt;
* Bugfix: PaddingPragmaHandler: EMX_PADDING pragma is working across function boundaries&lt;br /&gt;
* Bugfix: Parallel Code Generation: Return assignment check failed for non-duplicated functions&lt;br /&gt;
* Bugfix: Remove unused functions setting was broken&lt;br /&gt;
* Bugfix: Scheduler: Root function forcibly clustered due to multiple returns are handled correctly&lt;br /&gt;
* Bugfix: Scheduler: exception caused by main function with multiple return statements&lt;br /&gt;
* Bugfix: Size deduction from variable initialization was broken for global variables&lt;br /&gt;
* Bugfix: The analysis failed in case a variable was available only as an external declaration. A warning is now issued in that case.&lt;br /&gt;
* Bugfix: incorrect view when switching between input languages&lt;br /&gt;
* DepChainAnalysis: Improved dependency chain analysis to take repeating function calls into account and added delay suffix for each dependency&lt;br /&gt;
* DepChainAnalysis: Supporting analysis of function calls&lt;br /&gt;
* DepChainAnalysis: Supporting control dependency calculation&lt;br /&gt;
* DepChainAnalysis: Supporting functions with return parameters&lt;br /&gt;
* Eclipse: Switched to version 2021.03&lt;br /&gt;
* Flow view: removed unnecessary methods for button state restores&lt;br /&gt;
* Flow: Introduced lambda-based CallNormalizer that reimplements the old functionality to move every call into its own basic block&lt;br /&gt;
* Flow: Output of eMCG is now stored in generated_files&lt;br /&gt;
* Frontend: Added C correctness checks&lt;br /&gt;
* GUI: Added button to generate transformed code&lt;br /&gt;
* GUI: Added indicator of execution frequency to block representation in HTG view&lt;br /&gt;
* GUI: Added tab in properties view for displaying source code&lt;br /&gt;
* GUI: Anti and output dependencies are not rendered if they are between tasks on different cores&lt;br /&gt;
* GUI: Children of blocks are scaled to make sure they fit into the parent&lt;br /&gt;
* GUI: HTG and Scheduler view: Added support for bringing up the context menu using the keyboard&lt;br /&gt;
* GUI: HTG and Scheduler view: Fixed a bug that caused invalid behavior when focus was lost during mouse drag&lt;br /&gt;
* GUI: HTG and Scheduler view: Made selection behavior more consistent with standard windows selection behavior&lt;br /&gt;
* GUI: HTG: Changing ecg_decisions.ini file only if the content changed. That prevents unnecessary eCG runs.&lt;br /&gt;
* GUI: The length of THEN/ELSE blocks is scaled according to their execution frequency&lt;br /&gt;
* GeCoS: Deleted several unused classes&lt;br /&gt;
* ParallelCodeGeneration: Leaving non-parallelized functions unchanged&lt;br /&gt;
* ParallelCodeGeneration: Removed user includes from _emx_main.h&lt;br /&gt;
* Performance estimation: Brought back execution frequency assumptions in case code cannot be analyzed&lt;br /&gt;
* Performance estimation: Changed perf test platform to aurix_tc397_kit&lt;br /&gt;
* Performance estimation: Improved LLVM profiling provider to handle nested control constructs and while loops&lt;br /&gt;
* Settings: Added setting to disable consistency checking&lt;br /&gt;
* Settings: Moved host profiling settings from advanced to general&lt;br /&gt;
* Settings: Supporting &amp;lt;Makefile&amp;gt; placeholder in compile command settings that is replaced by Makefile or Makefile.gen (whatever exists)&lt;br /&gt;
* Supporting &amp;lt;code&amp;gt;#pragma EMX_PADDING &amp;amp;lt;pad&amp;amp;gt;&amp;lt;/code&amp;gt; pragma to increase the size of the last dimension of an array to a multiple of &amp;lt;code&amp;gt;pad&amp;lt;/code&amp;gt;&lt;br /&gt;
* TargetPlatform: Supporting run command specification in software platform (e.g. &amp;lt;code&amp;gt;&amp;amp;lt;Run command=&amp;amp;quot;make sim&amp;amp;quot;/&amp;amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
* TargetPlatform: Supporting specification of compile settings in software platform&lt;br /&gt;
* TargetPlatform: Used software platform description for parallel testing&lt;br /&gt;
* Templates: Added EMXAPI_SyncCores and EMXAPI_GetCore API functions&lt;br /&gt;
* Templates: Converted timing template to use FTL instead of macros&lt;br /&gt;
* Trafo: Added ExtractMain transformation&lt;br /&gt;
* Trafo: Added ObfuscationTrafo to make identifiers obscure&lt;br /&gt;
* Trafo: Added function inline transformation&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2020.12&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2020.12 ==&lt;br /&gt;
&lt;br /&gt;
* Added Apache FreeMarker (.ftl file extension) as additional template language&lt;br /&gt;
* Flow GUI: Parsing the C source code is now a pass&lt;br /&gt;
* Switched to Eclipse-2020-09&lt;br /&gt;
* HTG and properties view: Displaying call overhead&lt;br /&gt;
* Scheduler / Performance estimation: Refactored procedure call overhead calculation/handling&lt;br /&gt;
* GUI: refactored eCG and ePS view to use same base&lt;br /&gt;
* AURIX: Implemented high-performance communication library using statically determined absolute addresses&lt;br /&gt;
* AURIX: Added new combined template for TC297 and TC397&lt;br /&gt;
* Parallel Code Generation: Implement feature to convert functions to static (Parallelization settings, activated by default)&lt;br /&gt;
* Performance estimation: Reworked calculation of call overhead&lt;br /&gt;
* Added post-placement communication optimization by moving send as early and recv as late as possible (Advanced setting, deactived by default)&lt;br /&gt;
* Most important bug fixes:&lt;br /&gt;
** Bugfix: Return type of parallelized functions&lt;br /&gt;
** Bugfix: Pragma-controlled clustering (&amp;lt;code&amp;gt;EMX_TASK_CLUSTER&amp;lt;/code&amp;gt;) of tasks was broken&lt;br /&gt;
** Bugfix: &amp;lt;code&amp;gt;EMX_TASK_ALLOC&amp;lt;/code&amp;gt; pragmas appeared in generated code&lt;br /&gt;
** Bugfix: Linux: Issue with short task names on task termination&lt;br /&gt;
** Bugfix: Preserving static keyword and name of static global variables&lt;br /&gt;
** Bugfix: Fixed support for &amp;lt;code&amp;gt;EMX_INITCODE&amp;lt;/code&amp;gt; pragma&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2020.06&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2020.06 ==&lt;br /&gt;
&lt;br /&gt;
* emmtrix project wizard now can import multiple C files&lt;br /&gt;
* Fixed handling of C projects without main function&lt;br /&gt;
* Introduced new indicators for status of passes&lt;br /&gt;
* Reworked handling of compiler settings&lt;br /&gt;
* Switched to internal pass infrastructure&lt;br /&gt;
* Switched to Eclipse version 2020-03&lt;br /&gt;
* Switched from Jasva 8 to Java 11&lt;br /&gt;
* Bugfix: CDTFrontend crashed for “for (;;) {}” loops [TS]&lt;br /&gt;
* TargetPlatform: Added support for additional function information (funcinfo.xml)&lt;br /&gt;
* Bugfix: Fixed template of MBA5728&lt;br /&gt;
* Added option to disable removal of unsused functions&lt;br /&gt;
* Added option to disable reordering of tasks&lt;br /&gt;
* Added option to parse of C files in eCG output folder&lt;br /&gt;
* Bugfix: Fixed generation of functions with simple declarations&lt;br /&gt;
* Removed enforced option “-B” for sequential tests&lt;br /&gt;
* Added handling of include directories&lt;br /&gt;
* Added button to parse C code in C projects&lt;br /&gt;
* Fixed various bugs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2019.11.07&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2019.11.07 ==&lt;br /&gt;
&lt;br /&gt;
* Fixed definition of custom paths&lt;br /&gt;
* Several bug fixes regarding global variables&lt;br /&gt;
* Several bug fixes regarding parameters of parallelized functions&lt;br /&gt;
* Improved generation of OpenCL code&lt;br /&gt;
* Improved handling of static keyword&lt;br /&gt;
* Fixed bug in analysis of data dependencies&lt;br /&gt;
* Several other minor bug fixes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2019.03.20&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2019.03.20 ==&lt;br /&gt;
&lt;br /&gt;
* Support for array of structs in emmtrix Code Generator&lt;br /&gt;
* Various improvements for data type selection in eCG&lt;br /&gt;
* Fixed bug that might cause parallel execution of passes within ePS&lt;br /&gt;
* Added option to set C macros for C workflow&lt;br /&gt;
* Improved error messages from CDTFrontend&lt;br /&gt;
* Redesigned SSH password and confirmation dialog&lt;br /&gt;
* Fixed various bugs related to C code input&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2018.08.09&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2018.08.09 ==&lt;br /&gt;
&lt;br /&gt;
* Support for Linux. We have tested it under Xubuntu 18.04. Since it is the first version for Linux, additional bugs compared to Windows cannot be excluded.&lt;br /&gt;
* Customization of the target platform: a target folder is automatically generated in the project folder, in which the various files for the target platform are located. Here e.g. timings for library functions can be stored. More details can be found in the ePS User Guide (just click on Parallel Studio Help in the tool).&lt;br /&gt;
* Support for software templates: in the generated subfolder “template” files can be stored that are to be used for building the parallel code. In addition, existing files can be customized for specific projects and templates can be filled in dynamically using Jtwig (http://jtwig.org/). Again, more details can be found in the ePS User-Guide&lt;br /&gt;
* Improved C support: processing of generic C code (e.g. with structs and switch cases) has been improved&lt;br /&gt;
* Static performance analysis has been reworked. Estimated times from previous versions may differ especially in nested structures. With the new method, it is no longer necessary that the input code is executed on the host system. Instead, all values are calculated as far as possible and otherwise populated with default values.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2017.07.04&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2017.07.04 ==&lt;br /&gt;
&lt;br /&gt;
* Restructured settings&lt;br /&gt;
* Removed option of eCG to mimic the output of MATLAB&lt;br /&gt;
* Integrated automatic consistency checker into the flow&lt;br /&gt;
** Model consistency&lt;br /&gt;
** Order consistency&lt;br /&gt;
** Schedule checker (times, containment, order)&lt;br /&gt;
* Unified video interfaces across all platforms&lt;br /&gt;
* Switched to Eclipse Oxygen&lt;br /&gt;
* Removed support for GeCoS scripts&lt;br /&gt;
* Improved sequential testing for C flow&lt;br /&gt;
* Simplified support of parallelization of functions with pointer parameters&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Fixed scheduler crash with function prototypes that omit parameter names&lt;br /&gt;
* Updated instruction performance for Cortex-A7 and Cortex-A15 on ODROID XU4&lt;br /&gt;
* Fixed a bug that could cause the tabular communication cost model to assign transfer costs for same-core transfers&lt;br /&gt;
* Fixed a bug that prevented to correctly derive a tabular communication cost models when multiple commtable files where present for the same target platform (affected heterogeneous architectures only)&lt;br /&gt;
* Analysis results are integrated into a node’s property view&lt;br /&gt;
* Fixed support for emx_task_alloc and emx_task_cluster pragmas: pragmas now take precedence over allocation made in the GUI or via the constraint settings JSON file&lt;br /&gt;
* Various fixes and improvements regarding user decisions&lt;br /&gt;
* Fixed a bug that would cause user decisions that were not changed in the current session to be removed from ecg_decisions.ini upon save of the file&lt;br /&gt;
* corrected calculation of start and finish times of for loops&lt;br /&gt;
* Fixed display of loops that are mapped to multiple cores&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2017.03.23&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2017.03.23 ==&lt;br /&gt;
&lt;br /&gt;
* Added Simulink Model Viewer, which currently supports:&lt;br /&gt;
** display of top level of model&lt;br /&gt;
** descend to sub block by double clicking on block&lt;br /&gt;
** block hover and selection&lt;br /&gt;
** history: Back/Forward/Home to model root&lt;br /&gt;
** zoom: 0,25 - 2.00 using toolbar or mouse wheel&lt;br /&gt;
* Support Simulink models&lt;br /&gt;
* HLS: Added synchronization for FPGA accelerators&lt;br /&gt;
* Fixed receive of pipe communication&lt;br /&gt;
* Enabled basic testing of C code in the C based flow&lt;br /&gt;
* Improved error handling when accessing projects/settings&lt;br /&gt;
* HLS: Added software interface generation for custom IP&lt;br /&gt;
* HLS: Added IP insertion into template Vivado project and bitstream generation&lt;br /&gt;
* HLS: Improved error handling and reporting&lt;br /&gt;
* Added video support for FriendlyARM NanoPi M3&lt;br /&gt;
* UnifyParameters now adds names to all unnamed function parameters&lt;br /&gt;
* Improved upgrade capabilities of project wizard&lt;br /&gt;
** automatic deletion of old epsproject and properties files&lt;br /&gt;
** generation of new epsproject and properties files&lt;br /&gt;
* Added Properties view to eCG and ePS perspective&lt;br /&gt;
* Added pass to place the eCG decision pragmas at parent blocks&lt;br /&gt;
* Improved error handling of update decision job&lt;br /&gt;
* Improved error handling of script execution&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2017.03.08&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2017.03.08 ==&lt;br /&gt;
&lt;br /&gt;
* Added support for Aurix FreeRTOS template and compiler script&lt;br /&gt;
* Added support for individual compiler settings for sequential, parallel and platform tests. These include:&lt;br /&gt;
** pre-/post-build bash script execution&lt;br /&gt;
** customization of CFLAG and LDFLAG&lt;br /&gt;
** customization of environment variables&lt;br /&gt;
* Improved support for handling of external files&lt;br /&gt;
* Improved support of __cplusplus define&lt;br /&gt;
* Added platform description for NanoPI M3 (S5P6818 Quad-Core Cortex-A53 1.4 GHz)&lt;br /&gt;
* Added platform description attribute “active” that determines whether a description is loaded/an available target platform&lt;br /&gt;
* HLS: improved the result checker to ensure compatability with Vivado HLS&lt;br /&gt;
* HLS: improved error checking of synthesis progress&lt;br /&gt;
* HLS: code refactoring and miscellaneous minor fixes&lt;br /&gt;
* Scheduler View: set minimal width of blocks to one pixel to improve placement of data dependencies&lt;br /&gt;
* Scheduler View: removed gaps beetween adjacent blocks to better reflect the blocks’ actual runtime&lt;br /&gt;
* Scheduler View: block selection markers are now drawn after blocks, so that they may not be overlapped by adjacent blocks anymore&lt;br /&gt;
* HTG View: moved information about from right pane to the properties view&lt;br /&gt;
* HTG View: added button to show the property view&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;release-2016.27.01&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Release 2016.27.01 ==&lt;br /&gt;
&lt;br /&gt;
* emmtrix Technologies GmbH was founded&lt;/div&gt;</summary>
		<author><name>Oliver.Wolf.EMX</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Main_Page&amp;diff=291</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Main_Page&amp;diff=291"/>
		<updated>2023-11-29T12:21:30Z</updated>

		<summary type="html">&lt;p&gt;Oliver.Wolf.EMX: /* emmtrix Products */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
Welcome to the emmtrix Technologies Wiki. As a company with a deep-rooted passion for compilers, we specialize in source-to-source compilers designed to analyze, optimize and transform your code. This Wiki aims to offer detailed, technical background information that complements the tools and resources available on our official website. Here, you&#039;ll find in-depth explanations, usage guidelines, and insights into the engineering behind our specialized software solutions. Whether you&#039;re a developer or a technically-inclined enthusiast, this space is designed to deepen your understanding of what makes our tools essential for your projects.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
=== emmtrix Products ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
* [[emmtrix Studio Release Notes]]&lt;br /&gt;
* emmtrix Parallel Studio&lt;br /&gt;
* [[emmtrix C++ to C Compiler]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Compiler Background ===&lt;br /&gt;
&lt;br /&gt;
* [[Loop Transformations]]&lt;br /&gt;
*[[Demystifying C++]]&lt;/div&gt;</summary>
		<author><name>Oliver.Wolf.EMX</name></author>
	</entry>
	<entry>
		<id>https://www.emmtrix.com/w139/index.php?title=Main_Page&amp;diff=290</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.emmtrix.com/w139/index.php?title=Main_Page&amp;diff=290"/>
		<updated>2023-11-29T12:21:15Z</updated>

		<summary type="html">&lt;p&gt;Oliver.Wolf.EMX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
Welcome to the emmtrix Technologies Wiki. As a company with a deep-rooted passion for compilers, we specialize in source-to-source compilers designed to analyze, optimize and transform your code. This Wiki aims to offer detailed, technical background information that complements the tools and resources available on our official website. Here, you&#039;ll find in-depth explanations, usage guidelines, and insights into the engineering behind our specialized software solutions. Whether you&#039;re a developer or a technically-inclined enthusiast, this space is designed to deepen your understanding of what makes our tools essential for your projects.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
=== emmtrix Products ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
* [[]emmtrix Studio Release Notes]&lt;br /&gt;
* emmtrix Parallel Studio&lt;br /&gt;
* [[emmtrix C++ to C Compiler]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Compiler Background ===&lt;br /&gt;
&lt;br /&gt;
* [[Loop Transformations]]&lt;br /&gt;
*[[Demystifying C++]]&lt;/div&gt;</summary>
		<author><name>Oliver.Wolf.EMX</name></author>
	</entry>
</feed>