<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Serious Compiler bug with -Os optimisation in LPCXpresso IDE</title>
    <link>https://community.nxp.com/t5/LPCXpresso-IDE/Serious-Compiler-bug-with-Os-optimisation/m-p/561707#M16422</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by igorsk on Tue Mar 15 10:16:39 MST 2011&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Why do you have a cast for LPC_UART0 and LPC_UART1? It shouldn't be necessary.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 16 Jun 2016 02:13:55 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-16T02:13:55Z</dc:date>
    <item>
      <title>Serious Compiler bug with -Os optimisation</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Serious-Compiler-bug-with-Os-optimisation/m-p/561706#M16421</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Ian Stroud on Tue Mar 15 09:38:25 MST 2011&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Using LPCXPRESSO 3.6.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I have a flash based look-up table of UART Register base addresses for the LPC1768.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;It is declared as &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]static[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#7f0055]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[LEFT][/COLOR][/SIZE][SIZE=2][COLOR=#005032][SIZE=2][COLOR=#005032]LPC_UART_TypeDef[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] * [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]const[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] UART_REG_BASE[] = [/SIZE]&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;[SIZE=2]{[/SIZE]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[LEFT][SIZE=2]([/SIZE][SIZE=2][COLOR=#005032][SIZE=2][COLOR=#005032]LPC_UART_TypeDef[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] *) LPC_UART0, [/SIZE]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[SIZE=2]([COLOR=#005032][COLOR=#005032]LPC_UART_TypeDef[/COLOR][/COLOR] *) LPC_UART1, [/SIZE][/LEFT]&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;[SIZE=2]LPC_UART2, [/SIZE]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[SIZE=2]LPC_UART3 [/SIZE]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[SIZE=2]};[/SIZE][/LEFT]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[LEFT][SIZE=2]In debug build this table is set up in flash as expected:[/SIZE]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[ATTACH]349[/ATTACH][/LEFT]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[LEFT]If I do a release build with the -Os option set then the contents of this table is wrong. The entry for UART0 is correct at 0x4000C000, but UART1 is set to 0x00000001 and UART2 and UART3 are set to 0x00000000. Not surprisingly the application then crashes when it tries to de-reference corrupt pointers.[/LEFT]&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 02:13:55 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Serious-Compiler-bug-with-Os-optimisation/m-p/561706#M16421</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T02:13:55Z</dc:date>
    </item>
    <item>
      <title>Re: Serious Compiler bug with -Os optimisation</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Serious-Compiler-bug-with-Os-optimisation/m-p/561707#M16422</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by igorsk on Tue Mar 15 10:16:39 MST 2011&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Why do you have a cast for LPC_UART0 and LPC_UART1? It shouldn't be necessary.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 02:13:55 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Serious-Compiler-bug-with-Os-optimisation/m-p/561707#M16422</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T02:13:55Z</dc:date>
    </item>
    <item>
      <title>Re: Serious Compiler bug with -Os optimisation</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Serious-Compiler-bug-with-Os-optimisation/m-p/561708#M16423</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Ian Stroud on Tue Mar 15 10:27:46 MST 2011&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;The definitions of LPC_UART0 and LPC_UART1 have a different type to LPC_UART2 and 3. However the registers maps for basic operation of the UARTs are the same.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I need to put in an explicit cast in order to suppress Lint warnings. Lint rightly gets nervous when pointers to different types are interchanged.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 02:13:56 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Serious-Compiler-bug-with-Os-optimisation/m-p/561708#M16423</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T02:13:56Z</dc:date>
    </item>
    <item>
      <title>Re: Serious Compiler bug with -Os optimisation</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Serious-Compiler-bug-with-Os-optimisation/m-p/561709#M16424</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by CodeRedSupport on Tue Mar 15 10:29:22 MST 2011&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Please provide a buildable piece of code that actually shows up the problem. The below code seems to compile OK here:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;#ifdef __USE_CMSIS
