<feed xmlns='http://www.w3.org/2005/Atom'>
<title>cie-pseudocode-compiler.git/lib/CodeGen/ArithmeticHandler.cc, 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/lib/CodeGen/ArithmeticHandler.cc?h=main</id>
<link rel='self' href='https://git.ov4.org/cie-pseudocode-compiler.git/atom/lib/CodeGen/ArithmeticHandler.cc?h=main'/>
<link rel='alternate' type='text/html' href='https://git.ov4.org/cie-pseudocode-compiler.git/'/>
<updated>2026-10-22T15:21:14Z</updated>
<entry>
<title>fix(codegen): compare BOOLEAN and CHAR values as unsigned</title>
<updated>2026-10-22T15:21:14Z</updated>
<author>
<name>_ov4</name>
<email>ov4@ov4.org</email>
</author>
<published>2026-10-22T15:04:13Z</published>
<link rel='alternate' type='text/html' href='https://git.ov4.org/cie-pseudocode-compiler.git/commit/?id=498a01534a4ffe825f84fd1b6aecbde5f5fde09c'/>
<id>urn:sha1:498a01534a4ffe825f84fd1b6aecbde5f5fde09c</id>
<content type='text'>
Co-Authored-By: Claude Sonnet 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>refactor(codegen): remove dead code in type system and runtime checks</title>
<updated>2026-10-22T03:58:36Z</updated>
<author>
<name>_ov4</name>
<email>ov4@ov4.org</email>
</author>
<published>2026-10-22T03:24:18Z</published>
<link rel='alternate' type='text/html' href='https://git.ov4.org/cie-pseudocode-compiler.git/commit/?id=e575826c287f0dd0afeb1b9c6c8db45fb44c8d26'/>
<id>urn:sha1:e575826c287f0dd0afeb1b9c6c8db45fb44c8d26</id>
<content type='text'>
Drop the unused TypeInfo::isNumeric, pass emitCheck's format arguments
straight to emitStderr, remove unused &lt;cctype&gt;/&lt;cstdio&gt; includes and
turn always-true trailing operator tests in ArithmeticHandler into plain
returns.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat(diagnostics): print source diagnostics in gcc file:line: layout</title>
<updated>2026-10-21T14:03:31Z</updated>
<author>
<name>_ov4</name>
<email>ov4@ov4.org</email>
</author>
<published>2026-10-21T14:03:31Z</published>
<link rel='alternate' type='text/html' href='https://git.ov4.org/cie-pseudocode-compiler.git/commit/?id=b4ffb2d9498560557821714e2d4651279dd6817c'/>
<id>urn:sha1:b4ffb2d9498560557821714e2d4651279dd6817c</id>
<content type='text'>
Lexer, parser, driver and codegen diagnostics now read
"&lt;path&gt;:&lt;line&gt;: error: &lt;message&gt;" instead of "error: &lt;message&gt; at line N
in &lt;path&gt;". The path is always printed as given on the command line.
Call sites pass the bare message to cps::sourceError/sourceWarning, which
carry printf format checking; reportError routes through the same helper.

The suite iii harness parses the new layout and matches the reason
against the message only. iii/template-class-pack-field passed only
because its reason regex matched the case path, so it is now
case-insensitive.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>refactor(diag): file-qualified diagnostic locations</title>
<updated>2026-10-17T09:09:03Z</updated>
<author>
<name>_ov4</name>
<email>ov4@ov4.org</email>
</author>
<published>2026-10-17T09:09:03Z</published>
<link rel='alternate' type='text/html' href='https://git.ov4.org/cie-pseudocode-compiler.git/commit/?id=dc645a36aaade7087ade574cefe69ce7bb29753e'/>
<id>urn:sha1:dc645a36aaade7087ade574cefe69ce7bb29753e</id>
<content type='text'>
Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>fix: distinguish compiler errors and report compilation termination</title>
<updated>2026-10-13T12:32:03Z</updated>
<author>
<name>_ov4</name>
<email>ov4@ov4.org</email>
</author>
<published>2026-10-13T12:32:03Z</published>
<link rel='alternate' type='text/html' href='https://git.ov4.org/cie-pseudocode-compiler.git/commit/?id=17cec530b0a4d792bde2d37583b6c26e89f9b1bd'/>
<id>urn:sha1:17cec530b0a4d792bde2d37583b6c26e89f9b1bd</id>
<content type='text'>
Co-Authored-By: Claude Fable 5.1 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>fix: check division and modulo for zero divisors</title>
<updated>2026-10-13T08:43:17Z</updated>
<author>
<name>_ov4</name>
<email>ov4@ov4.org</email>
</author>
<published>2026-10-13T08:43:17Z</published>
<link rel='alternate' type='text/html' href='https://git.ov4.org/cie-pseudocode-compiler.git/commit/?id=c6dbd14ec8ff94df47d3c2137cc5234203ec5e0c'/>
<id>urn:sha1:c6dbd14ec8ff94df47d3c2137cc5234203ec5e0c</id>
<content type='text'>
Co-Authored-By: Claude Fable 5.1 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>fix: compare strings by content</title>
<updated>2026-10-13T05:25:09Z</updated>
<author>
<name>_ov4</name>
<email>ov4@ov4.org</email>
</author>
<published>2026-10-13T05:25:09Z</published>
<link rel='alternate' type='text/html' href='https://git.ov4.org/cie-pseudocode-compiler.git/commit/?id=38ff4e782ef844a21512eb2ca0e491387ae89ec5'/>
<id>urn:sha1:38ff4e782ef844a21512eb2ca0e491387ae89ec5</id>
<content type='text'>
Co-Authored-By: Claude Fable 5.1 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat: implement CIE 9.1 text file handling (OPENFILE/READFILE/WRITEFILE/CLOSEFILE/EOF)</title>
<updated>2026-07-26T15:45:40Z</updated>
<author>
<name>_ov4</name>
<email>ov4@ov4.org</email>
</author>
<published>2026-07-26T15:45:40Z</published>
<link rel='alternate' type='text/html' href='https://git.ov4.org/cie-pseudocode-compiler.git/commit/?id=344206d57e834b2394cbe2ec0df50b04a8b3c171'/>
<id>urn:sha1:344206d57e834b2394cbe2ec0df50b04a8b3c171</id>
<content type='text'>
Front end: OPENFILE/READFILE/WRITEFILE/CLOSEFILE plus reserved mode
keywords READ/WRITE/APPEND (RANDOM reserved with a dedicated
not-implemented error); statement nodes in new FileAST.h, parsing in new
ParserFile.cc; EOF joins the Builtins table as the 12th builtin and
CallExprAST now carries a line number for its runtime diagnostics.

