ARM Compiler 6 LTO stack usage and code footprint


i have checked out the code size and maximal stack usage (from the static call graph) for a Cortex M0+ project compiled with ARM Compiler 6 and different optimization levels.

To compare I added the results with compiler 5 and optimisation level 1.

The following table shows the results.

Optimize Level     LTO      Static call graph max. stack usage           Code memory
1                           no         696 byte                                                    85604 byte
1                           yes       856 byte                                                   103084 byte
2                           no         704 byte                                                    98228 byte
2                           yes        952 byte                                                  121824 byte
3                           no         704 byte                                                   103728 byte
3                           yes      1000 byte                                                  129724 byte
fast                        no        704 byte                                                   103724 byte
fast                        yes     1000 byte                                                  129724 byte
balanced               no         688 byte                                                    82952 byte
balanced               yes       824 byte                                                    78740 byte
Oz image size       no        696 byte                                                    77788 byte
Oz image size       yes       792 byte                                                    69792 byte

Comp. 5 Opt. 1                  460 byte                                                    79560 byte

I have three questions to the results:

- why does LTO increase the code footprint for optimization levels 1, 2, 3 and fast? I would expect a code reduction as for the levels balanced an Oz.

- why does LTO increase the  stack usage? This happens in all optimization levels.

- In general the stack usage with compiler 6 is significantly larger as with Compiler 5. Do I miss something here?

Best regards for your support.