<feed xmlns='http://www.w3.org/2005/Atom'>
<title>cie-pseudocode-compiler.git/tests/iii/extern-struct-rejected, branch main</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.</subtitle>
<id>https://git.ov4.org/cie-pseudocode-compiler.git/atom/tests/iii/extern-struct-rejected?h=main</id>
<link rel='self' href='https://git.ov4.org/cie-pseudocode-compiler.git/atom/tests/iii/extern-struct-rejected?h=main'/>
<link rel='alternate' type='text/html' href='https://git.ov4.org/cie-pseudocode-compiler.git/'/>
<updated>2026-10-22T13:56:44Z</updated>
<entry>
<title>feat(codegen): accept pointer types to any C type in EXTERN</title>
<updated>2026-10-22T13:56:44Z</updated>
<author>
<name>_ov4</name>
<email>ov4@ov4.org</email>
</author>
<published>2026-10-22T13:56:44Z</published>
<link rel='alternate' type='text/html' href='https://git.ov4.org/cie-pseudocode-compiler.git/commit/?id=312a19c781da1c31ff1e3dc71c319663a8be9148'/>
<id>urn:sha1:312a19c781da1c31ff1e3dc71c319663a8be9148</id>
<content type='text'>
A pseudocode pointer type now counts as a C type, in EXTERN signatures
and as a C-struct field, when it finally points to a non-void C type or a
C struct, as in TYPE PInt = ^C_INT. A pointer cycle such as TYPE P = ^P
and a pointer to a pseudocode type stay rejected.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat(codegen): pass C-struct records by value as variadic arguments</title>
<updated>2026-10-22T13:51:44Z</updated>
<author>
<name>_ov4</name>
<email>ov4@ov4.org</email>
</author>
<published>2026-10-22T13:51:44Z</published>
<link rel='alternate' type='text/html' href='https://git.ov4.org/cie-pseudocode-compiler.git/commit/?id=5eccd90b47b327917ad0e5858c79ca8fab27cd74'/>
<id>urn:sha1:5eccd90b47b327917ad0e5858c79ca8fab27cd74</id>
<content type='text'>
A variadic EXTERN call is now arranged by clang per call, from the fixed
parameter count and the promoted argument types. C-struct records pass
unchanged in variadic positions, as C11 6.5.2.2p6-7 and 7.16.1.1p2
allow; a record that is not a C struct names the offending field.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat(codegen): return C-struct records by value</title>
<updated>2026-10-22T13:46:40Z</updated>
<author>
<name>_ov4</name>
<email>ov4@ov4.org</email>
</author>
<published>2026-10-22T13:46:40Z</published>
<link rel='alternate' type='text/html' href='https://git.ov4.org/cie-pseudocode-compiler.git/commit/?id=e3cc6c585a15fe4478dd2312bf5d390896729a31'/>
<id>urn:sha1:e3cc6c585a15fe4478dd2312bf5d390896729a31</id>
<content type='text'>
EXTERN_FUNCTION may now return a C-struct record by value, either through
caller-supplied sret memory or as a coerced value stored back into the
record, as clang arranges it. This removes the last by-value rejection.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat(codegen): pass C-struct records by value</title>
<updated>2026-10-22T13:45:36Z</updated>
<author>
<name>_ov4</name>
<email>ov4@ov4.org</email>
</author>
<published>2026-10-22T13:45:36Z</published>
<link rel='alternate' type='text/html' href='https://git.ov4.org/cie-pseudocode-compiler.git/commit/?id=3a6eb921b50e191468d29c233718657f9f85d68e'/>
<id>urn:sha1:3a6eb921b50e191468d29c233718657f9f85d68e</id>
<content type='text'>
EXTERN parameters may now be C-struct records by value. clang's
arrangement decides the passing: coerced through memory, flattened
into elements, or indirect as byval or a pointer to a copy. Returning a
record by value stays rejected for now.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat(codegen): accept pointers to C-struct records in EXTERN signatures</title>
<updated>2026-10-22T13:27:15Z</updated>
<author>
<name>_ov4</name>
<email>ov4@ov4.org</email>
</author>
<published>2026-10-22T13:27:15Z</published>
<link rel='alternate' type='text/html' href='https://git.ov4.org/cie-pseudocode-compiler.git/commit/?id=4a70e44f06e637762eec0fd875eb94b84c3f4037'/>
<id>urn:sha1:4a70e44f06e637762eec0fd875eb94b84c3f4037</id>
<content type='text'>
A TYPE record whose fields are all C types, C structs or pointer types to
C structs now crosses the EXTERN "C" boundary through a pointer type.
Records by value are rejected for now, and a pointer to a record with a
non-C field names that field.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
</feed>
