<?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: IF statement Optimization in codewarrior 5.1 version in CodeWarrior for MCU</title>
    <link>https://community.nxp.com/t5/CodeWarrior-for-MCU/IF-statement-Optimization-in-codewarrior-5-1-version/m-p/138471#M2166</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;I'm not sure given your description if this is a debug display issue, of if the issue is incorrect code being created.&lt;BR /&gt;Without "-OnB=t -Onbt ", does the afAddrInfo.aClusterId variable contain a wrong value after executing the code?&lt;BR /&gt;&lt;BR /&gt;Anyway, if you don't need -onf, then don't specify it :smileyhappy:. It does avoid the common code optimization which can create unexpected shared code, and it did trigger for the snippet I compiled.&lt;BR /&gt;&lt;BR /&gt;Daniel&lt;BR /&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 28 Jun 2007 22:30:30 GMT</pubDate>
    <dc:creator>CompilerGuru</dc:creator>
    <dc:date>2007-06-28T22:30:30Z</dc:date>
    <item>
      <title>IF statement Optimization in codewarrior 5.1 version</title>
      <link>https://community.nxp.com/t5/CodeWarrior-for-MCU/IF-statement-Optimization-in-codewarrior-5-1-version/m-p/138468#M2163</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;hi ,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;i have problem with the optimization in an IF loop.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;The code is as follows:&lt;/DIV&gt;&lt;DIV&gt;#define mDeviceJoinReqClusterID&amp;nbsp; 0x1201&lt;/DIV&gt;&lt;DIV&gt;#define mDataClusterId_c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x1200&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; if (abc ==TRUE) // not necessary abc is always true , it is global variable.&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; {&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;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; afAddrInfo.aClusterId[0] = (mDeviceJoinReqClusterID &amp;amp; 0xFF);&lt;/DIV&gt;&lt;DIV&gt;afAddrInfo.aClusterId[1] = ( mDeviceJoinReqClusterID&amp;gt;&amp;gt; 8);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; else {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; afAddrInfo.aClusterId[0] = (mDataClusterId_c &amp;amp; 0xFF);&lt;BR /&gt;&amp;nbsp; afAddrInfo.aClusterId[1] = (mDataClusterId_c &amp;gt;&amp;gt; 8);&lt;BR /&gt;&amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;in the above if loop , it considers both as same part , i think the warning is C5912 .&lt;/DIV&gt;&lt;DIV&gt;and when i generate a list file and check it out i see that there is no code generated only for the second line of IF loop, i.e. afAddrInfo.aClusterId[1] = ( mDeviceJoinReqClusterID&amp;gt;&amp;gt; 8); where in all other lines will have code.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;and in both loops i m suppose to get different values since both are using different&amp;nbsp;MACRO values.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;and also i place that second line as first , then code works fine. i meant no optimization.&lt;/DIV&gt;&lt;DIV&gt;how do i avoid it ? do i need to disable any optimization, and i want the code in same format.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 27 Jun 2007 19:09:50 GMT</pubDate>
      <guid>https://community.nxp.com/t5/CodeWarrior-for-MCU/IF-statement-Optimization-in-codewarrior-5-1-version/m-p/138468#M2163</guid>
      <dc:creator>ashushetty</dc:creator>
      <dc:date>2007-06-27T19:09:50Z</dc:date>
    </item>
    <item>
      <title>Re: IF statement Optimization in codewarrior 5.1 version</title>
      <link>https://community.nxp.com/t5/CodeWarrior-for-MCU/IF-statement-Optimization-in-codewarrior-5-1-version/m-p/138469#M2164</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;Hmm. If you actually get the information C5912, than it sounds like a bug.&lt;BR /&gt;When I tried to reproduce it (see the code below) that message was not issued.&lt;BR /&gt;Note that the compiler is only emmiting the code for the second assingment to afAddrInfo.aClusterId[1]&amp;nbsp; once as that is actually assigning the same value in both conditions.&lt;BR /&gt;&lt;BR /&gt;So is the problem you observe that the second line gets merged, or is it that both conditions do get folded?&lt;BR /&gt;&lt;BR /&gt;The condition folding would be a bug, please could you provide a complete compilable sample of the actual code, best with a listing file so we see the output.&lt;BR /&gt;&lt;BR /&gt;If the problem is "just" the optimization of the merged second line, then use the options&lt;BR /&gt;"-onb=t -onbt -onf"&lt;BR /&gt;The first two are disabling two levels of branch tail merging, the third one (-onf, common code) is was also collecting the identical code once the branch tail merging was disabled.&lt;BR /&gt;&lt;BR /&gt;Daniel&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;Here's the code I tried to reproduce the issue:&lt;BR /&gt;&lt;BR /&gt;&lt;FONT face="Courier New"&gt;struct {&lt;BR /&gt;&amp;nbsp; unsigned char aClusterId[2];&lt;BR /&gt;} afAddrInfo;&lt;BR /&gt;&lt;BR /&gt;#define TRUE 1&lt;BR /&gt;int abc;&lt;BR /&gt;void test(void) {&lt;BR /&gt;&amp;nbsp; /* put your own code here */&lt;BR /&gt;#define mDeviceJoinReqClusterID&amp;nbsp; 0x1201&lt;BR /&gt;#define mDataClusterId_c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x1200&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp; if (abc == TRUE) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; afAddrInfo.aClusterId[0] = (mDeviceJoinReqClusterID &amp;amp; 0xFF);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; afAddrInfo.aClusterId[1] = (mDeviceJoinReqClusterID&amp;gt;&amp;gt; 8);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; } else {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; afAddrInfo.aClusterId[0] = (mDataClusterId_c &amp;amp; 0xFF);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; afAddrInfo.aClusterId[1] = (mDataClusterId_c &amp;gt;&amp;gt; 8);&lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;/FONT&gt;&lt;BR /&gt;This code did generate the following code which looks correct, as far as I see. (The code is optimized, without the options to disable the branch tail merging).&lt;BR /&gt;&lt;BR /&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp; 13:&amp;nbsp;&amp;nbsp;&amp;nbsp; if (abc == TRUE) {&lt;BR /&gt;&amp;nbsp; 0000 c60001&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; LDA&amp;nbsp;&amp;nbsp; abc:1&lt;BR /&gt;&amp;nbsp; 0003 4b08&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [3]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DBNZA LD ;abs = 000d&lt;BR /&gt;&amp;nbsp; 0005 c60000&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; LDA&amp;nbsp;&amp;nbsp; abc&lt;BR /&gt;&amp;nbsp; 0008 2603&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [3]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BNE&amp;nbsp;&amp;nbsp; LD ;abs = 000d&lt;BR /&gt;&amp;nbsp;&amp;nbsp; 14:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; afAddrInfo.aClusterId[0] = (mDeviceJoinReqClusterID &amp;amp; 0xFF);&lt;BR /&gt;&amp;nbsp; 000a a601&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [2]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LDA&amp;nbsp;&amp;nbsp; #1&lt;BR /&gt;&amp;nbsp;&amp;nbsp; 15:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; afAddrInfo.aClusterId[1] = (mDeviceJoinReqClusterID&amp;gt;&amp;gt; 8);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; 16:&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;BR /&gt;&amp;nbsp; 000c 21&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [3]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SKIP1 LE ;abs = 000e&lt;BR /&gt;&amp;nbsp; 000d&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LD:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; 17:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; afAddrInfo.aClusterId[0] = (mDataClusterId_c &amp;amp; 0xFF);&lt;BR /&gt;&amp;nbsp; 000d 4f&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [1]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CLRA&amp;nbsp;&lt;BR /&gt;&amp;nbsp; 000e&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LE:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; 000e c70000&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; STA&amp;nbsp;&amp;nbsp; afAddrInfo&lt;BR /&gt;&amp;nbsp;&amp;nbsp; 18:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; afAddrInfo.aClusterId[1] = (mDataClusterId_c &amp;gt;&amp;gt; 8);&lt;BR /&gt;&amp;nbsp; 0011 a612&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [2]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LDA&amp;nbsp;&amp;nbsp; #18&lt;BR /&gt;&amp;nbsp; 0013 c70001&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; STA&amp;nbsp;&amp;nbsp; afAddrInfo:1&lt;BR /&gt;&amp;nbsp;&amp;nbsp; 19:&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp; 20:&amp;nbsp; }&lt;BR /&gt;&amp;nbsp; 0016 81&amp;nbsp;&amp;nbsp;&amp;nbsp;&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; RTS&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; 21:&amp;nbsp;&lt;BR /&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 27 Jun 2007 23:51:30 GMT</pubDate>
      <guid>https://community.nxp.com/t5/CodeWarrior-for-MCU/IF-statement-Optimization-in-codewarrior-5-1-version/m-p/138469#M2164</guid>
      <dc:creator>CompilerGuru</dc:creator>
      <dc:date>2007-06-27T23:51:30Z</dc:date>
    </item>
    <item>
      <title>Re: IF statement Optimization in codewarrior 5.1 version</title>
      <link>https://community.nxp.com/t5/CodeWarrior-for-MCU/IF-statement-Optimization-in-codewarrior-5-1-version/m-p/138470#M2165</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Hi daniel,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;It works now fine. It was problem with optimization .&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Those warnings were coming only if i was creating a seperate workspace&amp;nbsp; tht C5912.&lt;/DIV&gt;&lt;DIV&gt;Now it works fine.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;One more thing is if i disable the " branch tail " and tht "ICG " it is working fine , no need of third option.&lt;/DIV&gt;&lt;DIV&gt;i.e. " -OnB=t -Onbt&amp;nbsp; '&lt;/DIV&gt;&lt;DIV&gt;But third option is it very necessary&amp;gt;?when my code is working fine.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;pls let me know on this too.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;thanks for a quick reply!&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;regards&lt;/DIV&gt;&lt;DIV&gt;ashwini&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 28 Jun 2007 12:02:24 GMT</pubDate>
      <guid>https://community.nxp.com/t5/CodeWarrior-for-MCU/IF-statement-Optimization-in-codewarrior-5-1-version/m-p/138470#M2165</guid>
      <dc:creator>ashushetty</dc:creator>
      <dc:date>2007-06-28T12:02:24Z</dc:date>
    </item>
    <item>
      <title>Re: IF statement Optimization in codewarrior 5.1 version</title>
      <link>https://community.nxp.com/t5/CodeWarrior-for-MCU/IF-statement-Optimization-in-codewarrior-5-1-version/m-p/138471#M2166</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;I'm not sure given your description if this is a debug display issue, of if the issue is incorrect code being created.&lt;BR /&gt;Without "-OnB=t -Onbt ", does the afAddrInfo.aClusterId variable contain a wrong value after executing the code?&lt;BR /&gt;&lt;BR /&gt;Anyway, if you don't need -onf, then don't specify it :smileyhappy:. It does avoid the common code optimization which can create unexpected shared code, and it did trigger for the snippet I compiled.&lt;BR /&gt;&lt;BR /&gt;Daniel&lt;BR /&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 28 Jun 2007 22:30:30 GMT</pubDate>
      <guid>https://community.nxp.com/t5/CodeWarrior-for-MCU/IF-statement-Optimization-in-codewarrior-5-1-version/m-p/138471#M2166</guid>
      <dc:creator>CompilerGuru</dc:creator>
      <dc:date>2007-06-28T22:30:30Z</dc:date>
    </item>
  </channel>
</rss>

