<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to feature-requests</title><link>https://sourceforge.net/p/sdcc/feature-requests/</link><description>Recent changes to feature-requests</description><atom:link href="https://sourceforge.net/p/sdcc/feature-requests/feed.rss" rel="self"/><language>en</language><lastBuildDate>Tue, 21 Apr 2026 13:06:29 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/sdcc/feature-requests/feed.rss" rel="self" type="application/rss+xml"/><item><title>#1015 Feature request: disable codegeneration for atomics </title><link>https://sourceforge.net/p/sdcc/feature-requests/1015/?limit=25#31f5</link><description>&lt;div class="markdown_content"&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;status&lt;/strong&gt;: open --&amp;gt; closed-fixed&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Philipp Klaus Krause</dc:creator><pubDate>Tue, 21 Apr 2026 13:06:29 -0000</pubDate><guid>https://sourceforge.net3036a6077be08f26acc68cdc540f7bea25f13139</guid></item><item><title>#1017 Automatically narrow constants/literals types</title><link>https://sourceforge.net/p/sdcc/feature-requests/1017/?limit=25#016c/2af2/7024/432b</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;As mentioned in &lt;a class="alink" href="/p/sdcc/bugs/3978/"&gt;[bugs:#3978]&lt;/a&gt;, it looks more like a problem of the loop optimization.&lt;/p&gt;
&lt;p&gt;If the loop optimization can't be fixed easily and you want to revert this change, then I guess this optimization could also be done in the mcs51 backend when expanding/emitting the multiplication operation? (by looking at the operands)&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Oleg Endo</dc:creator><pubDate>Sun, 19 Apr 2026 13:14:07 -0000</pubDate><guid>https://sourceforge.net22731c7da96673344b90be97466080c7992519c2</guid></item><item><title>#1017 Automatically narrow constants/literals types</title><link>https://sourceforge.net/p/sdcc/feature-requests/1017/?limit=25#016c/2af2/7024</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Unfortunately, we get a substantial code speed regression for mos6502: &lt;a class="alink" href="/p/sdcc/bugs/3978/"&gt;[bugs:#3978]&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Philipp Klaus Krause</dc:creator><pubDate>Sun, 19 Apr 2026 12:46:30 -0000</pubDate><guid>https://sourceforge.net7ca79ca8461ea9b9ce119864f6feeb8b59a5e4ef</guid></item><item><title>#1015 Feature request: disable codegeneration for atomics </title><link>https://sourceforge.net/p/sdcc/feature-requests/1015/?limit=25#cf41</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Ok, i built sdcc from atomics branch and make smoke tests for mcs51.&lt;/p&gt;
&lt;p&gt;sdcc --version &lt;br/&gt;
SDCC : mcs51/z80/z180/r2k/r2ka/r3ka/r4k/r5k/r6k/sm83/tlcs90/ez80/z80n/r800/ds390/pic16/pic14/TININative/ds400/hc08/s08/stm8/pdk13/pdk14/pdk15/mos6502/mos65c02/f8/f8l TD- 4.5.24 #16459 (Linux)&lt;br/&gt;
published under GNU General Public License (GPL)&lt;/p&gt;
&lt;p&gt;Wow &lt;strong&gt;At first look its worked.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Details:&lt;br/&gt;
First test is try to build main.c with content&lt;br/&gt;
&lt;code&gt;void main(void) {}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;If no --norestartseqatomics compiler flag the size of firmware is &lt;br/&gt;
Name             Start    End      Size     Max     &lt;/p&gt;
&lt;hr/&gt;
&lt;p&gt;ROM/EPROM/FLASH  0x0000   0x00ae     &lt;strong&gt;175&lt;/strong&gt;    65536&lt;br/&gt;
main.asm contains  atomic related code like &lt;br/&gt;
; restartable atomic support routines&lt;br/&gt;
    .ds 5&lt;br/&gt;
sdcc_atomic_exchange_rollback_start::&lt;br/&gt;
    nop&lt;br/&gt;
    nop&lt;/p&gt;
&lt;p&gt;If   add --norestartseqatomics compiler flag &lt;br/&gt;
Name             Start    End      Size     Max     &lt;/p&gt;
&lt;hr/&gt;
&lt;p&gt;ROM/EPROM/FLASH  0x0000   0x0068     &lt;strong&gt;105&lt;/strong&gt;    65536&lt;/p&gt;
&lt;p&gt;Second test on main.c&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="c1"&gt;#include &amp;lt;stdatomic.h&amp;gt;&lt;/span&gt;

&lt;span class="n"&gt;volatile&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;atomic_flag&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;lock&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ATOMIC_FLAG_INIT&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nb nb-Type"&gt;void&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;critical_section&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb nb-Type"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Spin&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;until&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;we&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;acquire&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;lock&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;while&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;atomic_flag_test_and_set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lock&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;In&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;real&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;application&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;you&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;might&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;do&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;something&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;here&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;avoid&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;tight&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;spinning&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ow"&gt;or&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;just&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;wait&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;lock&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;---&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;CRITICAL&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;SECTION&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;START&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;---&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Example&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Protected&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;access&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;shared&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;resource&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;g&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;updating&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;bit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;variable&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;sending&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;serial&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;__critical&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Even&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;within&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;this&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;lock&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;you&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;might&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;need&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;__critical&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;interrupts&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;can&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;also&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;try&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;grab&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;this&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;same&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;lock&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;---&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;CRITICAL&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;SECTION&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;END&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;---&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Release&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;lock&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;atomic_flag_clear&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lock&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;    &lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


