<?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: problem with optimization in ColdFire/68K Microcontrollers and Processors</title>
    <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/problem-with-optimization/m-p/167991#M5989</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Is KEYCNT global&amp;nbsp; and updated else where, ie interrupt ?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;If so declare it volatile and the compiler should do the right thing.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 31 Mar 2009 05:52:52 GMT</pubDate>
    <dc:creator>ChrisJohns</dc:creator>
    <dc:date>2009-03-31T05:52:52Z</dc:date>
    <item>
      <title>problem with optimization</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/problem-with-optimization/m-p/167989#M5987</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I use cw6.4 and when I use optimization it comes out an annoying problem.&lt;/P&gt;&lt;P&gt;the optimization setting are:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; optimization level 4;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IPA FILE level&amp;nbsp; optimization;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;codes as follows:&lt;/P&gt;&lt;P&gt;void Delay20(void)&lt;BR /&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; &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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; KEYCNT=0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(KEYCNT&amp;lt;=19)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp; asm{NOP};&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;If I do not use&amp;nbsp; asm{NOP}; the result of disassmble are :&lt;/P&gt;&lt;P&gt;; 2808: void Delay20(void)&lt;BR /&gt;; 2809: {&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; &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; &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;&lt;BR /&gt;; 2810:&amp;nbsp;&lt;BR /&gt;; 2811: &amp;nbsp;&amp;nbsp;&amp;nbsp; KEYCNT=0;&lt;BR /&gt;; 2812: &amp;nbsp;&amp;nbsp;&amp;nbsp; while(KEYCNT&amp;lt;=19)&lt;BR /&gt;; 2813: &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;; 2814:&amp;nbsp;&lt;BR /&gt;; 2815: //&amp;nbsp;&amp;nbsp;&amp;nbsp; asm{NOP};&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;;&lt;BR /&gt;0x00000000&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _Delay20:&lt;BR /&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;&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; Delay20:&lt;BR /&gt;0x00000000&amp;nbsp; 0x4E560000&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; link&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a6,#0&lt;BR /&gt;;&lt;BR /&gt;; 2816: &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;; 2817:&amp;nbsp;&lt;BR /&gt;; 2818:&amp;nbsp;&lt;BR /&gt;;&lt;BR /&gt;0x00000004&amp;nbsp; 0x60FE&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; bra.s&amp;nbsp;&amp;nbsp;&amp;nbsp; *+0&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; 0x00000004&lt;BR /&gt;;&lt;BR /&gt;; 2819: }&lt;BR /&gt;0x00000006&amp;nbsp; 0x4E71&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; nop&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;And if use&amp;nbsp; asm{NOP};&amp;nbsp; the result of disassmble are :&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;; 2807: //~~~~~~~delay20ms~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;; 2808: void Delay20(void)&lt;BR /&gt;; 2809: {&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;&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;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;; 2810: &amp;nbsp;&lt;BR /&gt;;&lt;BR /&gt;0x00000000&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _Delay20:&lt;BR /&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;&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; Delay20:&lt;BR /&gt;0x00000000&amp;nbsp; 0x4E560000&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; link&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a6,#0&lt;BR /&gt;;&lt;BR /&gt;; 2811: &amp;nbsp;&amp;nbsp; &amp;nbsp;KEYCNT=0;&lt;BR /&gt;; 2812: &amp;nbsp;&amp;nbsp; &amp;nbsp;while(KEYCNT&amp;lt;=19)&lt;BR /&gt;; 2813: &amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;BR /&gt;; 2814: &amp;nbsp;&lt;BR /&gt;;&lt;BR /&gt;0x00000004&amp;nbsp; 0x42B900000000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; clr.l&amp;nbsp;&amp;nbsp;&amp;nbsp; _KEYCNT&lt;BR /&gt;0x0000000A&amp;nbsp; 0x7013&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; moveq&amp;nbsp;&amp;nbsp;&amp;nbsp; #19,d0&lt;BR /&gt;0x0000000C&amp;nbsp; 0x6002&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; bra.s&amp;nbsp;&amp;nbsp;&amp;nbsp; *+4&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; 0x00000010&lt;BR /&gt;;&lt;BR /&gt;; 2815: &amp;nbsp;&amp;nbsp; &amp;nbsp;asm{NOP};&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;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;;&lt;BR /&gt;0x0000000E&amp;nbsp; 0x4E71&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; nop&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;;&lt;BR /&gt;; 2816: &amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;BR /&gt;; 2817: &amp;nbsp;&lt;BR /&gt;; 2818: &amp;nbsp;&lt;BR /&gt;;&lt;BR /&gt;0x00000010&amp;nbsp; 0xB0B900000000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmp.l&amp;nbsp;&amp;nbsp;&amp;nbsp; _KEYCNT,d0&lt;BR /&gt;0x00000016&amp;nbsp; 0x64F6&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; bcc.s&amp;nbsp;&amp;nbsp;&amp;nbsp; *-8&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; 0x0000000e&lt;BR /&gt;;&lt;BR /&gt;; 2819: }&lt;BR /&gt;0x00000018&amp;nbsp; 0x4E5E&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; unlk&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a6&lt;BR /&gt;0x0000001A&amp;nbsp; 0x4E75&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; rts&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;why thy are so different ?It is quite annoying&amp;gt;...&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 30 Mar 2009 15:03:44 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/problem-with-optimization/m-p/167989#M5987</guid>
      <dc:creator>doom</dc:creator>
      <dc:date>2009-03-30T15:03:44Z</dc:date>
    </item>
    <item>
      <title>Re: problem with optimization</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/problem-with-optimization/m-p/167990#M5988</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Well, they are not so different to me.&lt;/P&gt;&lt;P&gt;First, your loop seems to be an endless loop, since KEYCNT is never incremented after initialization.&lt;/P&gt;&lt;P&gt;So the first compilation without asm(NOP) simply implements this endless loop by a branch instruction jumping onto itself. 'unlk' and 'rts' are not necessary, since this loop will never exit.&lt;/P&gt;&lt;P&gt;And since the compiler doesn't know anything about the inline assembler code, adding the asm(NOP) will need to include this assembler instruction in the final code, then checking the value of KEYCNT once more just in case the assembler code has changed the value of KEYCNT without the C compiler knowing anything about it. It will remain endless, of course...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;HTH,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Johan&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 30 Mar 2009 18:44:24 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/problem-with-optimization/m-p/167990#M5988</guid>
      <dc:creator>jbezem</dc:creator>
      <dc:date>2009-03-30T18:44:24Z</dc:date>
    </item>
    <item>
      <title>Re: problem with optimization</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/problem-with-optimization/m-p/167991#M5989</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Is KEYCNT global&amp;nbsp; and updated else where, ie interrupt ?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;If so declare it volatile and the compiler should do the right thing.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 31 Mar 2009 05:52:52 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/problem-with-optimization/m-p/167991#M5989</guid>
      <dc:creator>ChrisJohns</dc:creator>
      <dc:date>2009-03-31T05:52:52Z</dc:date>
    </item>
    <item>
      <title>Re: problem with optimization</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/problem-with-optimization/m-p/167992#M5990</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi&lt;/P&gt;&lt;P&gt;Thanks for your reply.In fact the variable KEYCNT is really updated in a periodic&amp;nbsp; interrupt.My project works well now.BUT I did not quite catch you.You mean Variables assigned to registers through compiler optimization may be corrupted during execution? If so ,where? Would you plz explain it some further more?&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks&amp;nbsp;&lt;/P&gt;&lt;P&gt;Doom.&lt;/P&gt;&lt;DIV class="message-edit-history"&gt;&lt;SPAN class="edit-author"&gt;Message Edited by doom on&lt;/SPAN&gt; &lt;SPAN class="local-date"&gt;2009-03-31&lt;/SPAN&gt; &lt;SPAN class="local-time"&gt;02:31 AM&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 31 Mar 2009 08:29:37 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/problem-with-optimization/m-p/167992#M5990</guid>
      <dc:creator>doom</dc:creator>
      <dc:date>2009-03-31T08:29:37Z</dc:date>
    </item>
    <item>
      <title>Re: problem with optimization</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/problem-with-optimization/m-p/167993#M5991</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Johan&lt;/P&gt;&lt;P&gt;As a matter of fact, KEYCNT is updated in an interrupt.I take Chris’ advice and my project is working well.Tanks all the same.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;regards&lt;/P&gt;&lt;P&gt;doom&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 31 Mar 2009 08:42:33 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/problem-with-optimization/m-p/167993#M5991</guid>
      <dc:creator>doom</dc:creator>
      <dc:date>2009-03-31T08:42:33Z</dc:date>
    </item>
    <item>
      <title>Re: problem with optimization</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/problem-with-optimization/m-p/167994#M5992</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;No, nothing will get 'corrupted', but a variable that is otherwise not used in a loop may get optimized away. Declaring it 'volatile' tells the compiler that the variable may get updated outside of the scope visible to the compiler, so it needs to re-read that variable every time it wants to use the variable.&lt;/P&gt;&lt;P&gt;In your case, the variable apparently was not&amp;nbsp; declared 'volatile', so the compiler assumed it knew everything there was to know about KEYCNT, and since no modification was visible in the code (without the NOP), the variable was optimized away.&lt;/P&gt;&lt;P&gt;Inserting the NOP, the compiler didn't know at least a small part of the code, so it couldn't optimize as aggressively, even though no 'volatile' was used.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;If you will, I wrote an article on 'volatile' (and 'const', but that's not relevant here; 'restrict' is mentioned, but not yet included...), which you may find at &lt;A href="http://www.bezem.de/pdf/tqinc.pdf" target="test_blank"&gt;http://www.bezem.de/pdf/tqinc.pdf&lt;/A&gt;.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;HTH,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Johan&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 31 Mar 2009 12:10:23 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/problem-with-optimization/m-p/167994#M5992</guid>
      <dc:creator>jbezem</dc:creator>
      <dc:date>2009-03-31T12:10:23Z</dc:date>
    </item>
    <item>
      <title>Re: problem with optimization</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/problem-with-optimization/m-p/167995#M5993</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi&lt;/P&gt;&lt;P&gt;Thanks again!&lt;/P&gt;&lt;P&gt;I have read your article .The last part is a little complicated but it is very helpful.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;doom&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 01 Apr 2009 07:38:03 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/problem-with-optimization/m-p/167995#M5993</guid>
      <dc:creator>doom</dc:creator>
      <dc:date>2009-04-01T07:38:03Z</dc:date>
    </item>
  </channel>
</rss>