Runtime: new FileHandler (StringHandler-shaped leaf) lazily synthesizes
internal __cps_file_* helper functions and a 16-slot open-file table
keyed by filename content (strcmp — STRING '=' is pointer identity).
EOF is an fgetc/ungetc peek; READFILE grows a malloc/realloc line buffer
and strips a trailing CR; fopen uses text modes so mingw-w64 line
translation works. File-free programs get byte-identical IR. All misuse
(not open, wrong mode, reopen, fopen failure, read past EOF, table full)
dies with the existing "[Fatal] line N:" pattern via a new
RuntimeCheck::emitErrorAndExit overload taking runtime printf args.

Also fixes a pre-existing ArithmeticHandler hole surfaced by adversarial
review: mixed-width integer operands (i1 BOOLEAN / i8 CHAR vs i64) now
widen via ZExt instead of emitting invalid IR, and remaining type
mismatches get a clean diagnostic; -EOF(f) and -IS_NUM(x) compile.

Co-Authored-By: Claude Fable 5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>refactor: centralize libc declarations, move '&amp;' concat into StringHandler</title>
<updated>2026-07-26T12:12:59Z</updated>
<author>
<name>_ov4</name>
<email>ov4@ov4.org</email>
</author>
<published>2026-07-26T12:12:59Z</published>
<link rel='alternate' type='text/html' href='https://git.ov4.org/cie-pseudocode-compiler.git/commit/?id=b9b7f048b0874df0f034f6b1e15e1a4ee2131475'/>
<id>urn:sha1:b9b7f048b0874df0f034f6b1e15e1a4ee2131475</id>
<content type='text'>
CodeGen declares its own MallocFunc in SetupExternalFunctions and uses
it for char-&gt;STRING coercion and INPUT STRING buffers, removing two bare
getFunction("malloc") calls that null-deref'd if no handler happened to
declare malloc first. The CHR branch reuses the char-&gt;STRING coercion
path instead of a second hand-rolled heap wrapper.

String concatenation moves from ArithmeticHandler (which re-declared
four externs per '&amp;' and was the LLVM 19 build-pin root cause) to
StringHandler::emitConcat; ArithmeticHandler no longer touches the
Module. Dead FreeFunc declarations removed.

Co-Authored-By: Claude Fable 5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>refactor: batch 1 - correctness and error contract</title>
<updated>2026-07-26T12:02:32Z</updated>
<author>
<name>_ov4</name>
<email>ov4@ov4.org</email>
</author>
<published>2026-07-26T12:02:32Z</published>
<link rel='alternate' type='text/html' href='https://git.ov4.org/cie-pseudocode-compiler.git/commit/?id=4df7c22b99349dcf2175d69679eafa175d49aa9f'/>
<id>urn:sha1:4df7c22b99349dcf2175d69679eafa175d49aa9f</id>
<content type='text'>
- MID/RIGHT/LEFT integer args now coerced at call sites (RIGHT(s, n/2)
  no longer emits invalid IR); drop emitLeft's private conversion
- FOR loop direction decided at run time via select on STEP sign;
  descending FOR works, STEP evaluated once per iteration
- ArrayHandler: extract emitCheckedIndices/loadElement; index count is
  validated before emission, fixing a compiler-crash (vector OOB UB) on
  OUTPUT with too many indices
- Error contract: Lexer/Parser/CodeGen track errors; all silent failure
  paths now print Error: diagnostics with line numbers; unterminated
  char literal no longer truncates the rest of the program; module is
  verified with verifyModule; driver exits non-zero on any error

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