#include "LPC17xx.h"
#endif

#include &amp;lt;cr_section_macros.h&amp;gt;
#include &amp;lt;NXP/crp.h&amp;gt;

// Variable to store CRP value in. Will be placed automatically
// by the linker when "Enable Code Read Protect" selected.
// See crp.h header for more information
__CRP const unsigned int CRP_WORD = CRP_NO_CRP ;

#include &amp;lt;stdio.h&amp;gt;

int main(void) {

&amp;nbsp;&amp;nbsp;&amp;nbsp; static
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_UART_TypeDef * const UART_REG_BASE[] =
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; (LPC_UART_TypeDef *) LPC_UART0,
&amp;nbsp;&amp;nbsp;&amp;nbsp; (LPC_UART_TypeDef *) LPC_UART1,
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_UART2,
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_UART3
&amp;nbsp;&amp;nbsp;&amp;nbsp; };
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; int loop;
&amp;nbsp;&amp;nbsp;&amp;nbsp; for (loop = 0; loop &amp;lt; 4; loop++) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf ("%x\n", UART_REG_BASE[loop]);
&amp;nbsp;&amp;nbsp;&amp;nbsp; }

&amp;nbsp;&amp;nbsp;&amp;nbsp; // Enter an infinite loop, just incrementing a counter
&amp;nbsp;&amp;nbsp;&amp;nbsp; volatile static int i = 0 ;
&amp;nbsp;&amp;nbsp;&amp;nbsp; while(1) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i++ ;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0 ;
}&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;which built for release (-Os) prints out...&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;4000c000
40010000
40098000
4009c000&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;CodeRedSupport&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 02:13:57 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Serious-Compiler-bug-with-Os-optimisation/m-p/561709#M16424</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T02:13:57Z</dc:date>
    </item>
    <item>
      <title>Re: Serious Compiler bug with -Os optimisation</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Serious-Compiler-bug-with-Os-optimisation/m-p/561710#M16425</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Ian Stroud on Wed Mar 16 03:46:26 MST 2011&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;I now think that this problem may not be a compiler issue but may be due to the debugger / download tools. Using the -Os switch may just happen to place the UART look-up table in a "problem" area.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Looking in the .map file I find the UART table is located at 2FFC in flash.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;[FONT=Courier New][SIZE=1].rodata.UART_REG_BASE&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x00002ffc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x10 ./src/LPCUart.o[/SIZE][/FONT]&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I used the [I]fromelf.exe[/I] from Keil to convert the .axf file to Intel Hex, exmining the hex file I found that the initialisation of this area of memory is actually correct.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;[FONT=Courier New][SIZE=1]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;:102FF0006F6E0D004C696E653A200000[U]00C00040[/U]05&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;:10300000[U]000001400080094000C00940[/U]200000008D[/SIZE][/FONT]&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;However when the debugger downloads the code onto the target and I examine this area in flash I find the contents is corrupted.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;[ATTACH]353[/ATTACH]&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I can supply the fully .map and .axf files for analysis but these will have to outside of this public forum.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 02:13:57 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Serious-Compiler-bug-with-Os-optimisation/m-p/561710#M16425</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T02:13:57Z</dc:date>
    </item>
    <item>
      <title>Re: Serious Compiler bug with -Os optimisation</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Serious-Compiler-bug-with-Os-optimisation/m-p/561711#M16426</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by CodeRedSupport on Wed Mar 16 04:40:26 MST 2011&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;As before, can you please provide an example that demonstrates this. If you don't want to paste your source, modify the example we posted so that it demonstrates your perceived problem.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;However, when using Space optimization, the compiler does all sorts of things to reduce the size of your code, and so your table may not even have been allocated any space at all. For example, in the example we provided, the table is not created, and the values are inlined by the compiler.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Optimizing compilers can appear to do some very weird things to your code, but they will all be safe, and your code will still work. Sometimes, you have to give the compiler additional information to help it make the correct decisions - such as using 'volatile' when things really are volatile. Also if you are using aliases (e.g. using a pointer to a table that the compiler then removes) you have to tell the compiler you are doing that too.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Anyway, if you can provide an example, we can tell you what you need to do.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 02:13:58 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Serious-Compiler-bug-with-Os-optimisation/m-p/561711#M16426</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T02:13:58Z</dc:date>
    </item>
    <item>
      <title>Re: Serious Compiler bug with -Os optimisation</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Serious-Compiler-bug-with-Os-optimisation/m-p/561712#M16427</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Ian Stroud on Wed Mar 16 05:04:47 MST 2011&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;You appear to have mis-read my last post.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;The UART table in the .axf file is correct. I have proved this by converting the .axf file to Intel Hex and looking directly.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;It is when your debugger loads this file into Flash that the problem occurs.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;For commercial reasons I cannot upload source files / executables to a public forum. I could attempt to modify your example file to reproduce the fault but this could take days.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;To expedite this problem I need a direct contact external to this forum.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 02:13:58 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Serious-Compiler-bug-with-Os-optimisation/m-p/561712#M16427</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T02:13:58Z</dc:date>
    </item>
    <item>
      <title>Re: Serious Compiler bug with -Os optimisation</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Serious-Compiler-bug-with-Os-optimisation/m-p/561713#M16428</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by CodeRedSupport on Wed Mar 16 05:10:06 MST 2011&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;We are going to need source files that reproduce your problem if we are to investigate this any further. If you want to contact our support group directly to send the source, please see the details here:&lt;/SPAN&gt;&lt;BR /&gt;&lt;A href="http://"&gt;http://www.code-red-tech.com/support.php&lt;/A&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 02:13:59 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Serious-Compiler-bug-with-Os-optimisation/m-p/561713#M16428</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T02:13:59Z</dc:date>
    </item>
    <item>
      <title>Re: Serious Compiler bug with -Os optimisation</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Serious-Compiler-bug-with-Os-optimisation/m-p/561714#M16429</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Ian Stroud on Thu Mar 17 06:56:28 MST 2011&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Problem is now resolved.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;It was due to a known issue with LPCXPRESSO 3.6 that has already been fixed in 3.6.2, and concerned managed linker scripts and sector alignment.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Basically if you were unlucky enough to have a code sector, (rodata in my case) that didn't end on a 4-byte boundary all subsequent sectors in flash were then misaligned. This in turn confused the flash downloader causing it to corrupt flash (i.e. Write to the same flash location twice with different data).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;It's a shame there isn't a verify phase/option after the download.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 02:13:59 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Serious-Compiler-bug-with-Os-optimisation/m-p/561714#M16429</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T02:13:59Z</dc:date>
    </item>
    <item>
      <title>Re: Serious Compiler bug with -Os optimisation</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Serious-Compiler-bug-with-Os-optimisation/m-p/561715#M16430</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by CodeRedSupport on Thu Mar 17 08:52:20 MST 2011&lt;/STRONG&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: Ian Stroud&lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;Basically if you were unlucky enough to have a code sector, (rodata in my case) that didn't end on a 4-byte boundary all subsequent sectors in flash were then misaligned.&lt;BR /&gt;&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Just to clarify - this is an issue when the last of your rodata (typically variables specified as const in your code) ends on a non-word boundary - as with LPCXpresso 3.6.0 no padding will get inserted after the rodata. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Code will be placed in your image before your rodata and will not be affected anyway as code input sections will always be always get placed on word boundaries.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The issue is mentioned in the release notes for LPCXPresso 3.6.2.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;CodeRedSupport.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 02:14:00 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Serious-Compiler-bug-with-Os-optimisation/m-p/561715#M16430</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T02:14:00Z</dc:date>
    </item>
  </channel>
</rss>

