dimgigov
ec4e748584
fix(qbe): use extraData instead of child3 for hIf else-branch
...
Block lowering overwrites child3 for statement chaining.
Else block is stored in extraData by hir_lower (matches c_backend).
Fixes QBE parse error 'last block misses jump' in if-without-else chains.
2026-06-02 18:07:35 +03:00
dimgigov
eb8179b6d0
fix(qbe): any-child terminator check in QBE_IsTerminator for hBlock — QBE SSA now fully valid
...
- QBE_IsTerminator(hBlock) checks ALL children, not just last
- Removed legacy c_backend.bux and nim_backend.bux from _selfhost/src/
- QBE self-hosting QBE phase: PASSES (SSA valid, assembled to .s)
- Remaining: linker errors from missing String_Eq/StringBuilder in runtime
2026-06-02 13:56:12 +03:00
dimgigov
6cb5528a4d
fix(qbe): no-else uses @lEnd target, removed bodyTerminated, brace fix
2026-06-02 13:53:52 +03:00
dimgigov
7efa79d46f
fix(qbe): QBE_IsTerminator for hIf+hBlock, smart @lEnd, block-break on terminator
2026-06-02 13:48:35 +03:00
dimgigov
3881ba8271
fix(qbe): simplified if handler, unconditional @lElse/@lEnd, implicit ret fix
2026-06-02 13:45:01 +03:00
dimgigov
4c610b8a80
fix(qbe): improved if-else label handling, QBE_IsTerminator for hIf
2026-06-02 13:32:41 +03:00
dimgigov
319dcd9280
fix(qbe): QBE_EnsureLocal for all operands, uppercase hVar→0, char→w
2026-06-02 13:29:38 +03:00
dimgigov
0eadb8ab76
fix(qbe): QBE_EnsureLocal for hFieldPtr base, char types w→w
2026-06-02 13:24:08 +03:00
dimgigov
6fdbc139d0
fix(qbe): QBE_EnsureLocal — add % prefix to bare identifiers in store/call/ret
2026-06-02 13:18:15 +03:00
dimgigov
a61cd198a8
fix(qbe): empty val/target fallbacks for hStore, hAssign, alloca-init
2026-06-02 13:11:40 +03:00
dimgigov
cae53aeaef
fix(qbe): Lcx_ResolveTypeKind — map TypeExpr.kind→Type.kind, fix alloca typeKind, skip empty stores
2026-06-02 13:02:35 +03:00
dimgigov
8d0841b6be
fix(qbe): hCast passthrough, logical ops =w→=l, implicit ret, && rVal string bug
2026-06-02 12:50:51 +03:00
dimgigov
70cfa4f721
feat: backtick raw/multi-line strings + QBE backend fixes
...
- Add backtick raw string literals (Go-style ): no escape processing, multi-line
- C backend: handle backtick strings in emitExpr
- Self-hosted lexer: lexScanBacktickString support
- QBE backend: handle backtick strings in data sections
- QBE: remove broken extern declarations (QBE resolves at link time)
- QBE: fix comparison result types (ceql → w, extend to l)
- QBE: fix SSA parameter name clash (_p_ prefix for params)
- QBE: const inlining via HirLower + QBE emitter
- QBE: proper type mapping for bool/char types
- hir_lower: collect dkConst declarations for const propagation
2026-06-02 11:33:29 +03:00