<feed xmlns='http://www.w3.org/2005/Atom'>
<title>antcc/irdump.c, branch trunk</title>
<subtitle>A little C compiler</subtitle>
<id>https://git.lemon.rip/antcc/atom?h=trunk</id>
<link rel='self' href='https://git.lemon.rip/antcc/atom?h=trunk'/>
<link rel='alternate' type='text/html' href='https://git.lemon.rip/antcc/'/>
<updated>2025-10-19T06:09:09+00:00</updated>
<entry>
<title>Organize source files into directories</title>
<updated>2025-10-19T06:09:09+00:00</updated>
<author>
<name>lemon</name>
<email>lsof@mailbox.org</email>
</author>
<published>2025-10-19T06:09:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lemon.rip/antcc/commit/?id=dea8fd171acb54b6d9685422d5e391fb55074008'/>
<id>urn:sha1:dea8fd171acb54b6d9685422d5e391fb55074008</id>
<content type='text'>
</content>
</entry>
<entry>
<title>misc</title>
<updated>2025-10-15T08:45:12+00:00</updated>
<author>
<name>lemon</name>
<email>lsof@mailbox.org</email>
</author>
<published>2025-10-15T08:45:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lemon.rip/antcc/commit/?id=437efda31319573dcf67337d1cc6e4a23a6967a4'/>
<id>urn:sha1:437efda31319573dcf67337d1cc6e4a23a6967a4</id>
<content type='text'>
</content>
</entry>
<entry>
<title>regalloc: start implementing linear scan</title>
<updated>2025-09-08T20:05:33+00:00</updated>
<author>
<name>lemon</name>
<email>lsof@mailbox.org</email>
</author>
<published>2025-09-08T20:05:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lemon.rip/antcc/commit/?id=e043811980db560fc2507bb53b644e54c80527dc'/>
<id>urn:sha1:e043811980db560fc2507bb53b644e54c80527dc</id>
<content type='text'>
</content>
</entry>
<entry>
<title>add initializers (only static for initialier list rn)</title>
<updated>2023-06-29T07:59:30+00:00</updated>
<author>
<name>lemon</name>
<email>lsof@mailbox.org</email>
</author>
<published>2023-06-29T07:59:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lemon.rip/antcc/commit/?id=f453b313f62ba42d748f00628be7b3750c797c86'/>
<id>urn:sha1:f453b313f62ba42d748f00628be7b3750c797c86</id>
<content type='text'>
and other fixes
</content>
</entry>
<entry>
<title>backend: fix mem2reg &amp; regalloc</title>
<updated>2023-06-25T22:29:07+00:00</updated>
<author>
<name>lemon</name>
<email>lsof@mailbox.org</email>
</author>
<published>2023-06-25T22:29:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lemon.rip/antcc/commit/?id=b94fe89c9ddfcb85dcddebfd218fa7f00b8e6608'/>
<id>urn:sha1:b94fe89c9ddfcb85dcddebfd218fa7f00b8e6608</id>
<content type='text'>
they were broken, especially for unstructured control flow. most
significant fix is to register allocator for temporaries that are used
before the first definition in the source order, e.g.:

    @1:
        %x = add %y, 1
        b @3
    @2
        %y = ...
        b @1

it's legal for %x to use %y there (assuming @2 dominates @1) but from
the point of view of the register allocator %y is defined and freed
and then used again, which broke things. the fix is to introduce phis
for this situation:

    @1:
        %y.1 = phi @2 %y
        %x = add %y.1, 1
        b @3
    @2
        %y = ...
        b @1

then regalloc phi handling code makes it work
</content>
</entry>
<entry>
<title>backend: fix regalloc to work with more complex dataflow</title>
<updated>2023-06-24T16:47:05+00:00</updated>
<author>
<name>lemon</name>
<email>lsof@mailbox.org</email>
</author>
<published>2023-06-24T16:47:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lemon.rip/antcc/commit/?id=19bbdfa3c7ae05f4694ce5e434d9855c6f2c3682'/>
<id>urn:sha1:19bbdfa3c7ae05f4694ce5e434d9855c6f2c3682</id>
<content type='text'>
basically an allocation map at the beginning (in) and end (out) of each
block is kept and after the first allocation pass another pass is ran to
resolve allocation conflicts between each edge, plus another pass to
finish lowering phi functions.
also introduced `regset` and plenty of other miscellaneous fixes
</content>
</entry>
<entry>
<title>change RMORE -&gt; RADDR; use RXXX (RNONE) for special args,also undef</title>
<updated>2023-06-22T19:54:08+00:00</updated>
<author>
<name>lemon</name>
<email>lsof@mailbox.org</email>
</author>
<published>2023-06-22T19:54:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lemon.rip/antcc/commit/?id=d313c6e49bfb32ae24745e90eebe833da20efa1a'/>
<id>urn:sha1:d313c6e49bfb32ae24745e90eebe833da20efa1a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>mem2reg: implement ssa construction; this breaks regalloc right now</title>
<updated>2023-06-21T21:52:23+00:00</updated>
<author>
<name>lemon</name>
<email>lsof@mailbox.org</email>
</author>
<published>2023-06-21T21:52:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lemon.rip/antcc/commit/?id=3f2221dfb9ab33b7ac44bbf822a78753a0357d25'/>
<id>urn:sha1:3f2221dfb9ab33b7ac44bbf822a78753a0357d25</id>
<content type='text'>
</content>
</entry>
<entry>
<title>explicitly store predecessors in each block</title>
<updated>2023-06-21T10:32:32+00:00</updated>
<author>
<name>lemon</name>
<email>lsof@mailbox.org</email>
</author>
<published>2023-06-21T10:32:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lemon.rip/antcc/commit/?id=995fd23ecd5de710a6f587d29af2874b1fb4756d'/>
<id>urn:sha1:995fd23ecd5de710a6f587d29af2874b1fb4756d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>don't lower params and args to registers in abi0</title>
<updated>2023-06-20T09:25:51+00:00</updated>
<author>
<name>lemon</name>
<email>lsof@mailbox.org</email>
</author>
<published>2023-06-20T08:58:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lemon.rip/antcc/commit/?id=3b9071be52359388a4a1db6b48636f6c4934b9ad'/>
<id>urn:sha1:3b9071be52359388a4a1db6b48636f6c4934b9ad</id>
<content type='text'>
it's better to do it later, currently in isel(), but perhaps in a
pre-isel abi1 pass
</content>
</entry>
</feed>