&lt;span class="nb nb-Type"&gt;void&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb nb-Type"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;while&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;critical_section&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Without --norestartseqatomics&lt;/p&gt;
&lt;p&gt;Other memory:&lt;br/&gt;
   Name             Start    End      Size     Max     &lt;/p&gt;
&lt;hr/&gt;
&lt;p&gt;PAGED EXT. RAM                         0      256 &lt;br/&gt;
   EXTERNAL RAM                           0    65536 &lt;br/&gt;
   ROM/EPROM/FLASH  0x0000   0x00d6     &lt;strong&gt;215&lt;/strong&gt;    65536 &lt;/p&gt;
&lt;p&gt;Try to compile with   --norestartseqatomics is failed (and there is expected behavior)&lt;br/&gt;
 ?ASlink-Warning-Undefined Global sdcc_atomic_exchange_gptr_impl referenced by module &lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Michael Golovanov</dc:creator><pubDate>Fri, 17 Apr 2026 18:01:12 -0000</pubDate><guid>https://sourceforge.net7ab3c06826bc8dea7c4ff942aef1eaa093789120</guid></item><item><title>#1015 Feature request: disable codegeneration for atomics </title><link>https://sourceforge.net/p/sdcc/feature-requests/1015/?limit=25#838b</link><description>&lt;div class="markdown_content"&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;assigned_to&lt;/strong&gt;: Philipp Klaus Krause&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Philipp Klaus Krause</dc:creator><pubDate>Fri, 17 Apr 2026 10:52:48 -0000</pubDate><guid>https://sourceforge.net4339a4f65a13083c9d5a1da6a710289d5a36f242</guid></item><item><title>#1017 Automatically narrow constants/literals types</title><link>https://sourceforge.net/p/sdcc/feature-requests/1017/?limit=25#ba37</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Nice, thanks!&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Oleg Endo</dc:creator><pubDate>Mon, 13 Apr 2026 01:21:36 -0000</pubDate><guid>https://sourceforge.net2236af2eb013c72780c515704ef25fb3d2cbd774</guid></item><item><title>#1017 Automatically narrow constants/literals types</title><link>https://sourceforge.net/p/sdcc/feature-requests/1017/?limit=25#016c/2af2</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Basically, we already had this optimization, it just was disabled due to code size regressions for some ports (in particular z80); looking at the big picture I now think it is worth it, and enabled it in &lt;a class="alink" href="/p/sdcc/code/16454/"&gt;[r16454]&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Philipp Klaus Krause</dc:creator><pubDate>Sat, 11 Apr 2026 17:59:52 -0000</pubDate><guid>https://sourceforge.netb63acb935cf0e6c9a1266fab7d51b6a97307b5fc</guid></item><item><title>#1017 Automatically narrow constants/literals types</title><link>https://sourceforge.net/p/sdcc/feature-requests/1017/?limit=25#5c86</link><description>&lt;div class="markdown_content"&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;status&lt;/strong&gt;: open --&amp;gt; closed-fixed&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;assigned_to&lt;/strong&gt;: Philipp Klaus Krause&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Group&lt;/strong&gt;:  --&amp;gt; &lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Philipp Klaus Krause</dc:creator><pubDate>Sat, 11 Apr 2026 17:59:40 -0000</pubDate><guid>https://sourceforge.net09d9c28ff1417cbfdadaf65ab8f4140b555e7741</guid></item><item><title>#892 mcs51: codeseg/constseg  lost high address byte</title><link>https://sourceforge.net/p/sdcc/feature-requests/892/?limit=25#4308</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;As it turns out, my idea to use something like &lt;code&gt;#((___str_0 &amp;gt;&amp;gt; 16) + 0x80)&lt;/code&gt;  for the high byte doesn't work. Although it compiles and assembles and links fine, it silently outputs &lt;code&gt;#0x00&lt;/code&gt; in the final code.&lt;/p&gt;
&lt;p&gt;This is should be probably also fixed in the assembler/linker.  Funnily, turning around the expression seems to work fine &lt;code&gt;#((___str_0 + 0x800000) &amp;gt;&amp;gt; 16)&lt;/code&gt;  . So use that for now.&lt;/p&gt;
&lt;p&gt;Updated patch&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Oleg Endo</dc:creator><pubDate>Mon, 06 Apr 2026 02:58:31 -0000</pubDate><guid>https://sourceforge.net210e1fe4961898b16b707e7e50ee828255800458</guid></item><item><title>#1017 Automatically narrow constants/literals types</title><link>https://sourceforge.net/p/sdcc/feature-requests/1017/?limit=25#016c</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Generic optimization based on generalized constant propagation, I'd say. In the front-end, we need that int, since too many things break otherwise. But later, we should narrow it (e.g. after checking that the operands are in the 0 to 255 range, and that the backend does have an unsigned 8x8-&amp;gt;16 multiplication). Interestingly, for your example we do get okayish code for z180, but currently not mcs51 and stm8.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Philipp Klaus Krause</dc:creator><pubDate>Sat, 04 Apr 2026 13:07:20 -0000</pubDate><guid>https://sourceforge.net9123f8397e43f31d8ecdc30435f58e8e5ccf2750</guid></item></channel></rss>